Meta/Reintegrate: need to override GIT_EDITOR
[alt-git.git] / whats-cooking.txt
blob1f73e12a599ca7620f59b9384ef5ea58ecfa95dd
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Mar 2015, #02; Thu, 5)
4 X-master-at: 83036f8541ad8999974863db9d2ac02a814e6395
5 X-next-at: e3086922e7b3f8f159b5b6631ba0052d0b37bcfc
7 What's cooking in git.git (Mar 2015, #02; Thu, 5)
8 --------------------------------------------------
10 Here are the topics that have been cooking.  Commits prefixed with
11 '-' are only in 'pu' (proposed updates) while commits prefixed with
12 '+' are in 'next'.
14 A few more batches of topics have been merged to 'master', including
15 both fixes and enhancements. First maintenance release for v2.3 was
16 cut with many fixes that have already been merged to 'master', and
17 the v2.3.2 will also appear shortly.
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 --------------------------------------------------
25 [Graduated to "master"]
27 * ew/svn-fixes (2015-02-26) 2 commits
28   (merged to 'next' on 2015-03-03 at 18e4684)
29  + Merge branch 'svn-maint-fixes' into svn-fixes
30  + git-svn: lazy load some modules
31  (this branch uses ew/svn-maint-fixes.)
34 * ew/svn-maint-fixes (2015-02-26) 2 commits
35   (merged to 'next' on 2015-03-03 at 776b563)
36  + Git::SVN::*: avoid premature FileHandle closure
37  + git-svn: fix localtime=true on non-glibc environments
38  (this branch is used by ew/svn-fixes.)
40  Correct a breakage to git-svn around v2.2 era that triggers
41  premature closing of FileHandle.
44 * jc/apply-beyond-symlink (2015-02-10) 4 commits
45   (merged to 'next' on 2015-02-18 at 4109de1)
46  + apply: do not touch a file beyond a symbolic link
47  + apply: do not read from beyond a symbolic link
48  + apply: do not read from the filesystem under --index
49  + apply: reject input that touches outside the working area
51  "git apply" was not very careful about reading from, removing,
52  updating and creating paths outside the working tree (under
53  --index/--cached) or the current directory (when used as a
54  replacement for GNU patch).
57 * jc/apply-ws-fix-expands-report (2015-01-22) 1 commit
58   (merged to 'next' on 2015-02-18 at b571668)
59  + apply: detect and mark whitespace errors in context lines when fixing
61  "git apply --whitespace=fix" fixed whitespace errors in the common
62  context lines but did so without reporting.
65 * jc/diff-test-updates (2015-02-23) 7 commits
66   (merged to 'next' on 2015-02-23 at 9e863a7)
67  + test_ln_s_add: refresh stat info of fake symbolic links
68   (merged to 'next' on 2015-02-18 at f152c9f)
69  + t4008: modernise style
70  + t/diff-lib: check exact object names in compare_diff_raw
71  + tests: do not borrow from COPYING and README from the real source
72  + t4010: correct expected object names
73  + t9300: correct expected object names
74  + t4008: correct stale comments
75  (this branch is used by jc/diff-b-m.)
77  Test clean-up.
80 * jk/daemon-interpolate (2015-02-17) 3 commits
81   (merged to 'next' on 2015-02-20 at 21118a7)
82  + daemon: sanitize incoming virtual hostname
83  + t5570: test git-daemon's --interpolated-path option
84  + git_connect: let user override virtual-host we send to daemon
86  The "interpolated-path" option of "git daemon" inserted any string
87  client declared on the "host=" capability request without checking.
88  Sanitize and limit %H and %CH to a saner and a valid DNS name.
91 * km/send-email-getopt-long-workarounds (2015-02-16) 1 commit
92   (merged to 'next' on 2015-02-18 at 84c1597)
93  + git-send-email.perl: support no- prefix with older GetOptions
95  Even though we officially haven't dropped Perl 5.8 support, the
96  Getopt::Long package that came with it does not support "--no-"
97  prefix to negate a boolean option; manually add support to help
98  people with older Getopt::Long package.
101 * mh/refs-have-new (2015-02-17) 13 commits
102   (merged to 'next' on 2015-02-23 at b8929db)
103  + refs.h: remove duplication in function docstrings
104  + update_ref(): improve documentation
105  + ref_transaction_verify(): new function to check a reference's value
106  + ref_transaction_delete(): check that old_sha1 is not null_sha1
107  + ref_transaction_create(): check that new_sha1 is valid
108  + commit: avoid race when creating orphan commits
109  + commit: add tests of commit races
110  + ref_transaction_delete(): remove "have_old" parameter
111  + ref_transaction_update(): remove "have_old" parameter
112  + struct ref_update: move "have_old" into "flags"
113  + refs.c: change some "flags" to "unsigned int"
114  + refs: remove the gap in the REF_* constant values
115  + refs: move REF_DELETING to refs.c
117  Simplify the ref transaction API around how "the ref should be
118  pointing at this object" is specified.
121 * mm/am-c-doc (2015-02-20) 2 commits
122   (merged to 'next' on 2015-02-23 at 1cd9b0f)
123  + Documentation/git-am.txt: mention mailinfo.scissors config variable
124  + Documentation/config.txt: document mailinfo.scissors
126  The configuration variable 'mailinfo.scissors' was hard to
127  discover in the documentation.
130 * rj/no-xopen-source-for-cygwin (2015-02-22) 1 commit
131   (merged to 'next' on 2015-02-23 at 323ac75)
132  + git-compat-util.h: remove redundant code
134  Code cleanups.
137 * rs/daemon-interpolate (2015-02-17) 2 commits
138   (merged to 'next' on 2015-02-18 at c0f5750)
139  + daemon: use callback to build interpolated path
140  + daemon: look up client-supplied hostname lazily
142  "git daemon" looked up the hostname even when "%CH" and "%IP"
143  interpolations are not requested, which was unnecessary.
146 * rs/simple-cleanups (2015-02-22) 4 commits
147   (merged to 'next' on 2015-02-23 at a89f034)
148  + sha1_name: use strlcpy() to copy strings
149  + pretty: use starts_with() to check for a prefix
150  + for-each-ref: use skip_prefix() to avoid duplicate string comparison
151  + connect: use strcmp() for string comparison
153  Code cleanups.
156 * tb/connect-ipv6-parse-fix (2015-02-22) 3 commits
157   (merged to 'next' on 2015-02-24 at 6658564)
158  + t5500: show user name and host in diag-url
159  + t5601: add more test cases for IPV6
160  + connect.c: allow ssh://user@[2001:db8::1]/repo.git
162  We did not parse username followed by literal IPv6 address in SSH
163  transport URLs, e.g. ssh://user@[2001:db8::1]:22/repo.git
164  correctly.
166 --------------------------------------------------
167 [New Topics]
169 * ak/t5516-typofix (2015-03-03) 1 commit
170   (merged to 'next' on 2015-03-03 at c37a677)
171  + t5516: correct misspelled pushInsteadOf
173  Will merge to 'master'.
176 * bw/kwset-use-unsigned (2015-03-02) 1 commit
177   (merged to 'next' on 2015-03-05 at fd124ba)
178  + kwset: use unsigned char to store values with high-bit set
180  The borrowed code in kwset API did not follow our usual convention
181  to use "unsigned char" to store values that range from 0-255.
183  Will merge to 'master'.
186 * mg/doc-remote-tags-or-not (2015-03-02) 1 commit
187   (merged to 'next' on 2015-03-03 at 1630171)
188  + git-remote.txt: describe behavior without --tags and --no-tags
190  "git remote add" mentioned "--tags" and "--no-tags" and was not
191  clear that fetch from the remote in the future will use the default
192  behaviour when neither is given to override it.
194  Will merge to 'master'.
197 * mg/status-v-v (2015-03-03) 2 commits
198  - commit/status: show the index-worktree diff with -v -v
199  - t7508: test git status -v
201  "git status" now allows the "-v" to be given twice to show the
202  differences that are left in the working tree not to be committed.
204  $gmane/264750
206 --------------------------------------------------
207 [Stalled]
209 * mg/sequencer-commit-messages-always-verbatim (2015-02-23) 1 commit
210  - sequencer: preserve commit messages
212  Always replay the original commit message verbatim, regardless of
213  the commit.cleanup configuration settings by the user.
215  $gmane/264504
218 * mg/detached-head-report (2015-02-23) 1 commit
219  - branch: name detached HEAD analogous to status
221  "git branch" on a detached HEAD always said "(detached from xyz)",
222  even when "git status" would report "detached at xyz".  The HEAD is
223  actually at xyz and haven't been moved since it was detached in
224  such a case, but the user cannot read what the current value of
225  HEAD is when "detached from" is used.
227  The goal is sound.  May want to share code between branch and
228  status in a reroll?  Are there other commands that give the same
229  information that share the code, too?
231  ($gmane/264251)
234 * jk/push-config (2015-02-17) 4 commits
235  - [NEEDSACK] push: allow --follow-tags to be set by config push.followTags
236  - cmd_push: pass "flags" pointer to config callback
237  - cmd_push: set "atomic" bit directly
238  - git_push_config: drop cargo-culted wt_status pointer
240  Waiting for Ack and/or update for the tip one from Dave Olszewski
241  ($gmane/263880, $gmane/263991).
244 * nd/untracked-cache (2015-02-09) 24 commits
245  - git-status.txt: advertisement for untracked cache
246  - untracked cache: guard and disable on system changes
247  - mingw32: add uname()
248  - t7063: tests for untracked cache
249  - update-index: test the system before enabling untracked cache
250  - update-index: manually enable or disable untracked cache
251  - status: enable untracked cache
252  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
253  - untracked cache: mark index dirty if untracked cache is updated
254  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
255  - untracked cache: avoid racy timestamps
256  - read-cache.c: split racy stat test to a separate function
257  - untracked cache: invalidate at index addition or removal
258  - untracked cache: load from UNTR index extension
259  - untracked cache: save to an index extension
260  - ewah: add convenient wrapper ewah_serialize_strbuf()
261  - untracked cache: don't open non-existent .gitignore
262  - untracked cache: mark what dirs should be recursed/saved
263  - untracked cache: record/validate dir mtime and reuse cached output
264  - untracked cache: make a wrapper around {open,read,close}dir()
265  - untracked cache: invalidate dirs recursively if .gitignore changes
266  - untracked cache: initial untracked cache validation
267  - untracked cache: record .gitignore information and dir hierarchy
268  - dir.c: optionally compute sha-1 of a .gitignore file
270  Need extra sets of eyes to review this.
273 * ak/stash-store-create-help (2015-01-13) 1 commit
274  - stash: show "create" and "store" subcommands in usage-help
276  Will discard.
279 * bp/diff-relative-config (2015-01-07) 2 commits
280  - diff: teach diff.relative to give default to --relative=<value>
281  - diff: teach --no-relative to override earlier --relative
283  No comments?  No interests?
286 * jc/diff-b-m (2015-02-23) 5 commits
287  . WIPWIP
288  . WIP: diff-b-m
289  - diffcore-rename: allow easier debugging
290  - diffcore-rename.c: add locate_rename_src()
291  - diffcore-break: allow debugging
293  "git diff -B -M" produced incorrect patch when the postimage of a
294  completely rewritten file is similar to the preimage of a removed
295  file; such a resulting file must not be expressed as a rename from
296  other place.
298  The fix in this patch is broken, unfortunately.
301 * pw/remote-set-url-fetch (2014-11-26) 1 commit
302  - remote: add --fetch and --both options to set-url
304  Expecting a reroll.
307 * je/quiltimport-no-fuzz (2014-10-21) 2 commits
308  - git-quiltimport: flip the default not to allow fuzz
309  - git-quiltimport.sh: allow declining fuzz with --exact option
311  "quiltimport" drove "git apply" always with -C1 option to reduce
312  context of the patch in order to give more chance to somewhat stale
313  patches to apply.  Add an "--exact" option to disable, and also
314  "-C$n" option to customize this behaviour.  The top patch
315  optionally flips the default to "--exact".
317  Tired of waiting for an Ack
318  Will discard.
321 * tr/remerge-diff (2014-11-10) 9 commits
322  - t4213: avoid "|" in sed regexp
323  - log --remerge-diff: show what the conflict resolution changed
324  - name-hash: allow dir hashing even when !ignore_case
325  - merge-recursive: allow storing conflict hunks in index
326  - merge_diff_mode: fold all merge diff variants into an enum
327  - combine-diff: do not pass revs->dense_combined_merges redundantly
328  - merge-recursive: -Xindex-only to leave worktree unchanged
329  - merge-recursive: internal flag to avoid touching the worktree
330  - merge-recursive: remove dead conditional in update_stages()
332  "log -p" output learns a new way to let users inspect a merge
333  commit by showing the differences between the automerged result
334  with conflicts the person who recorded the merge would have seen
335  and the final conflict resolution that was recorded in the merge.
337  Waiting for a reroll ($gmane/256591).
340 * hv/submodule-config (2014-11-11) 4 commits
341  - do not die on error of parsing fetchrecursesubmodules option
342  - use new config API for worktree configurations of submodules
343  - extract functions for submodule config set and lookup
344  - implement submodule config cache for lookup of submodule names
346  Kicked back to 'pu' per request ($gmane/255610).
349 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
350  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
351  - git-add--interactive: Preserve diff heading when splitting hunks
353  Waiting for a reroll.
356 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
357  - gitweb: Harden UTF-8 handling in generated links
359  $gmane/250758?
362 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
363  - userdiff: support Java try keyword
364  - userdiff: support C# async methods and correct C# keywords
366  Reviews sent; waiting for a response.
369 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
370  - git-rebase: print name of rev when using shorthand
372  Teach "git rebase -" to report the concrete name of the branch
373  (i.e. the previous one).
375  But it stops short and does not do the same for "git rebase @{-1}".
376  Expecting a reroll.
379 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
380  - merge: drop unused arg from abort_commit method signature
381  - merge: make prepare_to_commit responsible for write_merge_state
382  - t7505: ensure cleanup after hook blocks merge
383  - t7505: add missing &&
385  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
386  run during "git merge".  The log message stresses too much on one
387  hook, prepare-commit-msg, but it would equally apply to other hooks
388  like post-merge, I think.
390  Waiting for a reroll.
393 * jc/graph-post-root-gap (2013-12-30) 3 commits
394  - WIP: document what we want at the end
395  - graph: remove unused code a bit
396  - graph: stuff the current commit into graph->columns[]
398  This was primarily a RFH ($gmane/239580).
401 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
402  - perf-lib: add test_perf_cleanup target
403  - perf-lib: split starting the test from the execution
405  Add test_perf_cleanup shell function to the perf suite, that allows
406  the script writers to define a test with a clean-up action.
408  Will hold.
411 * jc/show-branch (2014-03-24) 5 commits
412  - show-branch: use commit slab to represent bitflags of arbitrary width
413  - show-branch.c: remove "all_mask"
414  - show-branch.c: abstract out "flags" operation
415  - show-branch.c: lift all_mask/all_revs to a global static
416  - show-branch.c: update comment style
418  Waiting for the final step to lift the hard-limit before sending it out.
420 --------------------------------------------------
421 [Cooking]
423 * mr/doc-clean-f-f (2015-02-26) 1 commit
424   (merged to 'next' on 2015-03-03 at 67a77a2)
425  + Documentation/git-clean.txt: document that -f may need to be given twice
427  Documentation update.
429  Will merge to 'master'.
432 * ye/http-accept-language (2015-02-26) 1 commit
433   (merged to 'next' on 2015-03-03 at 58d195e)
434  + gettext.c: move get_preferred_languages() from http.c
436  Compilation fix for a recent topic in 'master'.
438  Will merge to 'master'.
441 * jk/diffcore-rename-duplicate (2015-02-27) 2 commits
442   (merged to 'next' on 2015-03-03 at 1d5a2d2)
443  + diffcore-rename: avoid processing duplicate destinations
444  + diffcore-rename: split locate_rename_dst into two functions
446  A corrupt input to "git diff -M" can cause us to segfault.
448  Will merge to 'master'.
451 * nd/grep-exclude-standard-help-fix (2015-02-27) 1 commit
452   (merged to 'next' on 2015-03-03 at 61c9587)
453  + grep: correct help string for --exclude-standard
455  Description given by "grep -h" for its --exclude-standard option
456  was phrased poorly.
458  Will merge to 'master'.
461 * nd/versioncmp-prereleases (2015-02-27) 1 commit
462   (merged to 'next' on 2015-03-03 at 6ab29cf)
463  + versionsort: support reorder prerelease suffixes
465  The versionsort.prerelease configuration variable can be used to
466  specify that v1.0-pre1 comes before v1.0.
468  Will merge to 'master'.
471 * ja/clean-confirm-i18n (2015-03-02) 1 commit
472   (merged to 'next' on 2015-03-03 at 314c322)
473  + Add hint interactive cleaning
475  The prompt string "remove?" used when "git clean -i" asks the user
476  if a path should be removed was localizable, but the code always
477  expects a substring of "yes" to tell it to go ahead.  Always show
478  [y/N] as part of this prompt to hint that the answer is not (yet)
479  localized.
481  Will merge to 'master'.
484 * mk/diff-shortstat-dirstat-fix (2015-03-02) 1 commit
485   (merged to 'next' on 2015-03-03 at 42c282e)
486  + diff --shortstat --dirstat: remove duplicate output
488  "git diff --shortstat --dirstat=changes" showed a dirstat based on
489  lines that was never asked by the end user in addition to the
490  dirstat that the user asked for.
492  Will merge to 'master'.
495 * nd/slim-index-pack-memory-usage (2015-02-27) 2 commits
496  - index-pack: kill union delta_base to save memory
497  - index-pack: reduce object_entry size to save memory
499  Memory usage of "git index-pack" has been trimmed by tens of
500  per-cent.
503 * nd/list-files (2015-02-09) 21 commits
504  - t3080: tests for git-list-files
505  - list-files: -M aka diff-cached
506  - list-files -F: show submodules with the new indicator '&'
507  - list-files: add -F/--classify
508  - list-files: show directories as well as files
509  - list-files: do not show duplicate cached entries
510  - list-files: sort output and remove duplicates
511  - list-files: add -t back
512  - list-files: add -1 short for --no-column
513  - list-files: add -R/--recursive short for --max-depth=-1
514  - list-files: -u does not imply showing stages
515  - list-files: make alias 'ls' default to 'list-files'
516  - list-files: a user friendly version of ls-files and more
517  - ls-files: support --max-depth
518  - ls-files: add --column
519  - ls-files: add --color to highlight file names
520  - ls-files: buffer full item in strbuf before printing
521  - ls_colors.c: highlight submodules like directories
522  - ls_colors.c: add a function to color a file name
523  - ls_colors.c: parse color.ls.* from config file
524  - ls_colors.c: add $LS_COLORS parsing code
526  A new "git list-files" Porcelain command, "ls-files" with bells and
527  whistles.
530 * jc/decorate-leaky-separator-color (2015-03-04) 7 commits
531  - log --decorate: do not leak "commit" color into the next item
532  - Documentation/config.txt: simplify boolean description in the syntax section
533  - Documentation/config.txt: describe 'color' value type in the "Values" section
534  - Documentation/config.txt: have a separate "Values" section
535  - Documentation/config.txt: describe the structure first and then meaning
536  - Documentation/config.txt: explain multi-valued variables once
537  - Documentation/config.txt: avoid unnecessary negation
539  "git log --decorate" did not reset colors correctly around the
540  branch names.
542  Waiting for reviews.
545 * ms/submodule-update-config-doc (2015-03-02) 1 commit
546   (merged to 'next' on 2015-03-03 at b94da4b)
547  + submodule: improve documentation of update subcommand
549  The interaction between "git submodule update" and the
550  submodule.*.update configuration was not clearly documented.
552  Will merge to 'master'.
555 * mh/expire-updateref-fixes (2015-03-05) 9 commits
556   (merged to 'next' on 2015-03-05 at 1caf9a6)
557  + reflog_expire(): never update a reference to null_sha1
558  + reflog_expire(): ignore --updateref for symbolic references
559  + reflog: improve and update documentation
560  + struct ref_lock: delete the force_write member
561  + lock_ref_sha1_basic(): do not set force_write for missing references
562  + write_ref_sha1(): move write elision test to callers
563  + write_ref_sha1(): remove check for lock == NULL
564  + Merge branch 'sb/atomic-push' into mh/ref-trans-value-check
565  + Merge branch 'mh/reflog-expire' into mh/ref-trans-value-check
567  Various issues around "reflog expire", e.g. using --updateref when
568  expiring a reflog for a symbolic reference, have been corrected
569  and/or made saner.
571  Will merge to 'master'.
574 * js/fsck-opt (2015-01-21) 19 commits
575  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
576  - fsck: git receive-pack: support excluding objects from fsck'ing
577  - fsck: introduce `git fsck --quick`
578  - fsck: support demoting errors to warnings
579  - fsck: document the new receive.fsck.* options
580  - fsck: allow upgrading fsck warnings to errors
581  - fsck: optionally ignore specific fsck issues completely
582  - fsck: disallow demoting grave fsck errors to warnings
583  - fsck: add a simple test for receive.fsck.*
584  - fsck: make fsck_tag() warn-friendly
585  - fsck: handle multiple authors in commits specially
586  - fsck: make fsck_commit() warn-friendly
587  - fsck: make fsck_ident() warn-friendly
588  - fsck: report the ID of the error/warning
589  - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
590  - fsck: offer a function to demote fsck errors to warnings
591  - fsck: provide a function to parse fsck message IDs
592  - fsck: introduce identifiers for fsck messages
593  - fsck: introduce fsck options
595  "fsck.warnings = <list of error tokens>" I suggested turned out to
596  be an unpopular choice (sorry Dscho).
598  Expecting a reroll.
601 * nd/multiple-work-trees (2015-01-27) 38 commits
602   (merged to 'next' on 2015-02-18 at b51f696)
603  + t2026 needs procondition SANITY
604  + git-checkout.txt: a note about multiple checkout support for submodules
605  + checkout: add --ignore-other-wortrees
606  + checkout: pass whole struct to parse_branchname_arg instead of individual flags
607  + git-common-dir: make "modules/" per-working-directory directory
608  + checkout: do not fail if target is an empty directory
609  + t2025: add a test to make sure grafts is working from a linked checkout
610  + checkout: don't require a work tree when checking out into a new one
611  + git_path(): keep "info/sparse-checkout" per work-tree
612  + count-objects: report unused files in $GIT_DIR/worktrees/...
613  + gc: support prune --worktrees
614  + gc: factor out gc.pruneexpire parsing code
615  + gc: style change -- no SP before closing parenthesis
616  + checkout: clean up half-prepared directories in --to mode
617  + checkout: reject if the branch is already checked out elsewhere
618  + prune: strategies for linked checkouts
619  + checkout: support checking out into a new working directory
620  + use new wrapper write_file() for simple file writing
621  + wrapper.c: wrapper to open a file, fprintf then close
622  + setup.c: support multi-checkout repo setup
623  + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
624  + setup.c: convert check_repository_format_gently to use strbuf
625  + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
626  + setup.c: convert is_git_directory() to use strbuf
627  + git-stash: avoid hardcoding $GIT_DIR/logs/....
628  + *.sh: avoid hardcoding $GIT_DIR/hooks/...
629  + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
630  + $GIT_COMMON_DIR: a new environment variable
631  + commit: use SEQ_DIR instead of hardcoding "sequencer"
632  + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
633  + reflog: avoid constructing .lock path with git_path
634  + *.sh: respect $GIT_INDEX_FILE
635  + git_path(): be aware of file relocation in $GIT_DIR
636  + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
637  + path.c: rename vsnpath() to do_git_path()
638  + git_snpath(): retire and replace with strbuf_git_path()
639  + path.c: make get_pathname() call sites return const char *
640  + path.c: make get_pathname() return strbuf instead of static buffer
642  A replacement for contrib/workdir/git-new-workdir that does not
643  rely on symbolic links and make sharing of objects and refs safer
644  by making the borrowee and borrowers aware of each other.
646  Will cook in 'next'.