What's cooking (2015/07 #07)
[alt-git.git] / whats-cooking.txt
blob8e03436f6adbee662a7732b9e790160648022812
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jul 2015, #07; Mon, 27)
4 X-master-at: a17c56c056d5fea0843b429132904c429a900229
5 X-next-at: 0029c496ce1b91f10b75ade16604b8e9f5d8d20b
7 What's cooking in git.git (Jul 2015, #07; Mon, 27)
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 Git 2.5 final was tagged and tarballs were pushed out.  Accumulated
15 fixes also went to a new maintenance release 2.4.7.  Let's wait and
16 see for a few days for any regressions before opening the 'master'
17 branch for topics that have been waiting in 'next', as usual.
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 [New Topics]
27 * da/subtree-date-confusion (2015-07-23) 1 commit
28  - contrib/subtree: ignore log.date configuration
30  "git subtree" (in contrib/) depended on "git log" output to be
31  stable, which was a no-no.  Apply a workaround to force a
32  particular date format.
34  Will merge to 'next'.
37 * db/send-pack-user-signingkey (2015-07-21) 1 commit
38  - builtin/send-pack.c: respect user.signingkey
40  The low-level "git send-pack" did not honor 'user.signingkey'
41  configuration variable when sending a signed-push.
43  Will merge to 'next'.
46 * jk/refspec-parse-wildcard (2015-07-27) 2 commits
47  - refs: loosen restriction on wildcard "*" refspecs
48  - refs: cleanup comments regarding check_refname_component()
50  Allow an asterisk as a substring (as opposed to the entirety) of
51  a path component for both side of a refspec, e.g.
52  "refs/heads/o*:refs/remotes/heads/i*".
54  Will merge to 'next'.
57 * jx/do-not-crash-receive-pack-wo-head (2015-07-22) 1 commit
58  - receive-pack: crash when checking with non-exist HEAD
60  Will merge to 'next'.
63 * kd/pull-rebase-autostash (2015-07-22) 1 commit
64  - pull: allow dirty tree when rebase.autostash enabled
65  (this branch uses pt/pull-builtin; is tangled with pt/am-builtin.)
67  Teach "git pull --rebase" to pay attention to rebase.autostash
68  configuration.
71 * es/doc-clean-outdated-tools (2015-07-25) 5 commits
72  - Documentation/git-tools: drop references to defunct tools
73  - Documentation/git-tools: drop references to defunct tools
74  - Documentation/git-tools: fix item text formatting
75  - Documentation/git-tools: improve discoverability of Git wiki
76  - Documentation/git: drop outdated Cogito reference
78  Will merge to 'next'.
80 --------------------------------------------------
81 [Stalled]
83 * jc/clone-bundle (2015-04-30) 1 commit
84  - repack: optionally create a clone.bundle
86  Waiting for further work.
87  Still an early WIP.
90 * jh/strbuf-read-use-read-in-full (2015-06-01) 1 commit
91  - strbuf_read(): skip unnecessary strbuf_grow() at eof
93  Avoid one extra iteration and strbuf_grow() of 8kB in
94  strbuf_read().
96  Looked reasonable; perhaps a log message clarification is needed.
98  Expecting a reroll.
101 * mg/index-read-error-messages (2015-06-01) 2 commits
102  - messages: uniform error messages for index write
103  - show-index: uniform error messages for index read
105  The tip was RFC.
106  Expecting a reroll.
109 * hv/submodule-config (2015-06-15) 4 commits
110  - do not die on error of parsing fetchrecursesubmodules option
111  - use new config API for worktree configurations of submodules
112  - extract functions for submodule config set and lookup
113  - implement submodule config API for lookup of .gitmodules values
115  The gitmodules API accessed from the C code learned to cache stuff
116  lazily.
118  Needs another reroll? ($gmane/273743).
121 * jk/log-missing-default-HEAD (2015-06-03) 1 commit
122  - log: diagnose empty HEAD more clearly
124  "git init empty && git -C empty log" said "bad default revision 'HEAD'",
125  which was found to be a bit confusing to new users.
127  What's the status of this one?
130 * bc/object-id (2015-06-17) 10 commits
131  . remote.c: use struct object_id in many functions
132  . object-id: use struct object_id in struct object
133  . remote.c: use struct object_id in ref_newer()
134  . transport-helper.c: use struct object_id in push_refs_with_export()
135  . connect.c: use struct object_id in get_remote_heads()
136  . remote-curl: use struct object_id in parse_fetch()
137  . fetch-pack: use struct object_id in add_sought_entry_mem()
138  . object_id: convert struct ref to use object_id.
139  . sha1_file: introduce has_object_file() helper
140  . refs: convert some internal functions to use object_id
142  More transition from "unsigned char[40]" to "struct object_id".
144  While GSoC and other topics are actively moving existing code
145  around, this cannot go in; ejected from 'pu'.
148 * wp/sha1-name-negative-match (2015-06-08) 2 commits
149  - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
150  - test for '!' handling in rev-parse's named commits
152  Introduce "branch^{/!-<pattern>}" notation to name a commit
153  reachable from branch that does not match the given pattern.
155  Expecting a reroll.
158 * mk/utf8-no-iconv-warn (2015-06-08) 1 commit
159  - utf8.c: print warning about disabled iconv
161  Warn when a reencoding is requested in a build without iconv
162  support, as the end user is likely to get an unexpected result.  I
163  think the same level of safety should be added to a build with
164  iconv support when the specified encoding is not available, but the
165  patch does not go there.
167  Expecting a reroll.
170 * ak/format-patch-odir-config (2015-06-19) 1 commit
171  - format-patch: introduce format.outputDirectory configuration
173  Reroll exists but didn't pick it up as it seemed to be still
174  collecting review comments.
176  Expecting a reroll.
177  ($gmane/272180).
180 * mh/tempfile (2015-06-10) 14 commits
181  - credential-cache--daemon: use tempfile module
182  - credential-cache--daemon: delete socket from main()
183  - gc: use tempfile module to handle gc.pid file
184  - lock_repo_for_gc(): compute the path to "gc.pid" only once
185  - diff: use tempfile module
186  - setup_temporary_shallow(): use tempfile module
187  - write_shared_index(): use tempfile module
188  - register_tempfile(): new function to handle an existing temporary file
189  - tempfile: add several functions for creating temporary files
190  - register_tempfile_object(): new function, extracted from create_tempfile()
191  - commit_lock_file(): use get_locked_file_path()
192  - lockfile: remove some redundant functions
193  - tempfile: a new module for handling temporary files
194  - Move lockfile API documentation to lockfile.h
196  Rebuild "lockfile" API on top of a new "tempfile" API.
197  This needs rerolling, to include "tempfile.h" in "lockfile.h", at
198  least.
200  Expecting a reroll.
201  ($gmane/271353)
204 * ad/bisect-terms (2015-06-29) 4 commits
205  - bisect: allow setting any user-specified in 'git bisect start'
206  - bisect: add 'git bisect terms' to view the current terms
207  - bisect: add the terms old/new
208  - bisect: sanity check on terms
209  (this branch uses ad/bisect-cleanup.)
211  The use of 'good/bad' in "git bisect" made it confusing to use when
212  hunting for a state change that is not a regression (e.g. bugfix).
213  The command learned 'old/new' and then allows the end user to
214  say e.g. "bisect start --term-old=fast --term=new=slow" to find a
215  performance regression.
217  Michael's idea to make 'good/bad' more intelligent does have
218  certain attractiveness ($gname/272867), and makes some of the work
219  on this topic a moot point.
221  Will hold.
224 * mh/notes-allow-reading-treeish (2015-07-13) 1 commit
225  - notes: allow treeish expressions as notes ref
227  Some "git notes" operations, e.g. "git log --notes=<note>", should
228  be able to read notes from any tree-ish that is shaped like a notes
229  tree, but the notes infrastructure required that the argument must
230  be a ref under refs/notes/.  Loosen it to require a valid ref only
231  when the operation would update the notes (in which case we must
232  have a place to store the updated notes tree, iow, a ref).
234  Needs update to docs.
237 * sg/config-name-only (2015-05-28) 3 commits
238  - completion: use new 'git config' options to reliably list variable names
239  - SQUASH
240  - config: add options to list only variable names
242  "git config --list" output was hard to parse when values consist of
243  multiple lines.  Introduce a way to show only the keys.
245  Adding a single --name-only option may be a better way to go than
246  adding two new options.
248  Expecting a reroll.
251 * kk/log-merges-config (2015-04-21) 5 commits
252  - bash-completion: add support for git-log --merges= and log.merges
253  - t4202-log: add tests for --merges=
254  - Documentation: add git-log --merges= option and log.merges config. var
255  - log: honor log.merges= option
256  - revision: add --merges={show|only|hide} option
258  "git log" (but not other commands in the "log" family) learned to
259  pay attention to the log.merges configuration variable that can be
260  set to "show" (the normal behaviour), "only" (hide non-merge
261  commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
262  can be used to override the setting from the command line.
264  The documentation may need to be updated once more ($gmane/267250).
265  Waiting for a reroll.
268 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
269  - t/lib-git-svn: check same httpd module dirs as lib-httpd
270  - t/lib-httpd: load mod_unixd
272  This is the first two commits in a three-patch series $gmane/266962
273  Will be rerolled.
274  with updated log message ($gmane/268061).
277 * mh/numparse (2015-03-19) 14 commits
278  - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
279  - diff_opt_parse(): use convert_i() when handling "-l<num>"
280  - opt_arg(): simplify pointer handling
281  - opt_arg(): report errors parsing option values
282  - opt_arg(): use convert_i() in implementation
283  - opt_arg(): val is always non-NULL
284  - builtin_diff(): detect errors when parsing --unified argument
285  - handle_revision_opt(): use convert_ui() when handling "--abbrev="
286  - strtoul_ui(), strtol_i(): remove functions
287  - handle_revision_opt(): use convert_i() when handling "-<digit>"
288  - handle_revision_opt(): use skip_prefix() in many places
289  - write_subdirectory(): use convert_ui() for parsing mode
290  - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
291  - numparse: new module for parsing integral numbers
293  Many codepaths use unchecked use of strtol() and friends (or even
294  worse, atoi()).  Introduce a set of wrappers that try to be more
295  careful.
297  Expecting a reroll.
298  ($gmane/268058).
301 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
302  - "-" and "@{-1}" on various programs
304  Lose special case code to make a lone dash "-" mean the previous
305  branch aka "@{-1}" from a handful subcommands, and instead support
306  the notation throughout the system by reimplementing it at the
307  revisions layer.
309  Needs tests, documentation updates, etc.  Also does only a half-way
310  job dealing with range notation, which needs to be fixed before the
311  series goes anywhere.
314 * nd/list-files (2015-02-09) 21 commits
315  - t3080: tests for git-list-files
316  - list-files: -M aka diff-cached
317  - list-files -F: show submodules with the new indicator '&'
318  - list-files: add -F/--classify
319  - list-files: show directories as well as files
320  - list-files: do not show duplicate cached entries
321  - list-files: sort output and remove duplicates
322  - list-files: add -t back
323  - list-files: add -1 short for --no-column
324  - list-files: add -R/--recursive short for --max-depth=-1
325  - list-files: -u does not imply showing stages
326  - list-files: make alias 'ls' default to 'list-files'
327  - list-files: a user friendly version of ls-files and more
328  - ls-files: support --max-depth
329  - ls-files: add --column
330  - ls-files: add --color to highlight file names
331  - ls-files: buffer full item in strbuf before printing
332  - ls_colors.c: highlight submodules like directories
333  - ls_colors.c: add a function to color a file name
334  - ls_colors.c: parse color.ls.* from config file
335  - ls_colors.c: add $LS_COLORS parsing code
337  A new "git list-files" Porcelain command, "ls-files" with bells and
338  whistles.
340  Reroll to base on wt-status work ($gmane/265142) has seen some
341  positive discussions.
343  Waiting for a further polished reroll ($gmane/265534).
346 * nd/pathspec-strip-fix (2015-04-18) 1 commit
347  - pathspec: adjust prefixlen after striping trailing slash
349  Does not quite fix ($gmane/267614).
350  Will discard.
353 * jc/diff-b-m (2015-02-23) 5 commits
354  . WIPWIP
355  . WIP: diff-b-m
356  - diffcore-rename: allow easier debugging
357  - diffcore-rename.c: add locate_rename_src()
358  - diffcore-break: allow debugging
360  "git diff -B -M" produced incorrect patch when the postimage of a
361  completely rewritten file is similar to the preimage of a removed
362  file; such a resulting file must not be expressed as a rename from
363  other place.
365  The fix in this patch is broken, unfortunately.
368 * pw/remote-set-url-fetch (2014-11-26) 1 commit
369  - remote: add --fetch and --both options to set-url
371  Expecting a reroll.
374 * tr/remerge-diff (2014-11-10) 9 commits
375  - t4213: avoid "|" in sed regexp
376  - log --remerge-diff: show what the conflict resolution changed
377  - name-hash: allow dir hashing even when !ignore_case
378  - merge-recursive: allow storing conflict hunks in index
379  - merge_diff_mode: fold all merge diff variants into an enum
380  - combine-diff: do not pass revs->dense_combined_merges redundantly
381  - merge-recursive: -Xindex-only to leave worktree unchanged
382  - merge-recursive: internal flag to avoid touching the worktree
383  - merge-recursive: remove dead conditional in update_stages()
385  "log -p" output learns a new way to let users inspect a merge
386  commit by showing the differences between the automerged result
387  with conflicts the person who recorded the merge would have seen
388  and the final conflict resolution that was recorded in the merge.
390  Waiting for a reroll.
391  ($gmane/256591).
394 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
395  - perf-lib: add test_perf_cleanup target
396  - perf-lib: split starting the test from the execution
398  Add test_perf_cleanup shell function to the perf suite, that allows
399  the script writers to define a test with a clean-up action.
401  Will hold.
404 * jc/show-branch (2014-03-24) 5 commits
405  - show-branch: use commit slab to represent bitflags of arbitrary width
406  - show-branch.c: remove "all_mask"
407  - show-branch.c: abstract out "flags" operation
408  - show-branch.c: lift all_mask/all_revs to a global static
409  - show-branch.c: update comment style
411  Waiting for the final step to lift the hard-limit.
413 --------------------------------------------------
414 [Cooking]
416 * zb/userdiff-fountain (2015-07-23) 1 commit
417   (merged to 'next' on 2015-07-23 at e177995)
418  + userdiff: add support for Fountain documents
420  New userdiff pattern definition for fountain screenwriting markup
421  format.
423  Will merge to 'master'.
426 * as/sparse-checkout-removal (2015-07-21) 1 commit
427   (merged to 'next' on 2015-07-21 at ab94680)
428  + unpack-trees: don't update files with CE_WT_REMOVE set
430  "sparse checkout" misbehaved for a path that is excluded from the
431  checkout when switching between branches that differ at the path.
433  Will merge to 'master'.
436 * cb/uname-in-untracked (2015-07-17) 1 commit
437   (merged to 'next' on 2015-07-21 at d867af0)
438  + untracked: fix detection of uname(2) failure
440  An experimental "untracked cache" feature used uname(2) in a
441  slightly unportable way.
443  Will merge to 'master'.
446 * bw/portability-solaris (2015-07-20) 3 commits
447  - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
448  - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
449  - tests: modify tr expressions so that xpg4/tr handles it on Solaris
451  Needs another reroll? ($gmane/274296)
454 * es/worktree-add (2015-07-20) 5 commits
455   (merged to 'next' on 2015-07-20 at 76e840b)
456  + config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
457  + Documentation/git-worktree: wordsmith worktree-related manpages
458  + Documentation/config: fix stale "git prune --worktree" reference
459  + Documentation/git-worktree: fix incorrect reference to file "locked"
460  + Documentation/git-worktree: consistently use term "linked working tree"
461  (this branch is used by es/worktree-add-cleanup.)
463  Will merge to 'master'.
466 * sg/bash-prompt-untracked-optim (2015-07-20) 2 commits
467   (merged to 'next' on 2015-07-21 at e151fb7)
468  + bash prompt: faster untracked status indicator with untracked directories
469  + bash prompt: test untracked files status indicator with untracked dirs
471  Will merge to 'master'.
474 * es/worktree-add-cleanup (2015-07-24) 24 commits
475  - Documentation/config: mention "now" and "never" for 'expire' settings
476   (merged to 'next' on 2015-07-27 at 25f086d)
477  + Documentation/git-worktree: fix broken 'linkgit' invocation
478   (merged to 'next' on 2015-07-23 at ecb1e1a)
479  + checkout: drop intimate knowledge of newly created worktree
480  + worktree: populate via "git reset --hard" rather than "git checkout"
481  + worktree: avoid resolving HEAD unnecessarily
482  + worktree: make setup of new HEAD distinct from worktree population
483  + worktree: detect branch-name/detached and error conditions locally
484  + worktree: add_worktree: construct worktree-population command locally
485  + worktree: elucidate environment variables intended for child processes
486  + worktree: make branch creation distinct from worktree population
487  + worktree: add: suppress auto-vivication with --detach and no <branch>
488  + worktree: make --detach mutually exclusive with -b/-B
489  + worktree: introduce options container
490  + worktree: simplify new branch (-b/-B) option checking
491  + worktree: improve worktree setup message
492  + branch: publish die_if_checked_out()
493  + checkout: teach check_linked_checkout() about symbolic link HEAD
494  + checkout: check_linked_checkout: simplify symref parsing
495  + checkout: check_linked_checkout: improve "already checked out" aesthetic
496  + checkout: generalize die_if_checked_out() branch name argument
497  + checkout: die_if_checked_out: simplify strbuf management
498  + checkout: improve die_if_checked_out() robustness
499  + checkout: name check_linked_checkouts() more meaningfully
500  + checkout: avoid resolving HEAD unnecessarily
501  (this branch uses es/worktree-add.)
503  Remove the "new-worktree-mode" hack in "checkout" that was added in
504  nd/multiple-work-trees topic by updating the implementation of new
505  "worktree add".
507  $gmane/274647
510 * ib/scripted-parse-opt-better-hint-string (2015-07-15) 1 commit
511   (merged to 'next' on 2015-07-17 at 7bb1674)
512  + rev-parse --parseopt: allow [*=?!] in argument hints
514  The "rev-parse --parseopt" mode parsed the option specification
515  and the argument hint in a strange way to allow '=' and other
516  special characters in the option name while forbidding them from
517  the argument hint.  This made it impossible to define an option
518  like "--pair <key>=<value>" with "pair=key=value" specification,
519  which instead would have defined a "--pair=key <value>" option.
521  Will merge to 'master'.
524 * mh/fast-import-optimize-current-from (2015-07-13) 1 commit
525   (merged to 'next' on 2015-07-15 at 2be8b1f)
526  + fast-import: do less work when given "from" matches current branch head
528  Often a fast-import stream builds a new commit on top of the
529  previous commit it built, and it often unconditionally emits a
530  "from" command to specify the first parent, which can be omitted in
531  such a case.  This caused fast-import to forget the tree of the
532  previous commit and then re-read it from scratch, which was
533  inefficient.  Optimize for this common case.
535  Will merge to 'master'.
538 * dt/log-follow-config (2015-07-09) 1 commit
539   (merged to 'next' on 2015-07-10 at b8fbb43)
540  + log: add "log.follow" configuration variable
542  Add a new configuration variable to enable "--follow" automatically
543  when "git log" is run with one pathspec argument.
545  Will merge to 'master'.
548 * kn/tag-doc-fix (2015-07-10) 1 commit
549   (merged to 'next' on 2015-07-15 at 7bd6038)
550  + Documentation/tag: remove double occurance of "<pattern>"
552  Will merge to 'master'.
555 * se/doc-checkout-ours-theirs (2015-07-12) 1 commit
556   (merged to 'next' on 2015-07-21 at 5275f04)
557  + checkout: document subtlety around --ours/--theirs
559  A "rebase" replays changes of the local branch on top of something
560  else, as such they are placed in stage #3 and referred to as
561  "theirs", while the changes in the new base, typically a foreign
562  work, are placed in stage #2 and referred to as "ours".  Clarify
563  the "checkout --ours/--theirs".
565  Will merge to 'master'.
568 * pt/am-tests (2015-07-20) 12 commits
569   (merged to 'next' on 2015-07-21 at 8d3d5f4)
570  + t3901: test git-am encoding conversion
571  + t3418: non-interactive rebase --continue with rerere enabled
572  + t4150: tests for am --[no-]scissors
573  + t4150: am with post-applypatch hook
574  + t4150: am with pre-applypatch hook
575  + t4150: am with applypatch-msg hook
576  + t4150: am --resolved fails if index has unmerged entries
577  + t4150: am --resolved fails if index has no changes
578  + t4150: am refuses patches when paused
579  + t4151: am --abort will keep dirty index intact
580  + t4150: am fails if index is dirty
581  + t4150: am.messageid really adds the message id
583  Will merge to 'master'.
586 * kn/for-each-tag-branch (2015-07-13) 11 commits
587   (merged to 'next' on 2015-07-15 at bf5418f)
588  + for-each-ref: add '--contains' option
589  + ref-filter: implement '--contains' option
590  + parse-options.h: add macros for '--contains' option
591  + parse-option: rename parse_opt_with_commit()
592  + for-each-ref: add '--merged' and '--no-merged' options
593  + ref-filter: implement '--merged' and '--no-merged' options
594  + ref-filter: add parse_opt_merge_filter()
595  + for-each-ref: add '--points-at' option
596  + ref-filter: implement '--points-at' option
597  + tag: libify parse_opt_points_at()
598  + t6302: for-each-ref tests for ref-filter APIs
599  (this branch uses kn/for-each-ref.)
601  Port features over from tag -l and branch -l to for-each-ref
602  so that eventually the unified implementation can be used to
603  reimplement tag -l and branch -l, shared across all three, in
604  a follow-up series or two.
606  Will merge to 'master'.
609 * pt/am-builtin (2015-07-20) 46 commits
610   (merged to 'next' on 2015-07-23 at d5075f0)
611  + builtin-am: remove redirection to git-am.sh
612  + builtin-am: check for valid committer ident
613  + builtin-am: implement legacy -b/--binary option
614  + builtin-am: implement -i/--interactive
615  + builtin-am: support and auto-detect mercurial patches
616  + builtin-am: support and auto-detect StGit series files
617  + builtin-am: support and auto-detect StGit patches
618  + builtin-am: rerere support
619  + builtin-am: invoke post-applypatch hook
620  + builtin-am: invoke pre-applypatch hook
621  + builtin-am: invoke applypatch-msg hook
622  + builtin-am: support automatic notes copying
623  + builtin-am: invoke post-rewrite hook
624  + builtin-am: implement -S/--gpg-sign, commit.gpgsign
625  + builtin-am: implement --committer-date-is-author-date
626  + builtin-am: implement --ignore-date
627  + builtin-am: pass git-apply's options to git-apply
628  + builtin-am: implement --[no-]scissors
629  + builtin-am: support --keep-cr, am.keepcr
630  + builtin-am: implement --[no-]message-id, am.messageid
631  + builtin-am: implement -k/--keep, --keep-non-patch
632  + builtin-am: implement -u/--utf8
633  + builtin-am: handle stray state directory
634  + builtin-am: bypass git-mailinfo when --rebasing
635  + builtin-am: implement --rebasing mode
636  + builtin-am: implement --3way, am.threeWay
637  + cache-tree: introduce write_index_as_tree()
638  + builtin-am: implement -s/--signoff
639  + builtin-am: exit with user friendly message on failure
640  + builtin-am: implement -q/--quiet
641  + builtin-am: reject patches when there's a session in progress
642  + builtin-am: implement --abort
643  + builtin-am: implement --skip
644  + builtin-am: don't parse mail when resuming
645  + builtin-am: implement --resolved/--continue
646  + builtin-am: refuse to apply patches if index is dirty
647  + builtin-am: implement committing applied patch
648  + builtin-am: apply patch with git-apply
649  + builtin-am: extract patch and commit info with git-mailinfo
650  + builtin-am: auto-detect mbox patches
651  + builtin-am: split out mbox/maildir patches with git-mailsplit
652  + builtin-am: implement patch queue mechanism
653  + builtin-am: implement skeletal builtin am
654  + wrapper: implement xfopen()
655  + wrapper: implement xopen()
656  + Merge branch 'pt/pull-builtin' into pt/am-builtin
657  (this branch uses pt/pull-builtin; is tangled with kd/pull-rebase-autostash.)
659  Rewrite "am" in "C".
661  Still buggy around "am" and then "am -3" workflow.
664 * ad/bisect-cleanup (2015-06-29) 6 commits
665   (merged to 'next' on 2015-07-09 at 75e2a06)
666  + bisect: don't mix option parsing and non-trivial code
667  + bisect: simplify the addition of new bisect terms
668  + bisect: replace hardcoded "bad|good" by variables
669  + Documentation/bisect: revise overall content
670  + Documentation/bisect: move getting help section to the end
671  + bisect: correction of typo
672  (this branch is used by ad/bisect-terms.)
674  Code and documentation clean-up to "git bisect".
676  Will merge to 'master'.
679 * mh/fast-import-get-mark (2015-07-01) 1 commit
680   (merged to 'next' on 2015-07-15 at 5e034b9)
681  + fast-import: add a get-mark command
683  Will merge to 'master'.
686 * kb/i18n-doc (2015-07-01) 1 commit
687   (merged to 'next' on 2015-07-09 at a12c7b3)
688  + Documentation/i18n.txt: clarify character encoding support
690  Will merge to 'master'.
693 * dt/refs-backend-preamble (2015-07-21) 7 commits
694   (merged to 'next' on 2015-07-23 at 9dac423)
695  + git-stash: use update-ref --create-reflog instead of creating files
696  + update-ref and tag: add --create-reflog arg
697  + refs: add REF_FORCE_CREATE_REFLOG flag
698  + git-reflog: add exists command
699  + refs: new public ref function: safe_create_reflog
700  + refs: break out check for reflog autocreation
701  + refs.c: add err arguments to reflog functions
703  In preparation for allowing different "backends" to store the refs
704  in a way different from the traditional "one ref per file in $GIT_DIR
705  or in a $GIT_DIR/packed-refs file" filesystem storage, reduce
706  direct filesystem access to ref-like things like CHERRY_PICK_HEAD
707  from scripts and programs.
709  Will merge to 'master'.
712 * jk/date-mode-format (2015-07-20) 4 commits
713   (merged to 'next' on 2015-07-21 at 69f66be)
714  + strbuf: make strbuf_addftime more robust
715   (merged to 'next' on 2015-07-09 at a01bfc3)
716  + introduce "format" date-mode
717  + convert "enum date_mode" into a struct
718  + show-branch: use DATE_RELATIVE instead of magic number
720  Teach "git log" and friends a new "--date=format:..." option to
721  format timestamps using system's strftime(3).
723  Will merge to 'master'.
726 * nd/export-worktree (2015-06-26) 1 commit
727   (merged to 'next' on 2015-07-09 at 1581a9b)
728  + setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
730  Running an aliased command from a subdirectory when the .git thing
731  in the working tree is a gitfile pointing elsewhere did not work.
733  Will merge to 'master'.
736 * jc/rerere (2015-07-24) 21 commits
737  - rerere: un-nest merge() further
738  - rerere: use "struct rerere_id" instead of "char *" for conflict ID
739  - rerere: call conflict-ids IDs
740  - rerere: further clarify do_rerere_one_path()
741  - rerere: further de-dent do_plain_rerere()
742  - rerere: refactor "replay" part of do_plain_rerere()
743  - rerere: explain the remainder
744  - rerere: explain "rerere forget" codepath
745  - rerere: explain the primary codepath
746  - rerere: explain MERGE_RR management helpers
747  - rerere: fix benign off-by-one non-bug and clarify code
748  - rerere: explain the rerere I/O abstraction
749  - rerere: do not leak mmfile[] for a path with multiple stage #1 entries
750  - rerere: stop looping unnecessarily
751  - rerere: drop want_sp parameter from is_cmarker()
752  - rerere: report autoupdated paths only after actually updating them
753  - rerere: write out each record of MERGE_RR in one go
754  - rerere: lift PATH_MAX limitation
755  - rerere: plug conflict ID leaks
756  - rerere: handle conflicts with multiple stage #1 entries
757  - rerere: fix an off-by-one non-bug
758  (this branch is used by jc/rerere-multi.)
760  Code clean-up and minor fixes (so far).
763 * jc/rerere-multi (2015-07-24) 6 commits
764  . t4200: rerere a merge with two identical conflicts
765  . WIP
766  - rerere: delay the recording of preimage
767  - rerere: handle leftover rr-cache/$ID directory and postimage files
768  - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
769  - rerere: split conflict ID further
770  (this branch uses jc/rerere.)
772  This is a contination of jc/rerere topic.
775 * js/fsck-opt (2015-06-23) 19 commits
776   (merged to 'next' on 2015-07-10 at eb4da0a)
777  + fsck: support ignoring objects in `git fsck` via fsck.skiplist
778  + fsck: git receive-pack: support excluding objects from fsck'ing
779  + fsck: introduce `git fsck --connectivity-only`
780  + fsck: support demoting errors to warnings
781  + fsck: document the new receive.fsck.<msg-id> options
782  + fsck: allow upgrading fsck warnings to errors
783  + fsck: optionally ignore specific fsck issues completely
784  + fsck: disallow demoting grave fsck errors to warnings
785  + fsck: add a simple test for receive.fsck.<msg-id>
786  + fsck: make fsck_tag() warn-friendly
787  + fsck: handle multiple authors in commits specially
788  + fsck: make fsck_commit() warn-friendly
789  + fsck: make fsck_ident() warn-friendly
790  + fsck: report the ID of the error/warning
791  + fsck (receive-pack): allow demoting errors to warnings
792  + fsck: offer a function to demote fsck errors to warnings
793  + fsck: provide a function to parse fsck message IDs
794  + fsck: introduce identifiers for fsck messages
795  + fsck: introduce fsck options
797  Allow ignoring fsck errors on specific set of known-to-be-bad
798  objects, and also tweaking warning level of various kinds of non
799  critical breakages reported.
801  Will merge to 'master'.
804 * bc/gpg-verify-raw (2015-06-22) 7 commits
805   (merged to 'next' on 2015-06-24 at 08a1164)
806  + verify-tag: add option to print raw gpg status information
807  + verify-commit: add option to print raw gpg status information
808  + gpg: centralize printing signature buffers
809  + gpg: centralize signature check
810  + verify-commit: add test for exit status on untrusted signature
811  + verify-tag: share code with verify-commit
812  + verify-tag: add tests
814  "git verify-tag" and "git verify-commit" have been taught to share
815  more code, and then learned to optionally show the verification
816  message from the underlying GPG implementation.
818  Will merge to 'master'.
821 * cb/parse-magnitude (2015-06-22) 2 commits
822   (merged to 'next' on 2015-06-24 at 2fd7205)
823  + parse-options: move unsigned long option parsing out of pack-objects.c
824  + test-parse-options: update to handle negative ints
826  Move machinery to parse human-readable scaled numbers like 1k, 4M,
827  and 2G as an option parameter's value from pack-objects to
828  parse-options API, to make it available to other codepaths.
830  Will merge to 'master'.
833 * jk/cat-file-batch-all (2015-06-26) 8 commits
834   (merged to 'next' on 2015-07-10 at 80200cc)
835  + cat-file: sort and de-dup output of --batch-all-objects
836  + cat-file: add --batch-all-objects option
837  + cat-file: split batch_one_object into two stages
838  + cat-file: stop returning value from batch_one_object
839  + cat-file: add --buffer option
840  + cat-file: move batch_options definition to top of file
841  + cat-file: minor style fix in options list
842  + Merge branch 'jk/maint-for-each-packed-object' into jk/cat-file-batch-all
844  "cat-file" learned "--batch-all-objects" option to enumerate all
845  available objects in the repository more quickly than "rev-list
846  --all --objects" (the output includes unreachable objects, though).
848  Will merge to 'master'.
851 * jk/pkt-log-pack (2015-06-16) 3 commits
852   (merged to 'next' on 2015-07-10 at ba33212)
853  + pkt-line: support tracing verbatim pack contents
854  + pkt-line: tighten sideband PACK check when tracing
855  + pkt-line: simplify starts_with checks in packet tracing
857  Enhance packet tracing machinery to allow capturing an incoming
858  pack data to a file for debugging.
860  Will merge to 'master'.
863 * kn/for-each-ref (2015-06-15) 11 commits
864   (merged to 'next' on 2015-06-24 at 1a3a734)
865  + ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
866  + for-each-ref: introduce filter_refs()
867  + ref-filter: move code from 'for-each-ref'
868  + ref-filter: add 'ref-filter.h'
869  + for-each-ref: rename variables called sort to sorting
870  + for-each-ref: rename some functions and make them public
871  + for-each-ref: introduce 'ref_array_clear()'
872  + for-each-ref: introduce new structures for better organisation
873  + for-each-ref: rename 'refinfo' to 'ref_array_item'
874  + for-each-ref: clean up code
875  + for-each-ref: extract helper functions out of grab_single_ref()
876  (this branch is used by kn/for-each-tag-branch.)
878  GSoC project to rebuild ref listing by branch and tag based on the
879  for-each-ref machinery.  This is its first part.
881  Will merge to 'master'.
884 * mh/init-delete-refs-api (2015-06-22) 19 commits
885   (merged to 'next' on 2015-07-10 at 121b26e)
886  + delete_ref(): use the usual convention for old_sha1
887  + cmd_update_ref(): make logic more straightforward
888  + update_ref(): don't read old reference value before delete
889  + check_branch_commit(): make first parameter const
890  + refs.h: add some parameter names to function declarations
891  + refs: move the remaining ref module declarations to refs.h
892  + initial_ref_transaction_commit(): check for ref D/F conflicts
893  + initial_ref_transaction_commit(): check for duplicate refs
894  + refs: remove some functions from the module's public interface
895  + initial_ref_transaction_commit(): function for initial ref creation
896  + repack_without_refs(): make function private
897  + prune_refs(): use delete_refs()
898  + prune_remote(): use delete_refs()
899  + delete_refs(): bail early if the packed-refs file cannot be rewritten
900  + delete_refs(): make error message more generic
901  + delete_refs(): new function for the refs API
902  + delete_ref(): handle special case more explicitly
903  + remove_branches(): remove temporary
904  + delete_ref(): move declaration to refs.h
906  Clean up refs API and make "git clone" less intimate with the
907  implementation detail.
909  Will merge to 'master'.
912 * mh/replace-refs (2015-06-12) 1 commit
913   (merged to 'next' on 2015-06-24 at cb13adf)
914  + Allow to control where the replace refs are looked for
916  Add an environment variable to tell Git to look into refs hierarchy
917  other than refs/replace/ for the object replacement data.
919  Will merge to 'master'.
922 * gp/status-rebase-i-info (2015-07-06) 4 commits
923   (merged to 'next' on 2015-07-10 at b121298)
924  + status: add new tests for status during rebase -i
925  + status: give more information during rebase -i
926  + status: differentiate interactive from non-interactive rebases
927  + status: factor two rebase-related messages together
929  Teach "git status" to show a more detailed information regarding
930  the "rebase -i" session in progress.
932  Will merge to 'master'.
935 * mr/rebase-i-customize-insn-sheet (2015-06-15) 1 commit
936   (merged to 'next' on 2015-07-10 at ec383cd)
937  + git-rebase--interactive.sh: add config option for custom instruction format
939  "git rebase -i"'s list of todo is made configurable.
941  Will merge to 'master'.
944 * pt/am-foreign (2015-06-15) 5 commits
945   (merged to 'next' on 2015-06-24 at 838c702)
946  + am: teach mercurial patch parser how to read from stdin
947  + am: use gmtime() to parse mercurial patch date
948  + t4150: test applying StGit series
949  + am: teach StGit patch parser how to read from stdin
950  + t4150: test applying StGit patch
952  Various enhancements around "git am" reading patches generated by
953  foreign SCM.
955  Will merge to 'master'.
958 * pt/pull-builtin (2015-06-18) 19 commits
959   (merged to 'next' on 2015-07-10 at 07b1794)
960  + pull: remove redirection to git-pull.sh
961  + pull --rebase: error on no merge candidate cases
962  + pull --rebase: exit early when the working directory is dirty
963  + pull: configure --rebase via branch.<name>.rebase or pull.rebase
964  + pull: teach git pull about --rebase
965  + pull: set reflog message
966  + pull: implement pulling into an unborn branch
967  + pull: fast-forward working tree if head is updated
968  + pull: check if in unresolved merge state
969  + pull: support pull.ff config
970  + pull: error on no merge candidates
971  + pull: pass git-fetch's options to git-fetch
972  + pull: pass git-merge's options to git-merge
973  + pull: pass verbosity, --progress flags to fetch and merge
974  + pull: implement fetch + merge
975  + pull: implement skeletal builtin pull
976  + argv-array: implement argv_array_pushv()
977  + parse-options-cb: implement parse_opt_passthru_argv()
978  + parse-options-cb: implement parse_opt_passthru()
979  (this branch is used by kd/pull-rebase-autostash and pt/am-builtin.)
981  Reimplement 'git pull' in C.
983  Will merge to 'master'.
986 * rl/send-email-aliases (2015-07-07) 10 commits
987   (merged to 'next' on 2015-07-09 at c60553d)
988  + send-email: suppress meaningless whitespaces in from field
989  + send-email: allow multiple emails using --cc, --to and --bcc
990  + send-email: consider quote as delimiter instead of character
991  + send-email: reduce dependencies impact on parse_address_line
992  + send-email: minor code refactoring
993  + send-email: allow use of aliases in the From field of --compose mode
994  + send-email: refactor address list process
995  + t9001-send-email: refactor header variable fields replacement
996  + send-email: allow aliases in patch header and command script outputs
997  + t9001-send-email: move script creation in a setup test
999  "git send-email" now performs alias-expansion on names that are
1000  given via --cccmd, etc.
1002  This round comes with a lot more enhanced e-mail address parser,
1003  which makes it a bit scary, but as long as it works as designed, it
1004  makes it wonderful ;-).
1006  Will merge to 'master'.
1009 * gr/rebase-i-drop-warn (2015-06-30) 3 commits
1010   (merged to 'next' on 2015-07-15 at 6f4f2c8)
1011  + git rebase -i: add static check for commands and SHA-1
1012  + git rebase -i: warn about removed commits
1013  + git-rebase -i: add command "drop" to remove a commit
1015  Add "drop commit-object-name subject" command as another way to
1016  skip replaying of a commit in "rebase -i", and then punish those
1017  who do not use it (and instead just remove the lines) by throwing
1018  a warning.
1020  Will merge to 'master'.
1023 * jc/push-tags-also (2015-05-29) 1 commit
1024  - push --tags: push tags *in addition to* other stuff
1026  "git fetch --tags" learned to fetch tags in addition to other stuff
1027  a few years ago, but "git push --tags" didn't.  Now it does.
1029  A change to push out more than before always invites "what if the
1030  user makes a mistake" worries.
1032  Will discard.
1035 * jc/commit-slab (2015-05-22) 1 commit
1036   (merged to 'next' on 2015-07-15 at 4c83475)
1037  + commit-slab: introduce slabname##_peek() function
1039  Memory use reduction when commit-slab facility is used to annotate
1040  sparsely (which is not recommended in the first place).
1042  Will merge to 'master'.
1045 * ee/clean-remove-dirs (2015-06-26) 6 commits
1046   (merged to 'next' on 2015-06-29 at d595659)
1047  + read_gitfile_gently: fix use-after-free
1048   (merged to 'next' on 2015-06-24 at 7c27821)
1049  + clean: improve performance when removing lots of directories
1050  + p7300: add performance tests for clean
1051  + t7300: add tests to document behavior of clean and nested git
1052  + setup: sanity check file size in read_gitfile_gently
1053  + setup: add gentle version of read_gitfile
1055  Replace "is this subdirectory a separate repository that should not
1056  be touched?" check "git clean" does by checking if it has .git/HEAD
1057  using the submodule-related code with a more optimized check.
1059  Will merge to 'master'.
1062 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
1063   (merged to 'next' on 2015-05-28 at 6bfd8b9)
1064  + merge: drop 'git merge <message> HEAD <commit>' syntax
1066  Stop supporting "git merge <message> HEAD <commit>" syntax that
1067  has been deprecated since October 2007.
1069  Will keep in 'next' during the 2.5 cycle.
1071 --------------------------------------------------
1072 [Discarded]
1074 * tf/gitweb-project-listing (2015-03-19) 4 commits
1075  - gitweb: make category headings into links when they are directories
1076  - gitweb: optionally set project category from its pathname
1077  - gitweb: add a link under the search box to clear a project filter
1078  - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
1080  Update gitweb to make it more pleasant to deal with a hierarchical
1081  forest of repositories.
1083  A fresh restart will not be rejected, but ejected from my tree for
1084  now.