What's cooking (2015/08 #03)
[git.git] / whats-cooking.txt
blobcc877cdbf89d1cecacb1e730f437109ce09687d0
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Aug 2015, #03; Mon, 17)
4 X-master-at: 44e02239f41177b6a7567e86db2cd18f7949d941
5 X-next-at: ab17608326e73d8e92eba73c51dac99aa92984ba
7 What's cooking in git.git (Aug 2015, #03; Mon, 17)
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 The second batch of topics have graduated to 'master'.  Most
15 notably, the rewritten "git am" is in.  Also "worktree add" is
16 getting improved.
18 You can find the changes described here in the integration branches
19 of the repositories listed at
21     http://git-blame.blogspot.com/p/git-public-repositories.html
23 --------------------------------------------------
24 [Graduated to "master"]
26 * dt/untracked-sparse (2015-07-31) 1 commit
27   (merged to 'next' on 2015-08-12 at 234434d)
28  + untracked-cache: support sparse checkout
29  (this branch is used by dt/untracked-subdir.)
31  Allow untracked cache (experimental) to be used when sparse
32  checkout (experimental) is also in use.
35 * kd/pull-rebase-autostash (2015-07-22) 1 commit
36   (merged to 'next' on 2015-08-12 at de88e8e)
37  + pull: allow dirty tree when rebase.autostash enabled
39  "git pull --rebase" has been taught to pay attention to
40  rebase.autostash configuration.
43 * mh/get-remote-group-fix (2015-07-28) 4 commits
44   (merged to 'next' on 2015-08-12 at b77820e)
45  + get_remote_group(): use skip_prefix()
46  + get_remote_group(): eliminate superfluous call to strcspn()
47  + get_remote_group(): rename local variable "space" to "wordlen"
48  + get_remote_group(): handle remotes with single-character names
50  An off-by-one error made "git remote" to mishandle a remote with a
51  single letter nickname.
54 * ta/docfix-index-format-tech (2015-07-28) 1 commit
55   (merged to 'next' on 2015-08-12 at 662d88a)
56  + typofix for index-format.txt
58 --------------------------------------------------
59 [New Topics]
61 * db/push-sign-if-asked (2015-08-17) 7 commits
62  - DONTMERGE: dropped bits to add config; needs tests
63  - push: support signed pushes iff the server supports it
64  - transport: remove git_transport_options.push_cert
65  - gitremote-helpers.txt: document pushcert option
66  - Documentation/git-send-pack.txt: document --signed
67  - Documentation/git-send-pack.txt: wrap long synopsis line
68  - Documentation/git-push.txt: document when --signed may fail
70  The client side codepaths in "git push" have been cleaned up
71  and the user can request to perform an optional "signed push",
72  i.e. sign only when the other end accepts signed push.
74  Expecting a reroll.
77 * dk/gc-idx-wo-pack (2015-08-17) 3 commits
78  - DONTMERGE: log message, grace-period and tests $gmane/276058
79  - gc: remove stale .idx files without corresponding .pack file
80  - prepare_packed_git(): refactor garbage reporting in pack directory
82  Having a leftover .idx file without correspoinding .pack file in
83  the repository hurts performance; "git gc" learned to prune them.
85  Expecting a reroll.
88 * ep/http-configure-ssl-version (2015-08-17) 1 commit
89  - http: add support for specifying the SSL version
91  A new configuration variable http.sslVersion can be used to specify
92  what specific version of SSL/TLS to use to make a connection.
94  Will merge to 'next'.
97 * jv/send-email-selective-smtp-auth (2015-08-17) 1 commit
98  - send-email: provide whitelist of SMTP AUTH mechanisms
100  "git send-email" learned a new option --smtp-auth to limit the SMTP
101  AUTH mechanisms to be used to a subset of what the system library
102  supports.
104  Will merge to 'next'.
107 * po/po-readme (2015-08-17) 1 commit
108  - po/README: Update directions for l10n contributors
110  Will merge to 'next'.
113 * pt/am-builtin-abort-fix (2015-08-17) 1 commit
114  - am --abort: merge ORIG_HEAD tree into index
116  "git am" that has recently reimplemented in C had a performance
117  regression in "git am --abort" that goes back to the version before
118  an attempted (and failed) patch application.
120  Will merge to 'next'.
123 * ss/fix-config-fd-leak (2015-08-14) 1 commit
124  - config: close config file handle in case of error
126  Will merge to 'next'.
128 --------------------------------------------------
129 [Stalled]
131 * nd/list-files (2015-02-09) 21 commits
132  - t3080: tests for git-list-files
133  - list-files: -M aka diff-cached
134  - list-files -F: show submodules with the new indicator '&'
135  - list-files: add -F/--classify
136  - list-files: show directories as well as files
137  - list-files: do not show duplicate cached entries
138  - list-files: sort output and remove duplicates
139  - list-files: add -t back
140  - list-files: add -1 short for --no-column
141  - list-files: add -R/--recursive short for --max-depth=-1
142  - list-files: -u does not imply showing stages
143  - list-files: make alias 'ls' default to 'list-files'
144  - list-files: a user friendly version of ls-files and more
145  - ls-files: support --max-depth
146  - ls-files: add --column
147  - ls-files: add --color to highlight file names
148  - ls-files: buffer full item in strbuf before printing
149  - ls_colors.c: highlight submodules like directories
150  - ls_colors.c: add a function to color a file name
151  - ls_colors.c: parse color.ls.* from config file
152  - ls_colors.c: add $LS_COLORS parsing code
154  A new "git list-files" Porcelain command, "ls-files" with bells and
155  whistles.
157  Reroll to base on wt-status work ($gmane/265142) has seen some
158  positive discussions.
160  Waiting for a further polished reroll ($gmane/265534).
163 * mh/numparse (2015-03-19) 14 commits
164  . diff_opt_parse(): use convert_i() when handling --abbrev=<num>
165  . diff_opt_parse(): use convert_i() when handling "-l<num>"
166  . opt_arg(): simplify pointer handling
167  . opt_arg(): report errors parsing option values
168  . opt_arg(): use convert_i() in implementation
169  . opt_arg(): val is always non-NULL
170  . builtin_diff(): detect errors when parsing --unified argument
171  . handle_revision_opt(): use convert_ui() when handling "--abbrev="
172  . strtoul_ui(), strtol_i(): remove functions
173  . handle_revision_opt(): use convert_i() when handling "-<digit>"
174  . handle_revision_opt(): use skip_prefix() in many places
175  . write_subdirectory(): use convert_ui() for parsing mode
176  . cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
177  . numparse: new module for parsing integral numbers
179  Many codepaths use unchecked use of strtol() and friends (or even
180  worse, atoi()).  Introduce a set of wrappers that try to be more
181  careful.
183  Expecting a reroll.
184  ($gmane/268058).
187 * kk/log-merges-config (2015-04-21) 5 commits
188  - bash-completion: add support for git-log --merges= and log.merges
189  - t4202-log: add tests for --merges=
190  - Documentation: add git-log --merges= option and log.merges config. var
191  - log: honor log.merges= option
192  - revision: add --merges={show|only|hide} option
194  "git log" (but not other commands in the "log" family) learned to
195  pay attention to the log.merges configuration variable that can be
196  set to "show" (the normal behaviour), "only" (hide non-merge
197  commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
198  can be used to override the setting from the command line.
200  The documentation may need to be updated once more ($gmane/267250).
201  Waiting for a reroll.
204 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
205  - t/lib-git-svn: check same httpd module dirs as lib-httpd
206  - t/lib-httpd: load mod_unixd
208  This is the first two commits in a three-patch series $gmane/266962
210  Expecting a reroll.
211  with updated log message ($gmane/268061).
214 * bw/portability-solaris (2015-07-20) 3 commits
215  - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
216  - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
217  - tests: modify tr expressions so that xpg4/tr handles it on Solaris
219  Needs another reroll?
220  ($gmane/274296)
223 * jc/clone-bundle (2015-04-30) 1 commit
224  - repack: optionally create a clone.bundle
226  Waiting for further work.
227  Still an early WIP.
230 * mg/index-read-error-messages (2015-06-01) 2 commits
231  - messages: uniform error messages for index write
232  - show-index: uniform error messages for index read
234  The tip was RFC.
235  Expecting a reroll.
238 * hv/submodule-config (2015-06-15) 4 commits
239  - do not die on error of parsing fetchrecursesubmodules option
240  - use new config API for worktree configurations of submodules
241  - extract functions for submodule config set and lookup
242  - implement submodule config API for lookup of .gitmodules values
244  The gitmodules API accessed from the C code learned to cache stuff
245  lazily.
247  Needs another reroll?
248  ($gmane/273743)
251 * jk/log-missing-default-HEAD (2015-06-03) 1 commit
252  - log: diagnose empty HEAD more clearly
254  "git init empty && git -C empty log" said "bad default revision 'HEAD'",
255  which was found to be a bit confusing to new users.
257  What's the status of this one?
260 * wp/sha1-name-negative-match (2015-06-08) 2 commits
261  - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
262  - test for '!' handling in rev-parse's named commits
264  Introduce "branch^{/!-<pattern>}" notation to name a commit
265  reachable from branch that does not match the given pattern.
267  Expecting a reroll.
270 * mk/utf8-no-iconv-warn (2015-06-08) 1 commit
271  - utf8.c: print warning about disabled iconv
273  Warn when a reencoding is requested in a build without iconv
274  support, as the end user is likely to get an unexpected result.  I
275  think the same level of safety should be added to a build with
276  iconv support when the specified encoding is not available, but the
277  patch does not go there.
279  Expecting a reroll.
282 * ak/format-patch-odir-config (2015-06-19) 1 commit
283  - format-patch: introduce format.outputDirectory configuration
285  Reroll exists but didn't pick it up as it seemed to be still
286  collecting review comments.
288  Expecting a reroll.
289  ($gmane/272180).
292 * ad/bisect-terms (2015-08-03) 4 commits
293  - bisect: allow setting any user-specified in 'git bisect start'
294  - bisect: add 'git bisect terms' to view the current terms
295  - bisect: add the terms old/new
296  - bisect: sanity check on terms
298  The use of 'good/bad' in "git bisect" made it confusing to use when
299  hunting for a state change that is not a regression (e.g. bugfix).
300  The command learned 'old/new' and then allows the end user to
301  say e.g. "bisect start --term-old=fast --term=new=slow" to find a
302  performance regression.
304  Michael's idea to make 'good/bad' more intelligent does have
305  certain attractiveness ($gname/272867), and makes some of the work
306  on this topic a moot point.
308  Will hold.
311 * mh/notes-allow-reading-treeish (2015-07-13) 1 commit
312  - notes: allow treeish expressions as notes ref
314  Some "git notes" operations, e.g. "git log --notes=<note>", should
315  be able to read notes from any tree-ish that is shaped like a notes
316  tree, but the notes infrastructure required that the argument must
317  be a ref under refs/notes/.  Loosen it to require a valid ref only
318  when the operation would update the notes (in which case we must
319  have a place to store the updated notes tree, iow, a ref).
321  Needs update to docs.
322  ($gmane/273928)
325 * jc/diff-b-m (2015-02-23) 5 commits
326  . WIPWIP
327  . WIP: diff-b-m
328  - diffcore-rename: allow easier debugging
329  - diffcore-rename.c: add locate_rename_src()
330  - diffcore-break: allow debugging
332  "git diff -B -M" produced incorrect patch when the postimage of a
333  completely rewritten file is similar to the preimage of a removed
334  file; such a resulting file must not be expressed as a rename from
335  other place.
337  The fix in this patch is broken, unfortunately.
340 * pw/remote-set-url-fetch (2014-11-26) 1 commit
341  . remote: add --fetch and --both options to set-url
343  Ejected.
346 * tr/remerge-diff (2014-11-10) 9 commits
347  - t4213: avoid "|" in sed regexp
348  - log --remerge-diff: show what the conflict resolution changed
349  - name-hash: allow dir hashing even when !ignore_case
350  - merge-recursive: allow storing conflict hunks in index
351  - merge_diff_mode: fold all merge diff variants into an enum
352  - combine-diff: do not pass revs->dense_combined_merges redundantly
353  - merge-recursive: -Xindex-only to leave worktree unchanged
354  - merge-recursive: internal flag to avoid touching the worktree
355  - merge-recursive: remove dead conditional in update_stages()
357  "log -p" output learns a new way to let users inspect a merge
358  commit by showing the differences between the automerged result
359  with conflicts the person who recorded the merge would have seen
360  and the final conflict resolution that was recorded in the merge.
362  Waiting for a reroll.
363  ($gmane/256591).
366 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
367  - perf-lib: add test_perf_cleanup target
368  - perf-lib: split starting the test from the execution
370  Add test_perf_cleanup shell function to the perf suite, that allows
371  the script writers to define a test with a clean-up action.
373  Will hold.
376 * jc/show-branch (2014-03-24) 5 commits
377  - show-branch: use commit slab to represent bitflags of arbitrary width
378  - show-branch.c: remove "all_mask"
379  - show-branch.c: abstract out "flags" operation
380  - show-branch.c: lift all_mask/all_revs to a global static
381  - show-branch.c: update comment style
383  Waiting for the final step to lift the hard-limit.
385 --------------------------------------------------
386 [Cooking]
388 * bb/remote-get-url (2015-08-05) 1 commit
389  - remote: add get-url subcommand
391  "git remote" learned "get-url" subcommand to show the URL for a
392  given remote name used for fetching and pushing.
394  Waiting for a reroll.
395  ($gmane/275401)
398 * cb/open-noatime-clear-errno (2015-08-12) 1 commit
399   (merged to 'next' on 2015-08-17 at 6aa43a1)
400  + git_open_noatime: return with errno=0 on success
402  When trying to see that an object does not exist, a state errno
403  leaked from our "first try to open a packfile with O_NOATIME and
404  then if it fails retry without it" logic on a system that refuses
405  O_NOATIME.  This confused us and caused us to die, saying that the
406  packfile is unreadable, when we should have just reported that the
407  object does not exist in that packfile to the caller.
409  Will merge to 'master'.
412 * jk/guess-repo-name-regression-fix (2015-08-10) 2 commits
413   (merged to 'next' on 2015-08-12 at 4cba33c)
414  + clone: use computed length in guess_dir_name
415  + clone: add tests for output directory
416  (this branch is used by ps/guess-repo-name-at-root.)
418  "git clone $URL" in recent releases of Git contains a regression in
419  the code that invents a new repository name incorrectly based on
420  the $URL.  This has been corrected.
422  Will merge to 'master'.
425 * ps/guess-repo-name-at-root (2015-08-10) 3 commits
426   (merged to 'next' on 2015-08-12 at 088860f)
427  + clone: abort if no dir name could be guessed
428  + clone: do not use port number as dir name
429  + clone: do not include authentication data in guessed dir
430  (this branch uses jk/guess-repo-name-regression-fix.)
432  "git clone $URL", when cloning from a site whose sole purpose is to
433  host a single repository (hence, no path after <scheme>://<site>/),
434  tried to use the site name as the new repository name, but did not
435  remove username or password when <site> part was of the form
436  <user>@<pass>:<host>.  The code is taught to redact these.
438  Will merge to 'master'.
441 * jk/notes-merge-config (2015-08-14) 4 commits
442  - notes: teach git-notes about notes.<ref>.mergestrategy option
443  - notes: add notes.mergestrategy option to select default strategy
444  - notes: add tests for --commit/--abort/--strategy exclusivity
445  - notes: document cat_sort_uniq rewriteMode
447  "git notes merge" can be told with "--strategy=<how>" option how to
448  automatically handle conflicts; this can now be configured by
449  setting notes.merge configuration variable.
451  The latest reroll (v8) hasn't been picked up.
452  Expecting a reroll.
453  ($gmane/276068)
456 * mk/submodule-gitdir-path (2015-08-05) 2 commits
457  - path: implement common_dir handling in git_path_submodule()
458  - submodule refactor: use git_path_submodule() in add_submodule_odb()
460  The submodule code has been taught to work better with separate
461  work trees created via "git worktree add".
463  Waiting for a review.
464  ($gmane/275340).
467 * mm/pull-upload-pack (2015-07-30) 1 commit
468   (merged to 'next' on 2015-08-12 at 14d2a52)
469  + pull.sh: quote $upload_pack when passing it to git-fetch
471  "git pull" in recent releases of Git has a regression in the code
472  that allows custom path to the --upload-pack=<program>.  This has
473  been corrected.
475  Will merge to 'maint'.
477  Note that this is irrelevant for 'master' with "git pull" rewritten
478  in C.
481 * ps/t1509-chroot-test-fixup (2015-08-05) 2 commits
482   (merged to 'next' on 2015-08-12 at 6d10ea5)
483  + tests: fix cleanup after tests in t1509-root-worktree
484  + tests: fix broken && chains in t1509-root-worktree
486  t1509 test that requires a dedicated VM environment had some
487  bitrot, which has been corrected.
489  Will merge to 'master'.
492 * pt/am-builtin-options (2015-08-12) 3 commits
493   (merged to 'next' on 2015-08-12 at e57f754)
494  + am: let --signoff override --no-signoff
495  + am: let command-line options override saved options
496  + test_terminal: redirect child process' stdin to a pty
498  After "git am --opt1" stops, running "git am --opt2" pays attention
499  to "--opt2" only for the patch that caused the original invocation
500  to stop.
502  Will merge to 'master'.
505 * sb/remove-get-pathspec (2015-08-03) 1 commit
506  - builtin/mv: remove get_pathspec()
508  Expecting a reroll.
509  ($gmane/275224)
512 * sb/submodule-helper (2015-08-07) 1 commit
513  - submodule: implement `module_list` as a builtin helper
515  The beginning of "git submodule" rewritten in C.
518 * tb/complete-rebase-i-edit-todo (2015-08-05) 1 commit
519   (merged to 'next' on 2015-08-12 at 9606c21)
520  + completion: offer '--edit-todo' during interactive rebase
522  The command-line completion script (in contrib/) has been updated.
524  Will merge to 'master'.
527 * dt/untracked-subdir (2015-08-07) 2 commits
528  - DONTMERGE: wait for Duy to Ack or comment
529  - untracked-cache: fix subdirectory handling
531  Waiting for a review cycle to conclude.
532  ($gmane/276019).
535 * jk/test-with-x (2015-08-07) 2 commits
536   (merged to 'next' on 2015-08-12 at 06576a1)
537  + test-lib: disable trace when test is not verbose
538  + test-lib: turn off "-x" tracing during chain-lint check
540  Running tests with the "-x" option to make them verbose had some
541  unpleasant interactions with other features of the test suite.
543  Will merge to 'master'.
546 * ad/cygwin-wants-rename (2015-08-07) 1 commit
547  - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
549  Will hold.
550  ($gmane/275680).
553 * ee/clean-remove-dirs (2015-08-11) 1 commit
554   (merged to 'next' on 2015-08-12 at fc41b09)
555  + t7300-clean: require POSIXPERM for chmod 0 test
557  Test updates for Windows.
559  Will merge to 'master'.
562 * jc/finalize-temp-file (2015-08-10) 1 commit
563   (merged to 'next' on 2015-08-12 at 6fe62fe)
564  + sha1_file.c: rename move_temp_to_file() to finalize_object_file()
566  Long overdue micro clean-up.
568  Will merge to 'master'.
571 * jk/git-path (2015-08-10) 16 commits
572   (merged to 'next' on 2015-08-12 at 7ebe864)
573  + memoize common git-path "constant" files
574  + get_repo_path: refactor path-allocation
575  + find_hook: keep our own static buffer
576  + refs.c: remove_empty_directories can take a strbuf
577  + refs.c: avoid git_path assignment in lock_ref_sha1_basic
578  + refs.c: avoid repeated git_path calls in rename_tmp_log
579  + refs.c: simplify strbufs in reflog setup and writing
580  + path.c: drop git_path_submodule
581  + refs.c: remove extra git_path calls from read_loose_refs
582  + remote.c: drop extraneous local variable from migrate_file
583  + prefer mkpathdup to mkpath in assignments
584  + prefer git_pathdup to git_path in some possibly-dangerous cases
585  + add_to_alternates_file: don't add duplicate entries
586  + t5700: modernize style
587  + cache.h: complete set of git_path_submodule helpers
588  + cache.h: clarify documentation for git_path, et al
590  git_path() and mkpath() are handy helper functions but it is easy
591  to misuse, as the callers need to be careful to keep the number of
592  active results below 4.  Their uses have been reduced.
594  Will merge to 'master'.
597 * jk/long-error-messages (2015-08-11) 2 commits
598   (merged to 'next' on 2015-08-12 at 36303cd)
599  + vreportf: avoid intermediate buffer
600  + vreportf: report to arbitrary filehandles
602  The codepath to produce error messages had a hard-coded limit to
603  the size of the message, primarily to avoid memory allocation while
604  calling die().
606  Will merge to 'master'.
609 * nd/dwim-wildcards-as-pathspecs (2015-08-11) 1 commit
610   (merged to 'next' on 2015-08-12 at bb73f4d)
611  + t2019: skip test requiring '*' in a file name non Windows
613  Test updates for Windows.
615  Will merge to 'master'.
618 * sg/config-name-only (2015-08-10) 2 commits
619   (merged to 'next' on 2015-08-12 at c658fe4)
620  + completion: list variable names reliably with 'git config --name-only'
621  + config: add '--name-only' option to list only variable names
623  "git config --list" output was hard to parse when values consist of
624  multiple lines.  "--name-only" option is added to help this.
626  Will merge to 'master'.
629 * mh/tempfile (2015-08-12) 16 commits
630   (merged to 'next' on 2015-08-12 at 80efcb7)
631  + credential-cache--daemon: use tempfile module
632  + credential-cache--daemon: delete socket from main()
633  + gc: use tempfile module to handle gc.pid file
634  + lock_repo_for_gc(): compute the path to "gc.pid" only once
635  + diff: use tempfile module
636  + setup_temporary_shallow(): use tempfile module
637  + write_shared_index(): use tempfile module
638  + register_tempfile(): new function to handle an existing temporary file
639  + tempfile: add several functions for creating temporary files
640  + prepare_tempfile_object(): new function, extracted from create_tempfile()
641  + tempfile: a new module for handling temporary files
642  + commit_lock_file(): use get_locked_file_path()
643  + lockfile: add accessor get_lock_file_path()
644  + lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
645  + create_bundle(): duplicate file descriptor to avoid closing it twice
646  + lockfile: move documentation to lockfile.h and lockfile.c
648  The "lockfile" API has been rebuilt on top of a new "tempfile" API.
650  Will merge to 'master'.
653 * jh/strbuf-read-use-read-in-full (2015-08-10) 1 commit
654   (merged to 'next' on 2015-08-12 at db16247)
655  + strbuf_read(): skip unnecessary strbuf_grow() at eof
657  strbuf_read() used to have one extra iteration (and an unnecessary
658  strbuf_grow() of 8kB), which was eliminated.
660  Will merge to 'master'.
663 * sb/check-return-from-read-ref (2015-08-03) 1 commit
664   (merged to 'next' on 2015-08-12 at 4a1c801)
665  + transport-helper: die on errors reading refs.
667  Will merge to 'master'.
670 * jk/negative-hiderefs (2015-08-07) 2 commits
671   (merged to 'next' on 2015-08-12 at bdc478d)
672  + refs: support negative transfer.hideRefs
673  + docs/config.txt: reorder hideRefs config
675  A negative !ref entry in multi-value transfer.hideRefs
676  configuration can be used to say "don't hide this one".
678  Will merge to 'master'.
681 * dt/notes-multiple (2015-08-11) 2 commits
682   (merged to 'next' on 2015-08-12 at 0052055)
683  + notes: handle multiple worktrees
684  + worktrees: add find_shared_symref
686  When linked worktree is used, simultaneous "notes merge" instances
687  for the same ref in refs/notes/* are prevented from stomping on
688  each other.
690  Will merge to 'master'.
693 * dt/refs-pseudo (2015-08-11) 6 commits
694   (merged to 'next' on 2015-08-12 at 7078eb6)
695  + pseudoref: check return values from read_ref()
696   (merged to 'next' on 2015-08-03 at 3eafd33)
697  + sequencer: replace write_cherry_pick_head with update_ref
698  + bisect: use update_ref
699  + pseudorefs: create and use pseudoref update and delete functions
700  + refs: add ref_type function
701  + refs: introduce pseudoref and per-worktree ref concepts
703  To prepare for allowing a different "ref" backend to be plugged in
704  to the system, update_ref()/delete_ref() have been taught about
705  ref-like things like MERGE_HEAD that are per-worktree (they will
706  always be written to the filesystem inside $GIT_DIR).
708  Will merge to 'master'.
711 * kn/for-each-tag-branch (2015-08-03) 11 commits
712   (merged to 'next' on 2015-08-03 at d9e94b9)
713  + for-each-ref: add '--contains' option
714  + ref-filter: implement '--contains' option
715  + parse-options.h: add macros for '--contains' option
716  + parse-option: rename parse_opt_with_commit()
717  + for-each-ref: add '--merged' and '--no-merged' options
718  + ref-filter: implement '--merged' and '--no-merged' options
719  + ref-filter: add parse_opt_merge_filter()
720  + for-each-ref: add '--points-at' option
721  + ref-filter: implement '--points-at' option
722  + tag: libify parse_opt_points_at()
723  + t6302: for-each-ref tests for ref-filter APIs
725  Originally merged to 'next' on 2015-07-15
727  Some features from "git tag -l" and "git branch -l" have been made
728  available to "git for-each-ref" so that eventually the unified
729  implementation can be shared across all three, in a follow-up
730  series or two.
733 * jc/rerere (2015-07-24) 21 commits
734  - rerere: un-nest merge() further
735  - rerere: use "struct rerere_id" instead of "char *" for conflict ID
736  - rerere: call conflict-ids IDs
737  - rerere: further clarify do_rerere_one_path()
738  - rerere: further de-dent do_plain_rerere()
739  - rerere: refactor "replay" part of do_plain_rerere()
740  - rerere: explain the remainder
741  - rerere: explain "rerere forget" codepath
742  - rerere: explain the primary codepath
743  - rerere: explain MERGE_RR management helpers
744  - rerere: fix benign off-by-one non-bug and clarify code
745  - rerere: explain the rerere I/O abstraction
746  - rerere: do not leak mmfile[] for a path with multiple stage #1 entries
747  - rerere: stop looping unnecessarily
748  - rerere: drop want_sp parameter from is_cmarker()
749  - rerere: report autoupdated paths only after actually updating them
750  - rerere: write out each record of MERGE_RR in one go
751  - rerere: lift PATH_MAX limitation
752  - rerere: plug conflict ID leaks
753  - rerere: handle conflicts with multiple stage #1 entries
754  - rerere: fix an off-by-one non-bug
755  (this branch is used by jc/rerere-multi.)
757  Code clean-up and minor fixes (so far).
760 * jc/rerere-multi (2015-07-30) 7 commits
761  . t4200: rerere a merge with two identical conflicts
762  . WIP
763  . rerere: allow multiple variants to exist
764  - rerere: delay the recording of preimage
765  - rerere: handle leftover rr-cache/$ID directory and postimage files
766  - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
767  - rerere: split conflict ID further
768  (this branch uses jc/rerere.)
770  This is a contination of jc/rerere topic.
773 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
774   (merged to 'next' on 2015-08-03 at a52c2b2)
775  + merge: drop 'git merge <message> HEAD <commit>' syntax
777  Originally merged to 'next' on 2015-05-28
779  Stop supporting "git merge <message> HEAD <commit>" syntax that
780  has been deprecated since October 2007.
782  Will keep in 'next' during the 2.6 cycle.