1 To: git@vger.kernel.org
3 Subject: What's cooking in git.git (Apr 2015, #01; Thu, 2)
4 X-master-at: 6ae0d972664134b82a6dd164a01e8adbebeaffe3
5 X-next-at: 85735d76ca4ac11dd4059dfd973b4df8b42f8776
7 What's cooking in git.git (Apr 2015, #01; Thu, 2)
8 --------------------------------------------------
10 Here are the topics that have been cooking. Commits prefixed with
11 '-' are only in 'pu' (proposed updates) while commits prefixed with
14 The first release candidate 2.4-rc1 has been tagged. I'll still
15 take small and trivial fixes and documentation updates but let's
16 really shift our focus to find and fix (or revert) regressions
17 that may have happened during this cycle.
19 You can find the changes described here in the integration branches
20 of the repositories listed at
22 http://git-blame.blogspot.com/p/git-public-repositories.html
24 --------------------------------------------------
27 * va/fix-git-p4-tests (2015-03-28) 2 commits
28 - git-p4: fix copy detection test
29 - t9814: fix broken shell syntax in git-p4 rename test
36 * va/p4-client-path (2015-03-28) 2 commits
37 - git-p4: improve client path detection when branches are used
38 - t9801: check git-p4's branch detection and client view together
40 Attempt to better handle branches in perforce by git p4
41 Reviews by git-p4 experts are very much appreciated.
44 * iu/fix-parse-options-h-comment (2015-03-29) 1 commit
45 (merged to 'next' on 2015-04-02 at 7fd3cef)
46 + parse-options.h: OPTION_{BIT,SET_INT} do not store pointer to defval
48 Will merge to 'master'.
51 * jk/at-push-sha1 (2015-03-31) 6 commits
52 - sha1_name: implement @{push} shorthand
53 - sha1_name: refactor upstream_mark
54 - remote.c: provide per-branch pushremote name
55 - remote.c: hoist branch.*.remote lookup out of remote_get_1
56 - remote.c: drop "remote" pointer from "struct branch"
57 - remote.c: drop default_remote_name variable
60 * jk/cherry-pick-docfix (2015-03-30) 1 commit
61 (merged to 'next' on 2015-04-02 at 40da1d7)
62 + cherry-pick: fix docs describing handling of empty commits
64 Will merge to 'master'.
67 * jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
68 - sha1_file: squelch "packfile cannot be accessed" warnings
71 * jz/gitweb-conf-doc-fix (2015-03-31) 1 commit
72 (merged to 'next' on 2015-04-02 at 237d1bc)
73 + gitweb.conf.txt: say "build-time", not "built-time"
75 Will merge to 'master'.
78 * mh/show-branch-topic (2015-03-31) 1 commit
79 - show-branch: show all local heads when only giving one rev along --topics
81 "git show-branch --topics HEAD" (with no other arguments) did not
82 do anything interesting. Instead, contrast the given revision
83 against all the local branches by default.
88 * pt/enter-repo-comment-fix (2015-03-31) 1 commit
89 (merged to 'next' on 2015-04-02 at 276ad7e)
90 + enter_repo(): fix docs to match code
92 Will merge to 'master'.
95 * sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
96 - line-log.c: fix a memleak
101 * sb/plug-wt-shortstatus-tracking-leak (2015-03-30) 1 commit
102 - wt-status.c: fix a memleak
104 Will merge to 'next'.
107 * jc/push-cert (2015-04-02) 1 commit
108 - push --signed: tighten what the receiving end can ask to sign
110 The "git push --signed" protocol extension did not limit what the
111 "nonce" that is a server-chosen string can contain or how long it
112 can be, which was unnecessarily lax. Limit both the length and the
113 alphabet to a reasonably small space that can still have enough
116 Will merge to 'next'.
119 * jc/update-instead-into-void (2015-04-01) 1 commit
120 - push-to-deploy: allow pushing into an unborn branch and updating it
122 A push into an unborn branch, with "receive.denyCurrentBranch" set
123 to "updateInstead", did not check out the working tree as expected.
125 Will merge to 'next'.
128 * jk/init-core-worktree-at-root (2015-04-02) 1 commit
129 - init: don't set core.worktree when initializing /.git
131 We avoid setting core.worktree when the repository location is the
132 ".git" directory directly at the top level of the working tree, but
133 the code misdetected the case in which the working tree is at the
134 root level of the filesystem (which arguably is a silly thing to
135 do, but still valid).
137 Will merge to 'next'.
140 * jk/pack-corruption-post-mortem (2015-04-01) 1 commit
141 - howto: document more tools for recovery corruption
143 Documentation update.
145 Will merge to 'next'.
148 * jn/doc-fast-import-no-16-octopus-limit (2015-03-31) 1 commit
149 - fast-import doc: remove suggested 16-parent limit
151 Documentation update.
153 Will merge to 'next'.
156 * sb/plug-streaming-leak (2015-03-31) 1 commit
157 - streaming.c: fix a memleak
159 Will merge to 'next'.
162 * ts/checkout-advice-plural (2015-04-01) 1 commit
163 - checkout: call a single commit “it” instead of “th
165 Will merge to 'next'.
167 --------------------------------------------------
168 [Graduated to "master"]
170 * ph/push-doc-cas (2015-03-26) 1 commit
171 (merged to 'next' on 2015-03-27 at 0737697)
172 + git-push.txt: clean up force-with-lease wording
174 Documentation update.
177 * sb/leaks (2015-03-24) 10 commits
178 (merged to 'next' on 2015-03-24 at bdbc0c7)
179 + http: release the memory of a http pack request as well
180 (merged to 'next' on 2015-03-23 at 5397daf)
181 + read-cache: fix memleak
182 + add_to_index(): free unused cache-entry
183 + commit.c: fix a memory leak
184 + http-push: remove unneeded cleanup
185 + merge-recursive: fix memleaks
186 + merge-blobs.c: fix a memleak
187 + builtin/apply.c: fix a memleak
188 + update-index: fix a memleak
189 + read-cache: free cache entry in add_to_index in case of early return
191 Plug minor memory leaks everywhere.
194 * ss/pull-rebase-preserve (2015-03-30) 2 commits
195 + docs: clarify what git-rebase's "-p" / "--preserve-merges" does
196 + docs: clarify "preserve" option wording for git-pull
198 Documentation update.
200 --------------------------------------------------
203 * as/userdiff-sh (2015-03-13) 1 commit
204 - userdiff: funcname and word patterns for sh
206 Add a built-in "userdiff" patterns to word-split and identify
207 notable lines in shell scripts to help presentation of diff and
213 * mh/fdopen-with-retry (2015-03-06) 6 commits
214 - buffer_fdinit(): use fdopen_with_retry()
215 - update_info_file(): use fdopen_with_retry()
216 - copy_to_log(): use fdopen_with_retry()
217 - fdopen_lock_file(): use fdopen_with_retry()
218 - SQUASH??? $gmane/264889
219 - xfdopen(): if first attempt fails, free memory and try again
221 Various parts of the code where they call fdopen() can fail when
222 they run out of memory; attempt to proceed by retrying the
223 operation after freeing some resource.
225 Waiting for further comments.
228 * nd/untracked-cache (2015-03-12) 24 commits
229 - git-status.txt: advertisement for untracked cache
230 - untracked cache: guard and disable on system changes
231 - mingw32: add uname()
232 - t7063: tests for untracked cache
233 - update-index: test the system before enabling untracked cache
234 - update-index: manually enable or disable untracked cache
235 - status: enable untracked cache
236 - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
237 - untracked cache: mark index dirty if untracked cache is updated
238 - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
239 - untracked cache: avoid racy timestamps
240 - read-cache.c: split racy stat test to a separate function
241 - untracked cache: invalidate at index addition or removal
242 - untracked cache: load from UNTR index extension
243 - untracked cache: save to an index extension
244 - ewah: add convenient wrapper ewah_serialize_strbuf()
245 - untracked cache: don't open non-existent .gitignore
246 - untracked cache: mark what dirs should be recursed/saved
247 - untracked cache: record/validate dir mtime and reuse cached output
248 - untracked cache: make a wrapper around {open,read,close}dir()
249 - untracked cache: invalidate dirs recursively if .gitignore changes
250 - untracked cache: initial untracked cache validation
251 - untracked cache: record .gitignore information and dir hierarchy
252 - dir.c: optionally compute sha-1 of a .gitignore file
254 Need extra sets of eyes to review this.
257 * jc/diff-b-m (2015-02-23) 5 commits
260 - diffcore-rename: allow easier debugging
261 - diffcore-rename.c: add locate_rename_src()
262 - diffcore-break: allow debugging
264 "git diff -B -M" produced incorrect patch when the postimage of a
265 completely rewritten file is similar to the preimage of a removed
266 file; such a resulting file must not be expressed as a rename from
269 The fix in this patch is broken, unfortunately.
272 * pw/remote-set-url-fetch (2014-11-26) 1 commit
273 - remote: add --fetch and --both options to set-url
278 * tr/remerge-diff (2014-11-10) 9 commits
279 - t4213: avoid "|" in sed regexp
280 - log --remerge-diff: show what the conflict resolution changed
281 - name-hash: allow dir hashing even when !ignore_case
282 - merge-recursive: allow storing conflict hunks in index
283 - merge_diff_mode: fold all merge diff variants into an enum
284 - combine-diff: do not pass revs->dense_combined_merges redundantly
285 - merge-recursive: -Xindex-only to leave worktree unchanged
286 - merge-recursive: internal flag to avoid touching the worktree
287 - merge-recursive: remove dead conditional in update_stages()
289 "log -p" output learns a new way to let users inspect a merge
290 commit by showing the differences between the automerged result
291 with conflicts the person who recorded the merge would have seen
292 and the final conflict resolution that was recorded in the merge.
294 Waiting for a reroll ($gmane/256591).
297 * hv/submodule-config (2014-11-11) 4 commits
298 - do not die on error of parsing fetchrecursesubmodules option
299 - use new config API for worktree configurations of submodules
300 - extract functions for submodule config set and lookup
301 - implement submodule config cache for lookup of submodule names
303 Kicked back to 'pu' per request ($gmane/255610).
306 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
307 - perf-lib: add test_perf_cleanup target
308 - perf-lib: split starting the test from the execution
310 Add test_perf_cleanup shell function to the perf suite, that allows
311 the script writers to define a test with a clean-up action.
316 * jc/show-branch (2014-03-24) 5 commits
317 - show-branch: use commit slab to represent bitflags of arbitrary width
318 - show-branch.c: remove "all_mask"
319 - show-branch.c: abstract out "flags" operation
320 - show-branch.c: lift all_mask/all_revs to a global static
321 - show-branch.c: update comment style
323 Waiting for the final step to lift the hard-limit before sending it out.
325 --------------------------------------------------
328 * pt/credential-xdg (2015-03-25) 4 commits
329 (merged to 'next' on 2015-03-25 at 765128e)
330 + t0302: "unreadable" test needs POSIXPERM
331 (merged to 'next' on 2015-03-24 at 9a3706e)
332 + t0302: test credential-store support for XDG_CONFIG_HOME
333 + git-credential-store: support XDG_CONFIG_HOME
334 + git-credential-store: support multiple credential files
336 Tweak the sample "store" backend of the credential helper to honor
337 XDG configuration file locations when specified.
339 As this may see further updates, and also this is not an urgent
340 issue anyway, I'll give it a bit more time for it to simmer.
345 * jc/merge-deprecate-old-syntax (2015-03-26) 1 commit
346 - merge: deprecate 'git merge <message> HEAD <commit>' syntax
347 (this branch is used by jc/merge-drop-old-syntax.)
349 The first step to really start the process of removing the ancient
350 syntax to invoke a two-way merge, which has been deprecated since
354 * jc/merge-drop-old-syntax (2015-03-26) 1 commit
355 - merge: drop 'git merge <message> HEAD <commit>' syntax
356 (this branch uses jc/merge-deprecate-old-syntax.)
358 Stop supporting "git merge <messsage> HEAD <commit>" syntax that
359 has been deprecated since October 2007.
362 * jc/diff-no-index-d-f (2015-03-26) 2 commits
363 (merged to 'next' on 2015-03-27 at 1f270f9)
364 + diff-no-index: align D/F handling with that of normal Git
365 + diff-no-index: DWIM "diff D F" into "diff D/F F"
367 The usual "git diff" when seeing a file turning into a directory
368 showed a patchset to remove the file and create all files in the
369 directory, but "git diff --no-index" simply refused to work. Also,
370 when asked to compare a file and a directory, imitate POSIX "diff"
371 and compare the file with the file with the same name in the
372 directory, instead of refusing to run.
377 * nd/diff-i-t-a (2015-03-23) 1 commit
378 (merged to 'next' on 2015-03-24 at a6be89f)
379 + diff-lib.c: adjust position of i-t-a entries in diff
381 After "git add -N", the path appeared in output of "git diff HEAD"
382 and "git diff --cached HEAD", leading "git status" to classify it
383 as "Changes to be committed". Such a path, however, is not yet to
384 be scheduled to be committed. "git diff" showed the change to the
385 path as modification, not as a "new file", in the header of its
388 Treat such paths as "yet to be added to the index but Git already
389 know about them"; "git diff HEAD" and "git diff --cached HEAD"
390 should not talk about them, and "git diff" should show them as new
391 files yet to be added to the index.
393 Will cook in 'next', as this brings in a new world order.
396 * mh/numparse (2015-03-19) 14 commits
397 - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
398 - diff_opt_parse(): use convert_i() when handling "-l<num>"
399 - opt_arg(): simplify pointer handling
400 - opt_arg(): report errors parsing option values
401 - opt_arg(): use convert_i() in implementation
402 - opt_arg(): val is always non-NULL
403 - builtin_diff(): detect errors when parsing --unified argument
404 - handle_revision_opt(): use convert_ui() when handling "--abbrev="
405 - strtoul_ui(), strtol_i(): remove functions
406 - handle_revision_opt(): use convert_i() when handling "-<digit>"
407 - handle_revision_opt(): use skip_prefix() in many places
408 - write_subdirectory(): use convert_ui() for parsing mode
409 - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
410 - numparse: new module for parsing integral numbers
412 Many codepaths use unchecked use of strtol() and friends (or even
413 worse, atoi()). Introduce a set of wrappers that try to be more
416 Waiting for a reroll ($gmane/266209).
419 * tf/gitweb-project-listing (2015-03-19) 5 commits
420 - gitweb: make category headings into links when they are directories
421 - gitweb: optionally set project category from its pathname
422 - gitweb: add a link under the search box to clear a project filter
423 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
424 - gitweb: fix typo in man page
426 Update gitweb to make it more pleasant to deal with a hierarchical
427 forest of repositories.
429 Any comments from those who use or have their own code in Gitweb?
432 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
433 - "-" and "@{-1}" on various programs
435 Lose special case code to make a lone dash "-" mean the previous
436 branch aka "@{-1}" from a handful subcommands, and instead support
437 the notation throughout the system by reimplementing it at the
440 Needs tests, documentation updates, etc. Also does only a half-way
441 job dealing with range notation, which needs to be fixed before the
442 series goes anywhere.
445 * bc/object-id (2015-03-13) 10 commits
446 (merged to 'next' on 2015-03-24 at 3ec4f83)
447 + apply: convert threeway_stage to object_id
448 + patch-id: convert to use struct object_id
449 + commit: convert parts to struct object_id
450 + diff: convert struct combine_diff_path to object_id
451 + bulk-checkin.c: convert to use struct object_id
452 + zip: use GIT_SHA1_HEXSZ for trailers
453 + archive.c: convert to use struct object_id
454 + bisect.c: convert leaf functions to use struct object_id
455 + define utility functions for object IDs
456 + define a structure for object IDs
458 Identify parts of the code that knows that we use SHA-1 hash to
459 name our objects too much, and use (1) symbolic constants instead
460 of hardcoded 20 as byte count and/or (2) use struct object_id
461 instead of unsigned char [20] for object names.
464 Also waiting for reviews on the follow-up series ($gmane/265939)
465 that seems to have seen no interest X-<.
468 * nd/slim-index-pack-memory-usage (2015-02-27) 2 commits
469 - index-pack: kill union delta_base to save memory
470 - index-pack: reduce object_entry size to save memory
472 Memory usage of "git index-pack" has been trimmed by tens of
475 Waiting for further comments and a final reroll ($gmane/264544).
478 * nd/list-files (2015-02-09) 21 commits
479 - t3080: tests for git-list-files
480 - list-files: -M aka diff-cached
481 - list-files -F: show submodules with the new indicator '&'
482 - list-files: add -F/--classify
483 - list-files: show directories as well as files
484 - list-files: do not show duplicate cached entries
485 - list-files: sort output and remove duplicates
486 - list-files: add -t back
487 - list-files: add -1 short for --no-column
488 - list-files: add -R/--recursive short for --max-depth=-1
489 - list-files: -u does not imply showing stages
490 - list-files: make alias 'ls' default to 'list-files'
491 - list-files: a user friendly version of ls-files and more
492 - ls-files: support --max-depth
493 - ls-files: add --column
494 - ls-files: add --color to highlight file names
495 - ls-files: buffer full item in strbuf before printing
496 - ls_colors.c: highlight submodules like directories
497 - ls_colors.c: add a function to color a file name
498 - ls_colors.c: parse color.ls.* from config file
499 - ls_colors.c: add $LS_COLORS parsing code
501 A new "git list-files" Porcelain command, "ls-files" with bells and
504 Reroll to base on wt-status work ($gmane/265142) has seen some
505 positive discussions.
507 Waiting for a further polished reroll ($gmane/265534).
510 * js/fsck-opt (2015-01-21) 19 commits
511 - fsck: support ignoring objects in `git fsck` via fsck.skiplist
512 - fsck: git receive-pack: support excluding objects from fsck'ing
513 - fsck: introduce `git fsck --quick`
514 - fsck: support demoting errors to warnings
515 - fsck: document the new receive.fsck.* options
516 - fsck: allow upgrading fsck warnings to errors
517 - fsck: optionally ignore specific fsck issues completely
518 - fsck: disallow demoting grave fsck errors to warnings
519 - fsck: add a simple test for receive.fsck.*
520 - fsck: make fsck_tag() warn-friendly
521 - fsck: handle multiple authors in commits specially
522 - fsck: make fsck_commit() warn-friendly
523 - fsck: make fsck_ident() warn-friendly
524 - fsck: report the ID of the error/warning
525 - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
526 - fsck: offer a function to demote fsck errors to warnings
527 - fsck: provide a function to parse fsck message IDs
528 - fsck: introduce identifiers for fsck messages
529 - fsck: introduce fsck options
531 "fsck.warnings = <list of error tokens>" I suggested turned out to
532 be an unpopular choice (sorry Dscho).
537 * nd/multiple-work-trees (2015-03-31) 41 commits
538 (merged to 'next' on 2015-04-02 at 7ea51b4)
539 + prune --worktrees: fix expire vs worktree existence condition
540 (merged to 'next' on 2015-03-24 at 58b5a60)
541 + t1501: fix test with split index
542 (merged to 'next' on 2015-03-20 at cc98ed0)
543 + t2026: fix broken &&-chain
544 (merged to 'next' on 2015-02-18 at b51f696)
545 + t2026 needs procondition SANITY
546 + git-checkout.txt: a note about multiple checkout support for submodules
547 + checkout: add --ignore-other-wortrees
548 + checkout: pass whole struct to parse_branchname_arg instead of individual flags
549 + git-common-dir: make "modules/" per-working-directory directory
550 + checkout: do not fail if target is an empty directory
551 + t2025: add a test to make sure grafts is working from a linked checkout
552 + checkout: don't require a work tree when checking out into a new one
553 + git_path(): keep "info/sparse-checkout" per work-tree
554 + count-objects: report unused files in $GIT_DIR/worktrees/...
555 + gc: support prune --worktrees
556 + gc: factor out gc.pruneexpire parsing code
557 + gc: style change -- no SP before closing parenthesis
558 + checkout: clean up half-prepared directories in --to mode
559 + checkout: reject if the branch is already checked out elsewhere
560 + prune: strategies for linked checkouts
561 + checkout: support checking out into a new working directory
562 + use new wrapper write_file() for simple file writing
563 + wrapper.c: wrapper to open a file, fprintf then close
564 + setup.c: support multi-checkout repo setup
565 + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
566 + setup.c: convert check_repository_format_gently to use strbuf
567 + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
568 + setup.c: convert is_git_directory() to use strbuf
569 + git-stash: avoid hardcoding $GIT_DIR/logs/....
570 + *.sh: avoid hardcoding $GIT_DIR/hooks/...
571 + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
572 + $GIT_COMMON_DIR: a new environment variable
573 + commit: use SEQ_DIR instead of hardcoding "sequencer"
574 + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
575 + reflog: avoid constructing .lock path with git_path
576 + *.sh: respect $GIT_INDEX_FILE
577 + git_path(): be aware of file relocation in $GIT_DIR
578 + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
579 + path.c: rename vsnpath() to do_git_path()
580 + git_snpath(): retire and replace with strbuf_git_path()
581 + path.c: make get_pathname() call sites return const char *
582 + path.c: make get_pathname() return strbuf instead of static buffer
584 A replacement for contrib/workdir/git-new-workdir that does not
585 rely on symbolic links and make sharing of objects and refs safer
586 by making the borrowee and borrowers aware of each other.
590 --------------------------------------------------
593 * ak/stash-store-create-help (2015-01-13) 1 commit
594 . stash: show "create" and "store" subcommands in usage-help
597 * bp/diff-relative-config (2015-01-07) 2 commits
598 . diff: teach diff.relative to give default to --relative=<value>
599 . diff: teach --no-relative to override earlier --relative
602 * je/quiltimport-no-fuzz (2014-10-21) 2 commits
603 . git-quiltimport: flip the default not to allow fuzz
604 . git-quiltimport.sh: allow declining fuzz with --exact option
606 "quiltimport" drove "git apply" always with -C1 option to reduce
607 context of the patch in order to give more chance to somewhat stale
608 patches to apply. Add an "--exact" option to disable, and also
609 "-C$n" option to customize this behaviour. The top patch
610 optionally flips the default to "--exact".
613 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
614 . SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
615 . git-add--interactive: Preserve diff heading when splitting hunks
618 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
619 . userdiff: support Java try keyword
620 . userdiff: support C# async methods and correct C# keywords
623 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
624 . git-rebase: print name of rev when using shorthand
626 Teach "git rebase -" to report the concrete name of the branch
627 (i.e. the previous one).
629 But it stops short and does not do the same for "git rebase @{-1}".
632 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
633 . merge: drop unused arg from abort_commit method signature
634 . merge: make prepare_to_commit responsible for write_merge_state
635 . t7505: ensure cleanup after hook blocks merge
636 . t7505: add missing &&
638 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
639 run during "git merge". The log message stresses too much on one
640 hook, prepare-commit-msg, but it would equally apply to other hooks
641 like post-merge, I think.
644 * jc/graph-post-root-gap (2013-12-30) 3 commits
645 . WIP: document what we want at the end
646 . graph: remove unused code a bit
647 . graph: stuff the current commit into graph->columns[]
649 This was primarily a RFH ($gmane/239580).
652 * ts/man-pdf (2015-03-20) 1 commit
653 . Documentation: make 'make pdf' format manpages to PDF as well
655 For offline consumption of manual pages, a target to produce one
656 pdf document per manual page was added to Documentation/Makefile.
658 Its usefulness is unknown, given that this does not produce a
659 single document with all the manual pages in it, which would be not
660 much better than keeping a bunch of HTML manual pages we already
661 produce and use them instead for offline consumption.
663 Discarded, while leaving a single-document target as an open
667 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
668 . gitweb: Harden UTF-8 handling in generated links