What's cooking (2015/07 #02)
[git.git] / whats-cooking.txt
blob995cadb73137d6d5249b2ec3d81a35c8baee594b
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jul 2015, #02; Tue, 7)
4 X-master-at: 5bdb7a78adf2a2656a1915e6fa656aecb45c1fc3
5 X-next-at: a12d9f81e25048c9843da262f526bf229e6bb487
7 What's cooking in git.git (Jul 2015, #02; Tue, 7)
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 As there is at least one new topic in 2.5-rc that has a real and
15 severe breakage (I haven't merged the fix for it to 'master' yet),
16 we may probably need to delay the final by at least a few weeks.
18 Projects from GSoC students and Ensimag students have also been a
19 pleasure to work with.  I'd have to say that this year is much
20 better than some previous years.
22 You can find the changes described here in the integration branches
23 of the repositories listed at
25     http://git-blame.blogspot.com/p/git-public-repositories.html
27 --------------------------------------------------
28 [New Topics]
30 * es/worktree-add (2015-07-07) 23 commits
31  - checkout: retire --ignore-other-worktrees in favor of --force
32  - worktree: add: auto-vivify new branch when <branch> is omitted
33  - worktree: add: make -b/-B default to HEAD when <branch> is omitted
34  - worktree: extract basename computation to new function
35  - checkout: require worktree unconditionally
36  - checkout: retire --to option
37  - tests: worktree: retrofit "checkout --to" tests for "worktree add"
38  - worktree: add -b/-B options
39  - worktree: add --detach option
40  - worktree: add --force option
41  - worktree: introduce "add" command
42  - checkout: drop 'checkout_opts' dependency from prepare_linked_checkout
43  - checkout: make --to unconditionally verbose
44  - checkout: prepare_linked_checkout: drop now-unused 'new' argument
45  - checkout: relocate --to's "no branch specified" check
46  - checkout: fix bug with --to and relative HEAD
47  - Documentation/git-worktree: add EXAMPLES section
48  - Documentation/git-worktree: add high-level 'lock' overview
49  - Documentation/git-worktree: split technical info from general description
50  - Documentation/git-worktree: add BUGS section
51  - Documentation: move linked worktree description from checkout to worktree
52  - Documentation/git-worktree: associate options with commands
53  - Documentation/git-checkout: fix incorrect worktree prune command
54  (this branch uses nd/multiple-work-trees.)
56  Update to the "linked checkout" in 2.5.0-rc1; while I very much
57  like what I see in this series, I think it does not work well with
58  the date-based release schedule for v2.5, and as we've been
59  labelling the feature with "experimental, UI will change" warning,
60  I am tempted to cook this (or a reroll of it) in 'next' and shoot
61  for a refined version of it in 2.6, rather than delaying 2.5 final.
63  An alternative obviously is to slip 2.5 final for a few weeks,
64  waiting for this and possibly other hotfix topics to mature.
66  Undecided.
69 * jc/fix-alloc-sortbuf-in-index-pack (2015-07-04) 1 commit
70   (merged to 'next' on 2015-07-06 at c05da06)
71  + index-pack: fix allocation of sorted_by_pos array
73  Another hotfix for what is in 2.5-rc but not in 2.4
75  The alternative to slip 2.5 final for a few weeks starting to
76  become more and more attractive...
79 * jc/unexport-git-pager-in-use-in-pager (2015-07-03) 1 commit
80  - pager: do not leak "GIT_PAGER_IN_USE" to the pager
82  When you say "!<ENTER>" while running say "git log", you'd confuse
83  yourself in the resulting shell, that may look as if you took
84  control back to the original shell you spawned "git log" from but
85  that isn't what is happening.  To that new shell, we leaked
86  GIT_PAGER_IN_USE environment variable that was meant as a local
87  communication between the original "Git" and subprocesses that was
88  spawned by it after we launched the pager, which caused many
89  "interesting" things to happen, e.g. "git diff | cat" still paints
90  its output in color by default.
92  Stop leaking that environment variable to the pager's half of the
93  fork; we only need it on "Git" side when we spawn the pager.
95  Will merge to 'next'.
98 * mh/strbuf-read-file-returns-ssize-t (2015-07-03) 1 commit
99  - strbuf: strbuf_read_file() should return ssize_t
101  Will merge to 'next'.
104 * mm/branch-doc-updates (2015-07-06) 2 commits
105  - Documentation/branch: document -M and -D in terms of --force
106  - Documentation/branch: document -d --force and -m --force
108  Will merge to 'next'.
111 * pt/am-tests (2015-07-07) 12 commits
112  - t3901: test git-am encoding conversion
113  - t3418: non-interactive rebase --continue with rerere enabled
114  - t4150: tests for am --[no-]scissors
115  - t4150: am with post-applypatch hook
116  - t4150: am with pre-applypatch hook
117  - t4150: am with applypatch-msg hook
118  - t4150: am --resolved fails if index has unmerged entries
119  - t4150: am --resolved fails if index has no changes
120  - t4150: am refuses patches when paused
121  - t4151: am --abort will keep dirty index intact
122  - t4150: am fails if index is dirty
123  - t4150: am.messageid really adds the message id
125  Will merge to 'next'.
128 * kn/for-each-tag-branch (2015-07-07) 11 commits
129  - for-each-ref: add '--contains' option
130  - ref-filter: implement '--contains' option
131  - parse-options.h: add macros for '--contains' option
132  - parse-option: rename parse_opt_with_commit()
133  - for-each-ref: add '--merged' and '--no-merged' options
134  - ref-filter: implement '--merged' and '--no-merged' options
135  - ref-filter: add parse_opt_merge_filter()
136  - for-each-ref: add '--points-at' option
137  - ref-filter: implement '--points-at' option
138  - tag: libify parse_opt_points_at()
139  - t6302: for-each-ref tests for ref-filter APIs
140  (this branch uses kn/for-each-ref.)
143 * pt/am-builtin (2015-07-07) 45 commits
144  - builtin-am: remove redirection to git-am.sh
145  - builtin-am: check for valid committer ident
146  - builtin-am: implement legacy -b/--binary option
147  - builtin-am: implement -i/--interactive
148  - builtin-am: support and auto-detect mercurial patches
149  - builtin-am: support and auto-detect StGit series files
150  - builtin-am: support and auto-detect StGit patches
151  - builtin-am: rerere support
152  - builtin-am: invoke post-applypatch hook
153  - builtin-am: invoke pre-applypatch hook
154  - builtin-am: invoke applypatch-msg hook
155  - builtin-am: support automatic notes copying
156  - builtin-am: invoke post-rewrite hook
157  - builtin-am: implement -S/--gpg-sign, commit.gpgsign
158  - builtin-am: implement --committer-date-is-author-date
159  - builtin-am: implement --ignore-date
160  - builtin-am: pass git-apply's options to git-apply
161  - builtin-am: implement --[no-]scissors
162  - builtin-am: support --keep-cr, am.keepcr
163  - builtin-am: implement --[no-]message-id, am.messageid
164  - builtin-am: implement -k/--keep, --keep-non-patch
165  - builtin-am: implement -u/--utf8
166  - builtin-am: handle stray state directory
167  - builtin-am: bypass git-mailinfo when --rebasing
168  - builtin-am: implement --rebasing mode
169  - builtin-am: implement --3way, am.threeWay
170  - cache-tree: introduce write_index_as_tree()
171  - builtin-am: implement -s/--signoff
172  - builtin-am: exit with user friendly message on failure
173  - builtin-am: implement -q/--quiet
174  - builtin-am: reject patches when there's a session in progress
175  - builtin-am: implement --abort
176  - builtin-am: implement --skip
177  - builtin-am: implement --resolved/--continue
178  - builtin-am: refuse to apply patches if index is dirty
179  - builtin-am: implement committing applied patch
180  - builtin-am: apply patch with git-apply
181  - builtin-am: extract patch and commit info with git-mailinfo
182  - builtin-am: auto-detect mbox patches
183  - builtin-am: split out mbox/maildir patches with git-mailsplit
184  - builtin-am: implement patch queue mechanism
185  - builtin-am: implement skeletal builtin am
186  - wrapper: implement xfopen()
187  - wrapper: implement xopen()
188  - Merge branch 'pt/pull-builtin' into pt/am-builtin
189  (this branch uses pt/pull-builtin.)
191  Will merge to 'next'.
194 * ad/bisect-cleanup (2015-06-29) 6 commits
195  - bisect: don't mix option parsing and non-trivial code
196  - bisect: simplify the addition of new bisect terms
197  - bisect: replace hardcoded "bad|good" by variables
198  - Documentation/bisect: revise overall content
199  - Documentation/bisect: move getting help section to the end
200  - bisect: correction of typo
201  (this branch is used by ad/bisect-terms.)
203  Code and documentation clean-up to "git bisect".
205  Will merge to 'next'.
207 --------------------------------------------------
208 [Stalled]
210 * sg/config-name-only (2015-05-28) 3 commits
211  - completion: use new 'git config' options to reliably list variable names
212  - SQUASH
213  - config: add options to list only variable names
215  "git config --list" output was hard to parse when values consist of
216  multiple lines.  Introduce a way to show only the keys.
218  Adding a single --name-only option may be a better way to go than
219  adding two new options.
221  Expecting a reroll.
224 * kk/log-merges-config (2015-04-21) 5 commits
225  - bash-completion: add support for git-log --merges= and log.merges
226  - t4202-log: add tests for --merges=
227  - Documentation: add git-log --merges= option and log.merges config. var
228  - log: honor log.merges= option
229  - revision: add --merges={show|only|hide} option
231  "git log" (but not other commands in the "log" family) learned to
232  pay attention to the log.merges configuration variable that can be
233  set to "show" (the normal behaviour), "only" (hide non-merge
234  commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
235  can be used to override the setting from the command line.
237  The documentation may need to be updated once more ($gmane/267250).
238  Waiting for a reroll.
241 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
242  - t/lib-git-svn: check same httpd module dirs as lib-httpd
243  - t/lib-httpd: load mod_unixd
245  This is the first two commits in a three-patch series $gmane/266962
246  Will be rerolled.
247  with updated log message ($gmane/268061).
250 * mh/numparse (2015-03-19) 14 commits
251  - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
252  - diff_opt_parse(): use convert_i() when handling "-l<num>"
253  - opt_arg(): simplify pointer handling
254  - opt_arg(): report errors parsing option values
255  - opt_arg(): use convert_i() in implementation
256  - opt_arg(): val is always non-NULL
257  - builtin_diff(): detect errors when parsing --unified argument
258  - handle_revision_opt(): use convert_ui() when handling "--abbrev="
259  - strtoul_ui(), strtol_i(): remove functions
260  - handle_revision_opt(): use convert_i() when handling "-<digit>"
261  - handle_revision_opt(): use skip_prefix() in many places
262  - write_subdirectory(): use convert_ui() for parsing mode
263  - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
264  - numparse: new module for parsing integral numbers
266  Many codepaths use unchecked use of strtol() and friends (or even
267  worse, atoi()).  Introduce a set of wrappers that try to be more
268  careful.
270  Expecting a reroll.
271  ($gmane/268058).
274 * tf/gitweb-project-listing (2015-03-19) 5 commits
275  - gitweb: make category headings into links when they are directories
276  - gitweb: optionally set project category from its pathname
277  - gitweb: add a link under the search box to clear a project filter
278  - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
279  - gitweb: fix typo in man page
281  Update gitweb to make it more pleasant to deal with a hierarchical
282  forest of repositories.
284  Any comments from those who use or have their own code in Gitweb?
287 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
288  - "-" and "@{-1}" on various programs
290  Lose special case code to make a lone dash "-" mean the previous
291  branch aka "@{-1}" from a handful subcommands, and instead support
292  the notation throughout the system by reimplementing it at the
293  revisions layer.
295  Needs tests, documentation updates, etc.  Also does only a half-way
296  job dealing with range notation, which needs to be fixed before the
297  series goes anywhere.
300 * nd/list-files (2015-02-09) 21 commits
301  - t3080: tests for git-list-files
302  - list-files: -M aka diff-cached
303  - list-files -F: show submodules with the new indicator '&'
304  - list-files: add -F/--classify
305  - list-files: show directories as well as files
306  - list-files: do not show duplicate cached entries
307  - list-files: sort output and remove duplicates
308  - list-files: add -t back
309  - list-files: add -1 short for --no-column
310  - list-files: add -R/--recursive short for --max-depth=-1
311  - list-files: -u does not imply showing stages
312  - list-files: make alias 'ls' default to 'list-files'
313  - list-files: a user friendly version of ls-files and more
314  - ls-files: support --max-depth
315  - ls-files: add --column
316  - ls-files: add --color to highlight file names
317  - ls-files: buffer full item in strbuf before printing
318  - ls_colors.c: highlight submodules like directories
319  - ls_colors.c: add a function to color a file name
320  - ls_colors.c: parse color.ls.* from config file
321  - ls_colors.c: add $LS_COLORS parsing code
323  A new "git list-files" Porcelain command, "ls-files" with bells and
324  whistles.
326  Reroll to base on wt-status work ($gmane/265142) has seen some
327  positive discussions.
329  Waiting for a further polished reroll ($gmane/265534).
332 * nd/pathspec-strip-fix (2015-04-18) 1 commit
333  - pathspec: adjust prefixlen after striping trailing slash
335  Does not quite fix ($gmane/267614).
336  Will discard.
339 * jc/diff-b-m (2015-02-23) 5 commits
340  . WIPWIP
341  . WIP: diff-b-m
342  - diffcore-rename: allow easier debugging
343  - diffcore-rename.c: add locate_rename_src()
344  - diffcore-break: allow debugging
346  "git diff -B -M" produced incorrect patch when the postimage of a
347  completely rewritten file is similar to the preimage of a removed
348  file; such a resulting file must not be expressed as a rename from
349  other place.
351  The fix in this patch is broken, unfortunately.
354 * pw/remote-set-url-fetch (2014-11-26) 1 commit
355  - remote: add --fetch and --both options to set-url
357  Expecting a reroll.
360 * tr/remerge-diff (2014-11-10) 9 commits
361  - t4213: avoid "|" in sed regexp
362  - log --remerge-diff: show what the conflict resolution changed
363  - name-hash: allow dir hashing even when !ignore_case
364  - merge-recursive: allow storing conflict hunks in index
365  - merge_diff_mode: fold all merge diff variants into an enum
366  - combine-diff: do not pass revs->dense_combined_merges redundantly
367  - merge-recursive: -Xindex-only to leave worktree unchanged
368  - merge-recursive: internal flag to avoid touching the worktree
369  - merge-recursive: remove dead conditional in update_stages()
371  "log -p" output learns a new way to let users inspect a merge
372  commit by showing the differences between the automerged result
373  with conflicts the person who recorded the merge would have seen
374  and the final conflict resolution that was recorded in the merge.
376  Waiting for a reroll.
377  ($gmane/256591).
380 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
381  - perf-lib: add test_perf_cleanup target
382  - perf-lib: split starting the test from the execution
384  Add test_perf_cleanup shell function to the perf suite, that allows
385  the script writers to define a test with a clean-up action.
387  Will hold.
390 * jc/show-branch (2014-03-24) 5 commits
391  - show-branch: use commit slab to represent bitflags of arbitrary width
392  - show-branch.c: remove "all_mask"
393  - show-branch.c: abstract out "flags" operation
394  - show-branch.c: lift all_mask/all_revs to a global static
395  - show-branch.c: update comment style
397  Waiting for the final step to lift the hard-limit.
399 --------------------------------------------------
400 [Cooking]
402 * jk/rev-list-no-bitmap-while-pruning (2015-07-01) 1 commit
403  - rev-list: disable --use-bitmap-index when pruning commits
405  A minor bugfix when pack bitmap was brought in.
407  Will merge to 'next'.
410 * kb/config-unmap-before-renaming (2015-06-30) 1 commit
411  - config.c: fix writing config files on Windows network shares
413  Will merge to 'next'.
416 * ls/hint-rev-list-count (2015-07-01) 1 commit
417  - rev-list: add --count to usage guide
419  Will merge to 'next'.
422 * mh/fast-import-get-mark (2015-07-01) 1 commit
423  - fast-import: add a get-mark command
425  Will merge to 'next'.
428 * nd/dwim-wildcards-as-pathspecs (2015-07-01) 1 commit
429  - Add tests for wildcard "path vs ref" disambiguation
431  Will merge to 'next' and then to 'master'.
434 * kb/i18n-doc (2015-07-01) 1 commit
435  - Documentation/i18n.txt: clarify character encoding support
437  Will merge to 'next'.
440 * kb/use-nsec-doc (2015-07-01) 1 commit
441  - Makefile / racy-git.txt: clarify USE_NSEC prerequisites
443  Will merge to 'next'.
446 * dt/refs-backend-preamble (2015-06-30) 8 commits
447  - git-stash: use git-reflog instead of creating files
448  - SQUASH???
449  - git-reflog: add create and exists functions
450  - refs: new public ref function: safe_create_reflog
451  - refs: break out check for reflog autocreation
452  - bisect: treat BISECT_HEAD as a ref
453  - cherry-pick: treat CHERRY_PICK_HEAD and REVERT_HEAD as refs
454  - refs.c: add err arguments to reflog functions
456  In preparation for allowing different "backends" to store the refs
457  in a way different from the traditional "one ref per file in $GIT_DIR
458  or in a $GIT_DIR/packed-refs file" filesystem storage, reduce
459  direct filesystem access to ref-like things like CHERRY_PICK_HEAD
460  from scripts and programs.
462  Will merge to 'next' after squashing the fix in.
465 * et/http-proxyauth (2015-06-29) 1 commit
466  - http: always use any proxy auth method available
468  We used to ask libCURL to use the most secure authentication method
469  available when talking to an HTTP proxy only when we were told to
470  talk to one via configuration variables.  We now ask libCURL to
471  always use the most secure authentication method, because the user
472  can tell libCURL to use an HTTP proxy via an environment variable
473  without using configuration variables.
475  Looked sensible.  An extra set of eyes appreciated, but I think
476  this is ready.
478  Will merge to 'next'.
481 * jc/fsck-retire-require-eoh (2015-06-28) 1 commit
482  - fsck: it is OK for a tag and a commit to lack the body
484  A fix to a minor regression to "git fsck" in v2.2 era that started
485  complaining about a body-less tag object when it lacks a separator
486  empty line after its header to separate it with a non-existent body.
488  Will merge to 'next'.
491 * jk/date-mode-format (2015-06-29) 3 commits
492  - introduce "format" date-mode
493  - convert "enum date_mode" into a struct
494  - show-branch: use DATE_RELATIVE instead of magic number
496  Teach "git log" and friends a new "--date=format:..." option to
497  format timestamps using system's strftime(3).
499  Will merge to 'next'.
502 * jk/still-interesting (2015-06-29) 1 commit
503  - revision.c: remove unneeded check for NULL
505  Code clean-up.
507  Will merge to 'next'.
510 * nd/export-worktree (2015-06-26) 1 commit
511  - setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
513  Running an aliased command from a subdirectory when the .git thing
514  in the working tree is a gitfile pointing elsewhere did not work.
516  Will merge to 'next'.
519 * sb/p5310-and-chain (2015-06-26) 1 commit
520  - p5310: Fix broken && chain in performance test
522  Code clean-up.
524  Will merge to 'next'.
527 * jc/rerere (2015-07-06) 19 commits
528  . t4200: rerere a merge with two identical conflicts
529  . rerere: un-nest merge() further
530  . rerere: use "struct rerere_id" instead of "char *" for conflict ID
531  - rerere: call conflict-ids IDs
532  - rerere: further clarify do_rerere_one_path()
533  - rerere: further de-dent do_plain_rerere()
534  - rerere: refactor "replay" part of do_plain_rerere()
535  - rerere: explain the remainder
536  - rerere: explain "rerere forget" codepath
537  - rerere: explain the primary codepath
538  - rerere: explain MERGE_RR management helpers
539  - rerere: explain the rerere I/O abstraction
540  - rerere: stop looping unnecessarily
541  - rerere: drop want_sp parameter from is_cmarker()
542  - rerere: report autoupdated paths only after actually updating them
543  - rerere: write out each record of MERGE_RR in one go
544  - rerere: lift PATH_MAX limitation
545  - rerere: plug conflict ID leaks
546  - rerere: fix an off-by-one non-bug
548  Code clean-up and minor fixes (so far).
551 * ad/bisect-terms (2015-06-29) 4 commits
552  - bisect: allow setting any user-specified in 'git bisect start'
553  - bisect: add 'git bisect terms' to view the current terms
554  - bisect: add the terms old/new
555  - bisect: sanity check on terms
556  (this branch uses ad/bisect-cleanup.)
558  The use of 'good/bad' in "git bisect" made it confusing to use when
559  hunting for a state change that is not a regression (e.g. bugfix).
560  The command learned 'old/new' and then allows the end user to
561  say e.g. "bisect start --term-old=fast --term=new=slow" to find a
562  performance regression.
564  Michael's idea to make 'good/bad' more intelligent does have
565  certain attractiveness ($gname/272867), and makes some of the work
566  on this topic a moot point.
569 * mh/tempfile (2015-06-10) 14 commits
570  - credential-cache--daemon: use tempfile module
571  - credential-cache--daemon: delete socket from main()
572  - gc: use tempfile module to handle gc.pid file
573  - lock_repo_for_gc(): compute the path to "gc.pid" only once
574  - diff: use tempfile module
575  - setup_temporary_shallow(): use tempfile module
576  - write_shared_index(): use tempfile module
577  - register_tempfile(): new function to handle an existing temporary file
578  - tempfile: add several functions for creating temporary files
579  - register_tempfile_object(): new function, extracted from create_tempfile()
580  - commit_lock_file(): use get_locked_file_path()
581  - lockfile: remove some redundant functions
582  - tempfile: a new module for handling temporary files
583  - Move lockfile API documentation to lockfile.h
585  Rebuild "lockfile" API on top of a new "tempfile" API.
586  This needs rerolling, to include "tempfile.h" in "lockfile.h", at
587  least.
589  Expecting a reroll.
590  ($gmane/271353)
593 * js/fsck-opt (2015-06-23) 19 commits
594  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
595  - fsck: git receive-pack: support excluding objects from fsck'ing
596  - fsck: introduce `git fsck --connectivity-only`
597  - fsck: support demoting errors to warnings
598  - fsck: document the new receive.fsck.<msg-id> options
599  - fsck: allow upgrading fsck warnings to errors
600  - fsck: optionally ignore specific fsck issues completely
601  - fsck: disallow demoting grave fsck errors to warnings
602  - fsck: add a simple test for receive.fsck.<msg-id>
603  - fsck: make fsck_tag() warn-friendly
604  - fsck: handle multiple authors in commits specially
605  - fsck: make fsck_commit() warn-friendly
606  - fsck: make fsck_ident() warn-friendly
607  - fsck: report the ID of the error/warning
608  - fsck (receive-pack): allow demoting errors to warnings
609  - fsck: offer a function to demote fsck errors to warnings
610  - fsck: provide a function to parse fsck message IDs
611  - fsck: introduce identifiers for fsck messages
612  - fsck: introduce fsck options
614  Allow ignoring fsck errors on specific set of known-to-be-bad
615  objects, and also tweaking warning level of various kinds of non
616  critical breakages reported.
618  Will merge to 'next'.
621 * js/rebase-i-clean-up-upon-continue-to-skip (2015-06-29) 2 commits
622  - rebase -i: do not leave a CHERRY_PICK_HEAD file behind
623  - t3404: demonstrate CHERRY_PICK_HEAD bug
625  Abandoning an already applied change in "git rebase -i" with
626  "--continue" left CHERRY_PICK_HEAD and confused later steps.
628  Will merge to 'next'.
631 * rh/test-color-avoid-terminfo-in-original-home (2015-06-17) 2 commits
632   (merged to 'next' on 2015-06-24 at 6af5fa7)
633  + test-lib.sh: fix color support when tput needs ~/.terminfo
634  + Revert "test-lib.sh: do tests for color support after changing HOME"
636  An ancient test framework enhancement to allow color was not
637  entirely correct; this makes it work even when tput needs to read
638  from the ~/.terminfo under the user's real HOME directory.
640  Will merge to 'master'.
643 * tb/checkout-doc (2015-06-17) 1 commit
644  - git-checkout.txt: document "git checkout <pathspec>" better
646  Doc update.
648  Will merge to 'next'.
651 * jk/pretty-encoding-doc (2015-06-17) 1 commit
652  - docs: clarify that --encoding can produce invalid sequences
654  Doc update.
656  Will merge to 'next'.
659 * ak/format-patch-odir-config (2015-06-19) 1 commit
660  - format-patch: introduce format.outputDirectory configuration
662  Reroll exists but didn't pick it up as it seems to be still
663  collecting review comments.
665  Expecting a reroll.
666  ($gmane/272180).
669 * bc/gpg-verify-raw (2015-06-22) 7 commits
670   (merged to 'next' on 2015-06-24 at 08a1164)
671  + verify-tag: add option to print raw gpg status information
672  + verify-commit: add option to print raw gpg status information
673  + gpg: centralize printing signature buffers
674  + gpg: centralize signature check
675  + verify-commit: add test for exit status on untrusted signature
676  + verify-tag: share code with verify-commit
677  + verify-tag: add tests
679  "git verify-tag" and "git verify-commit" have been taught to share
680  more code, and then learned to optionally show the verification
681  message from the underlying GPG implementation.
683  Will merge to 'master'.
686 * cb/parse-magnitude (2015-06-22) 2 commits
687   (merged to 'next' on 2015-06-24 at 2fd7205)
688  + parse-options: move unsigned long option parsing out of pack-objects.c
689  + test-parse-options: update to handle negative ints
691  Move machinery to parse human-readable scaled numbers like 1k, 4M,
692  and 2G as an option parameter's value from pack-objects to
693  parse-options API, to make it available to other codepaths.
695  Will merge to 'master'.
698 * cb/subtree-tests-update (2015-06-22) 3 commits
699   (merged to 'next' on 2015-06-24 at 31a2938)
700  + contrib/subtree: small tidy-up to test
701  + contrib/subtree: fix broken &&-chains and revealed test error
702  + contrib/subtree: use tabs consitently for indentation in tests
704  Tests update in contrib/subtree.
706  Will merge to 'master'.
709 * jk/cat-file-batch-all (2015-06-26) 8 commits
710  - cat-file: sort and de-dup output of --batch-all-objects
711  - cat-file: add --batch-all-objects option
712  - cat-file: split batch_one_object into two stages
713  - cat-file: stop returning value from batch_one_object
714  - cat-file: add --buffer option
715  - cat-file: move batch_options definition to top of file
716  - cat-file: minor style fix in options list
717  - Merge branch 'jk/maint-for-each-packed-object' into jk/cat-file-batch-all
718  (this branch uses jk/maint-for-each-packed-object.)
720  "cat-file" learned "--batch-all-objects" option to enumerate all
721  available objects in the repository more quickly than "rev-list
722  --all --objects" (the output includes unreachable objects, though).
724  Will merge to 'next'.
727 * jk/maint-for-each-packed-object (2015-06-22) 1 commit
728   (merged to 'next' on 2015-06-24 at 162e134)
729  + for_each_packed_object: automatically open pack index
730  (this branch is used by jk/cat-file-batch-all.)
732  The for_each_packed_object() API function did not iterate over
733  objects in a packfile that hasn't been used yet.
735  Will merge to 'master'.
738 * jk/pkt-log-pack (2015-06-16) 3 commits
739  - pkt-line: support tracing verbatim pack contents
740  - pkt-line: tighten sideband PACK check when tracing
741  - pkt-line: simplify starts_with checks in packet tracing
743  Enhance packet tracing machinery to allow capturing an incoming
744  pack data to a file for debugging.
746  Will merge to 'next'.
749 * kn/for-each-ref (2015-06-15) 11 commits
750   (merged to 'next' on 2015-06-24 at 1a3a734)
751  + ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
752  + for-each-ref: introduce filter_refs()
753  + ref-filter: move code from 'for-each-ref'
754  + ref-filter: add 'ref-filter.h'
755  + for-each-ref: rename variables called sort to sorting
756  + for-each-ref: rename some functions and make them public
757  + for-each-ref: introduce 'ref_array_clear()'
758  + for-each-ref: introduce new structures for better organisation
759  + for-each-ref: rename 'refinfo' to 'ref_array_item'
760  + for-each-ref: clean up code
761  + for-each-ref: extract helper functions out of grab_single_ref()
762  (this branch is used by kn/for-each-tag-branch.)
764  GSoC project to rebuild ref listing by branch and tag based on the
765  for-each-ref machinery.  This is its first part.
768 * mh/init-delete-refs-api (2015-06-22) 19 commits
769  - delete_ref(): use the usual convention for old_sha1
770  - cmd_update_ref(): make logic more straightforward
771  - update_ref(): don't read old reference value before delete
772  - check_branch_commit(): make first parameter const
773  - refs.h: add some parameter names to function declarations
774  - refs: move the remaining ref module declarations to refs.h
775  - initial_ref_transaction_commit(): check for ref D/F conflicts
776  - initial_ref_transaction_commit(): check for duplicate refs
777  - refs: remove some functions from the module's public interface
778  - initial_ref_transaction_commit(): function for initial ref creation
779  - repack_without_refs(): make function private
780  - prune_refs(): use delete_refs()
781  - prune_remote(): use delete_refs()
782  - delete_refs(): bail early if the packed-refs file cannot be rewritten
783  - delete_refs(): make error message more generic
784  - delete_refs(): new function for the refs API
785  - delete_ref(): handle special case more explicitly
786  - remove_branches(): remove temporary
787  - delete_ref(): move declaration to refs.h
789  Clean up refs API and make "git clone" less intimate with the
790  implementation detail.
792  Will merge to 'next'.
795 * mh/replace-refs (2015-06-12) 1 commit
796   (merged to 'next' on 2015-06-24 at cb13adf)
797  + Allow to control where the replace refs are looked for
799  Add an environment variable to tell Git to look into refs hierarchy
800  other than refs/replace/ for the object replacement data.
803 * nd/multiple-work-trees (2015-06-29) 2 commits
804   (merged to 'next' on 2015-06-29 at fd4eb60)
805  + worktree: new place for "git prune --worktrees"
806   (merged to 'next' on 2015-06-24 at 7c3f918)
807  + checkout: don't check worktrees when not necessary
808  (this branch is used by es/worktree-add.)
810  "git checkout [<tree-ish>] <paths>" spent unnecessary cycles
811  checking if the current branch was checked out elsewhere, when we
812  know we are not switching the branches ourselves.
815 * gp/status-rebase-i-info (2015-07-06) 4 commits
816  - status: add new tests for status during rebase -i
817  - status: give more information during rebase -i
818  - status: differentiate interactive from non-interactive rebases
819  - status: factor two rebase-related messages together
821  Teach "git status" to show a more detailed information regarding
822  the "rebase -i" session in progress.
824  Looks ready for 'next'.  I however wonder if there is a negative
825  interaction with 16cf51c7 (git-rebase--interactive.sh: add config
826  option for custom instruction format, 2015-06-13)?
829 * mk/utf8-no-iconv-warn (2015-06-08) 1 commit
830  - utf8.c: print warning about disabled iconv
832  Warn when a reencoding is requested in a build without iconv
833  support, as the end user is likely to get an unexpected result.  I
834  think the same level of safety should be added to a build with
835  iconv support when the specified encoding is not available, but the
836  patch does not go there.
838  Expecting a reroll.
841 * mr/rebase-i-customize-insn-sheet (2015-06-15) 1 commit
842  - git-rebase--interactive.sh: add config option for custom instruction format
844  "git rebase -i"'s list of todo is made configurable.
846  Will merge to 'next'.
849 * pt/am-foreign (2015-06-15) 5 commits
850   (merged to 'next' on 2015-06-24 at 838c702)
851  + am: teach mercurial patch parser how to read from stdin
852  + am: use gmtime() to parse mercurial patch date
853  + t4150: test applying StGit series
854  + am: teach StGit patch parser how to read from stdin
855  + t4150: test applying StGit patch
857  Various enhancements around "git am" reading patches generated by
858  foreign SCM.
861 * pt/pull-builtin (2015-06-18) 19 commits
862  - pull: remove redirection to git-pull.sh
863  - pull --rebase: error on no merge candidate cases
864  - pull --rebase: exit early when the working directory is dirty
865  - pull: configure --rebase via branch.<name>.rebase or pull.rebase
866  - pull: teach git pull about --rebase
867  - pull: set reflog message
868  - pull: implement pulling into an unborn branch
869  - pull: fast-forward working tree if head is updated
870  - pull: check if in unresolved merge state
871  - pull: support pull.ff config
872  - pull: error on no merge candidates
873  - pull: pass git-fetch's options to git-fetch
874  - pull: pass git-merge's options to git-merge
875  - pull: pass verbosity, --progress flags to fetch and merge
876  - pull: implement fetch + merge
877  - pull: implement skeletal builtin pull
878  - argv-array: implement argv_array_pushv()
879  - parse-options-cb: implement parse_opt_passthru_argv()
880  - parse-options-cb: implement parse_opt_passthru()
881  (this branch is used by pt/am-builtin.)
883  Reimplement 'git pull' in C.
885  Will merge to 'next'.
888 * rl/send-email-aliases (2015-07-07) 10 commits
889  - send-email: suppress meaningless whitespaces in from field
890  - send-email: allow multiple emails using --cc, --to and --bcc
891  - send-email: consider quote as delimiter instead of character
892  - send-email: reduce dependencies impact on parse_address_line
893  - send-email: minor code refactoring
894  - send-email: allow use of aliases in the From field of --compose mode
895  - send-email: refactor address list process
896  - t9001-send-email: refactor header variable fields replacement
897  - send-email: allow aliases in patch header and command script outputs
898  - t9001-send-email: move script creation in a setup test
900  "git send-email" now performs alias-expansion on names that are
901  given via --cccmd, etc.
903  This round comes with a lot more enhanced e-mail address parser,
904  which makes it a bit scary, but as long as it works as designed, it
905  makes it wonderful ;-).
907  Will merge to 'next'.
910 * wp/sha1-name-negative-match (2015-06-08) 2 commits
911  - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
912  - test for '!' handling in rev-parse's named commits
914  Introduce "branch^{/!-<pattern>}" notation to name a commit
915  reachable from branch that does not match the given pattern.
917  Expecting a reroll.
920 * bc/object-id (2015-06-17) 10 commits
921  . remote.c: use struct object_id in many functions
922  . object-id: use struct object_id in struct object
923  . remote.c: use struct object_id in ref_newer()
924  . transport-helper.c: use struct object_id in push_refs_with_export()
925  . connect.c: use struct object_id in get_remote_heads()
926  . remote-curl: use struct object_id in parse_fetch()
927  . fetch-pack: use struct object_id in add_sought_entry_mem()
928  . object_id: convert struct ref to use object_id.
929  . sha1_file: introduce has_object_file() helper
930  . refs: convert some internal functions to use object_id
932  More transition from "unsigned char[40]" to "struct object_id".
934  While GSoC and other topics are actively moving existing code
935  around, this cannot go in; ejected from 'pu'.
938 * jk/log-missing-default-HEAD (2015-06-03) 1 commit
939  - log: diagnose empty HEAD more clearly
941  "git init empty && git -C empty log" said "bad default revision 'HEAD'",
942  which was found to be a bit confusing to new users.
944  What's the status of this one?
947 * gr/rebase-i-drop-warn (2015-06-30) 3 commits
948  - git rebase -i: add static check for commands and SHA-1
949  - git rebase -i: warn about removed commits
950  - git-rebase -i: add command "drop" to remove a commit
952  Add "drop commit-object-name subject" command as another way to
953  skip replaying of a commit in "rebase -i", and then punish those
954  who do not use it (and instead just remove the lines) by throwing
955  a warning.
957  Will merge to 'next'.
960 * jh/strbuf-read-use-read-in-full (2015-06-01) 1 commit
961  - strbuf_read(): skip unnecessary strbuf_grow() at eof
963  Avoid one extra iteration and strbuf_grow() of 8kB in
964  strbuf_read().
966  Looked reasonable; perhaps a log message clarification is needed.
968  Expecting a reroll.
971 * mg/index-read-error-messages (2015-06-01) 2 commits
972  - messages: uniform error messages for index write
973  - show-index: uniform error messages for index read
975  The tip was RFC.
976  Expecting a reroll.
979 * hv/submodule-config (2015-06-15) 4 commits
980  - do not die on error of parsing fetchrecursesubmodules option
981  - use new config API for worktree configurations of submodules
982  - extract functions for submodule config set and lookup
983  - implement submodule config API for lookup of .gitmodules values
985  The gitmodules API accessed from the C code learned to cache stuff
986  lazily.
988  Looked reasonable from a cursory read.
990  Will merge to 'next'.
993 * jc/push-tags-also (2015-05-29) 1 commit
994  - push --tags: push tags *in addition to* other stuff
996  "git fetch --tags" learned to fetch tags in addition to other stuff
997  a few years ago, but "git push --tags" didn't.  Now it does.
999  A change to push out more than before always invites "what if the
1000  user makes a mistake" worries.
1002  Will discard.
1005 * jc/commit-slab (2015-05-22) 1 commit
1006  - commit-slab: introduce slabname##_peek() function
1008  Memory use reduction when commit-slab facility is used to annotate
1009  sparsely (which is not recommended in the first place).
1011  Will merge to 'next'.
1014 * jc/clone-bundle (2015-04-30) 1 commit
1015  - repack: optionally create a clone.bundle
1017  Waiting for further work.
1018  Still an early WIP.
1021 * ee/clean-remove-dirs (2015-06-26) 6 commits
1022   (merged to 'next' on 2015-06-29 at d595659)
1023  + read_gitfile_gently: fix use-after-free
1024   (merged to 'next' on 2015-06-24 at 7c27821)
1025  + clean: improve performance when removing lots of directories
1026  + p7300: add performance tests for clean
1027  + t7300: add tests to document behavior of clean and nested git
1028  + setup: sanity check file size in read_gitfile_gently
1029  + setup: add gentle version of read_gitfile
1031  Replace "is this subdirectory a separate repository that should not
1032  be touched?" check "git clean" does by checking if it has .git/HEAD
1033  using the submodule-related code with a more optimized check.
1035  Will merge to 'master'.
1038 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
1039   (merged to 'next' on 2015-05-28 at 6bfd8b9)
1040  + merge: drop 'git merge <message> HEAD <commit>' syntax
1042  Stop supporting "git merge <message> HEAD <commit>" syntax that
1043  has been deprecated since October 2007.
1045  Will keep in 'next' during the 2.5 cycle.