What's cooking (2015/06 #06)
[git.git] / whats-cooking.txt
blob25313fe07564f316f4f45e64b64f835b459bce94
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jun 2015, #06; Wed, 24)
4 X-master-at: df97e5dfeaea093e50afc15e44a23dfd3fa02502
5 X-next-at: 3f8b1d03318d3e5eff389ac0d3568f45053ae1fd
7 What's cooking in git.git (Jun 2015, #06; Wed, 24)
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 Some of the topics in flight have overlaps with each other and have
15 been excluded from 'pu'; most notably, I think the remainder of
16 bc/object-id needs to wait until the for-each-ref topic from Karthik
17 settles and then rebased on it, or something.
19 We will be in the pre-release freeze soonish, and the next cycle
20 would reopen mid next month.  In the meantime, let's shift the focus
21 on making sure that what has already been merged to 'master' are
22 good (i.e. regression hunting and fixes).
24 You can find the changes described here in the integration branches
25 of the repositories listed at
27     http://git-blame.blogspot.com/p/git-public-repositories.html
29 --------------------------------------------------
30 [Graduated to "master"]
32 * af/tcsh-completion-noclobber (2015-06-09) 1 commit
33   (merged to 'next' on 2015-06-16 at 621f205)
34  + git-completion.tcsh: fix redirect with noclobber
36  The tcsh completion writes a bash scriptlet but that would have
37  failed for users with noclobber set.
40 * es/configure-getdelim (2015-06-03) 2 commits
41   (merged to 'next' on 2015-06-11 at cdead14)
42  + configure: add getdelim() check
43  + config.mak.uname: Darwin: define HAVE_GETDELIM for modern OS X releases
45  Auto-detect availability of getdelim() that helps optimized version
46  of strbuf_getwholeline().
49 * es/osx-header-pollutes-mask-macro (2015-06-03) 2 commits
50   (merged to 'next' on 2015-06-11 at cd8c39e)
51  + ewah: use less generic macro name
52  + ewah/bitmap: silence warning about MASK macro redefinition
55 * es/send-email-sendmail-alias (2015-06-01) 10 commits
56   (merged to 'next' on 2015-06-11 at b5e310e)
57  + send-email: further warn about unsupported sendmail aliases features
58  + t9001: add sendmail aliases line continuation tests
59  + t9001: refactor sendmail aliases test infrastructure
60  + send-email: implement sendmail aliases line continuation support
61  + send-email: simplify sendmail aliases comment and blank line recognizer
62  + send-email: refactor sendmail aliases parser
63  + send-email: fix style: cuddle 'elsif' and 'else' with closing brace
64  + send-email: drop noise comments which merely repeat what code says
65  + send-email: visually distinguish sendmail aliases parser warnings
66  + send-email: further document missing sendmail aliases functionality
68  "git send-email" learned to handle more forms of sendmail style
69  aliases file.
72 * es/utf8-stupid-compiler-workaround (2015-06-05) 1 commit
73   (merged to 'next' on 2015-06-11 at dc0f2d2)
74  + utf8: NO_ICONV: silence uninitialized variable warning
76  A compilation workaround.
79 * fk/doc-format-patch-vn (2015-06-10) 1 commit
80   (merged to 'next' on 2015-06-16 at 9be3516)
81  + doc: format-patch: fix typo
83  Docfix.
86 * jc/apply-reject-noop-hunk (2015-06-01) 1 commit
87   (merged to 'next' on 2015-06-11 at 8063665)
88  + apply: reject a hunk that does not do anything
90  "git apply" cannot diagnose a patch corruption when the breakage is
91  to mark the length of the hunk shorter than it really is on the
92  hunk header line "@@ -l,k +m,n @@"; one special case it could is
93  when the hunk becomes no-op (e.g. k == n == 2 for two-line context
94  patch output), and it learned to do so for this special case.
97 * jc/do-not-feed-tags-to-clear-commit-marks (2015-06-01) 1 commit
98   (merged to 'next' on 2015-06-11 at 65b4308)
99  + format-patch: do not feed tags to clear_commit_marks()
101  "git format-patch --ignore-if-upstream A..B" did not like to be fed
102  tags as boundary commits.
105 * jc/ll-merge-expose-path (2015-06-04) 1 commit
106   (merged to 'next' on 2015-06-11 at 5c5fe41)
107  + ll-merge: pass the original path to external drivers
109  Traditionally, external low-level 3-way merge drivers are expected
110  to produce their results based solely on the contents of the three
111  variants given in temporary files named by %O, %A and %B on their
112  command line.  Additionally allow them to look at the final path
113  (given by %P).
116 * jk/index-pack-reduce-recheck (2015-06-09) 1 commit
117   (merged to 'next' on 2015-06-16 at ff83705)
118  + index-pack: avoid excessive re-reading of pack directory
120  Disable "have we lost a race with competing repack?" check while
121  receiving a huge object transfer that runs index-pack.
124 * jk/stash-require-clean-index (2015-06-15) 1 commit
125   (merged to 'next' on 2015-06-16 at beb4883)
126  + Revert "stash: require a clean index to apply"
128  A hotfix for the topic already in 'master'.
131 * js/sleep-without-select (2015-06-05) 4 commits
132   (merged to 'next' on 2015-06-11 at 278edb1)
133  + lockfile: wait using sleep_millisec() instead of select()
134  + lockfile: convert retry timeout computations to millisecond
135  + help.c: wrap wait-only poll() invocation in sleep_millisec()
136  + lockfile: replace random() by rand()
138  Portability fix.
141 * ld/p4-changes-block-size (2015-06-10) 4 commits
142   (merged to 'next' on 2015-06-16 at 09b7daa)
143  + git-p4: fixing --changes-block-size handling
144  + git-p4: add tests for non-numeric revision range
145  + git-p4: test with limited p4 server results
146  + git-p4: additional testing of --changes-block-size
148  More workaround for Perforce's row number limit in "git p4".
151 * mh/fsck-reflog-entries (2015-06-08) 2 commits
152   (merged to 'next' on 2015-06-16 at 44e3202)
153  + fsck: report errors if reflog entries point at invalid objects
154  + fsck_handle_reflog_sha1(): new function
156  "git fsck" used to ignore missing or invalid objects recorded in reflog.
159 * mh/reporting-broken-refs-from-for-each-ref (2015-06-08) 4 commits
160   (merged to 'next' on 2015-06-16 at 31af2b8)
161  + read_loose_refs(): treat NULL_SHA1 loose references as broken
162  + read_loose_refs(): simplify function logic
163  + for-each-ref: report broken references correctly
164  + t6301: new tests of for-each-ref error handling
166  "git for-each-ref" reported "missing object" for 0{40} when it
167  encounters a broken ref.  The lack of object whose name is 0{40} is
168  not the problem; the ref being broken is.
171 * nd/untracked-cache (2015-06-08) 1 commit
172   (merged to 'next' on 2015-06-16 at 5e7df1d)
173  + read-cache: fix untracked cache invalidation when split-index is used
175  Hotfix for the 'untracked-cache' topic that is already in 'master'.
178 * pa/auto-gc-mac-osx (2015-06-12) 1 commit
179   (merged to 'next' on 2015-06-16 at 151ec95)
180  + hooks/pre-auto-gc: adjust power checking for newer OS X
182  Recent Mac OS X updates breaks the logic to detect that the machine
183  is on the AC power in the sample pre-auto-gc script.
186 * pt/am-abort-fix (2015-06-08) 6 commits
187   (merged to 'next' on 2015-06-16 at 9cac1de)
188  + am --abort: keep unrelated commits on unborn branch
189  + am --abort: support aborting to unborn branch
190  + am --abort: revert changes introduced by failed 3way merge
191  + am --skip: support skipping while on unborn branch
192  + am -3: support 3way merge on unborn branch
193  + am --skip: revert changes introduced by failed 3way merge
195  Various fixes around "git am" that applies a patch to a history
196  that is not there yet.
199 * pt/pull-optparse (2015-06-02) 3 commits
200   (merged to 'next' on 2015-06-11 at e252b4c)
201  + pull: use git-rev-parse --parseopt for option parsing
202  + pull: handle git-fetch's options as well
203  + Merge branch 'pt/pull-tests' into pt/pull-optparse
205  "git pull" has become more aware of the options meant for
206  underlying "git fetch" and then learned to use parse-options
207  parser.
210 * pt/t0302-needs-sanity (2015-06-12) 1 commit
211   (merged to 'next' on 2015-06-16 at f0d8e17)
212  + t0302: "unreadable" test needs SANITY prereq
215 * qn/blame-show-email (2015-06-01) 1 commit
216   (merged to 'next' on 2015-06-11 at b4998e2)
217  + blame: add blame.showEmail configuration
219  "git blame" learned blame.showEmail configuration variable.
222 * rl/am-3way-config (2015-06-04) 3 commits
223   (merged to 'next' on 2015-06-11 at 9b9910d)
224  + git-am: add am.threeWay config variable
225  + t4150-am: refactor am -3 tests
226  + git-am.sh: fix initialization of the threeway variable
228  "git am" learned am.threeWay configuration variable.
231 * sg/commit-cleanup-scissors (2015-06-09) 1 commit
232   (merged to 'next' on 2015-06-16 at 988e23d)
233  + commit: cope with scissors lines in commit message
235  "git commit --cleanup=scissors" was not careful enough to protect
236  against getting fooled by a line that looked like scissors.
239 * sg/completion-commit-cleanup (2015-06-08) 1 commit
240   (merged to 'next' on 2015-06-16 at a9d1c77)
241  + completion: teach 'scissors' mode to 'git commit --cleanup='
243 --------------------------------------------------
244 [New Topics]
246 * ad/bisect-terms (2015-06-24) 5 commits
247  - bisect: allow any terms set by user
248  - bisect: add the terms old/new
249  - bisect: simplify the addition of new bisect terms
250  - bisect: replace hardcoded "bad|good" by variables
251  - bisect: correction of typo
253  The use of 'good/bad' in "git bisect" made it confusing to use when
254  hunting for a state change that is not a regression (e.g. bugfix).
255  The command learned 'old/new' and then also allows the end user to
256  choose the words via a new subcommand "git bisect terms $new $old".
258  The last one is still iffy ($gmane/272554); perhaps split this
259  at patch 4 and leave the last one as a separate topic.
262 * mh/tempfile (2015-06-10) 14 commits
263  - credential-cache--daemon: use tempfile module
264  - credential-cache--daemon: delete socket from main()
265  - gc: use tempfile module to handle gc.pid file
266  - lock_repo_for_gc(): compute the path to "gc.pid" only once
267  - diff: use tempfile module
268  - setup_temporary_shallow(): use tempfile module
269  - write_shared_index(): use tempfile module
270  - register_tempfile(): new function to handle an existing temporary file
271  - tempfile: add several functions for creating temporary files
272  - register_tempfile_object(): new function, extracted from create_tempfile()
273  - commit_lock_file(): use get_locked_file_path()
274  - lockfile: remove some redundant functions
275  - tempfile: a new module for handling temporary files
276  - Move lockfile API documentation to lockfile.h
278  Rebuild "lockfile" API on top of a new "tempfile" API.
279  This needs rerolling, to include "tempfile.h" in "lockfile.h", at
280  least.
282  Expecting a reroll.
283  ($gmane/271353)
286 * nd/diff-i-t-a (2015-06-23) 1 commit
287  - Revert "diff-lib.c: adjust position of i-t-a entries in diff"
289  The "let's show paths added with -N as 'new' in status output"
290  change was done without enough consideration on potential fallouts
291  on the codepaths that do not have anything to do with "status" and
292  caused regression to at least one widely used "wsadd" alias.
294  We do not know how widespread the fallouts would be; while we
295  determine if it is feasible to squash all the fallouts and move
296  things forward until the upcoming release or it would take more
297  time and better be postponed til the next cycle, I prepared this
298  just in case we need to revert it.
300 --------------------------------------------------
301 [Stalled]
303 * sg/config-name-only (2015-05-28) 3 commits
304  - completion: use new 'git config' options to reliably list variable names
305  - SQUASH
306  - config: add options to list only variable names
308  "git config --list" output was hard to parse when values consist of
309  multiple lines.  Introduce a way to show only the keys.
311  Adding a single --name-only option may be a better way to go than
312  adding two new options.
314  Expecting a reroll.
317 * kb/i18n-doc (2015-06-15) 1 commit
318  - Documentation/i18n.txt: clarify character encoding support
320  Comments (other than $gmane/271657)?
323 * kb/use-nsec-doc (2015-06-15) 1 commit
324  - Makefile / racy-git.txt: clarify USE_NSEC prerequisites
326  Comments (other than $gmane/271656)?
329 * kk/log-merges-config (2015-04-21) 5 commits
330  - bash-completion: add support for git-log --merges= and log.merges
331  - t4202-log: add tests for --merges=
332  - Documentation: add git-log --merges= option and log.merges config. var
333  - log: honor log.merges= option
334  - revision: add --merges={show|only|hide} option
336  "git log" (but not other commands in the "log" family) learned to
337  pay attention to the log.merges configuration variable that can be
338  set to "show" (the normal behaviour), "only" (hide non-merge
339  commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
340  can be used to override the setting from the command line.
342  The documentation may need to be updated once more ($gmane/267250).
343  Waiting for a reroll.
346 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
347  - t/lib-git-svn: check same httpd module dirs as lib-httpd
348  - t/lib-httpd: load mod_unixd
350  This is the first two commits in a three-patch series $gmane/266962
351  Will be rerolled.
352  with updated log message ($gmane/268061).
355 * mh/numparse (2015-03-19) 14 commits
356  - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
357  - diff_opt_parse(): use convert_i() when handling "-l<num>"
358  - opt_arg(): simplify pointer handling
359  - opt_arg(): report errors parsing option values
360  - opt_arg(): use convert_i() in implementation
361  - opt_arg(): val is always non-NULL
362  - builtin_diff(): detect errors when parsing --unified argument
363  - handle_revision_opt(): use convert_ui() when handling "--abbrev="
364  - strtoul_ui(), strtol_i(): remove functions
365  - handle_revision_opt(): use convert_i() when handling "-<digit>"
366  - handle_revision_opt(): use skip_prefix() in many places
367  - write_subdirectory(): use convert_ui() for parsing mode
368  - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
369  - numparse: new module for parsing integral numbers
371  Many codepaths use unchecked use of strtol() and friends (or even
372  worse, atoi()).  Introduce a set of wrappers that try to be more
373  careful.
375  Expecting a reroll.
376  ($gmane/268058).
379 * tf/gitweb-project-listing (2015-03-19) 5 commits
380  - gitweb: make category headings into links when they are directories
381  - gitweb: optionally set project category from its pathname
382  - gitweb: add a link under the search box to clear a project filter
383  - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
384  - gitweb: fix typo in man page
386  Update gitweb to make it more pleasant to deal with a hierarchical
387  forest of repositories.
389  Any comments from those who use or have their own code in Gitweb?
392 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
393  - "-" and "@{-1}" on various programs
395  Lose special case code to make a lone dash "-" mean the previous
396  branch aka "@{-1}" from a handful subcommands, and instead support
397  the notation throughout the system by reimplementing it at the
398  revisions layer.
400  Needs tests, documentation updates, etc.  Also does only a half-way
401  job dealing with range notation, which needs to be fixed before the
402  series goes anywhere.
405 * nd/list-files (2015-02-09) 21 commits
406  - t3080: tests for git-list-files
407  - list-files: -M aka diff-cached
408  - list-files -F: show submodules with the new indicator '&'
409  - list-files: add -F/--classify
410  - list-files: show directories as well as files
411  - list-files: do not show duplicate cached entries
412  - list-files: sort output and remove duplicates
413  - list-files: add -t back
414  - list-files: add -1 short for --no-column
415  - list-files: add -R/--recursive short for --max-depth=-1
416  - list-files: -u does not imply showing stages
417  - list-files: make alias 'ls' default to 'list-files'
418  - list-files: a user friendly version of ls-files and more
419  - ls-files: support --max-depth
420  - ls-files: add --column
421  - ls-files: add --color to highlight file names
422  - ls-files: buffer full item in strbuf before printing
423  - ls_colors.c: highlight submodules like directories
424  - ls_colors.c: add a function to color a file name
425  - ls_colors.c: parse color.ls.* from config file
426  - ls_colors.c: add $LS_COLORS parsing code
428  A new "git list-files" Porcelain command, "ls-files" with bells and
429  whistles.
431  Reroll to base on wt-status work ($gmane/265142) has seen some
432  positive discussions.
434  Waiting for a further polished reroll ($gmane/265534).
437 * nd/pathspec-strip-fix (2015-04-18) 1 commit
438  - pathspec: adjust prefixlen after striping trailing slash
440  Does not quite fix ($gmane/267614).
441  Will discard.
444 * jc/diff-b-m (2015-02-23) 5 commits
445  . WIPWIP
446  . WIP: diff-b-m
447  - diffcore-rename: allow easier debugging
448  - diffcore-rename.c: add locate_rename_src()
449  - diffcore-break: allow debugging
451  "git diff -B -M" produced incorrect patch when the postimage of a
452  completely rewritten file is similar to the preimage of a removed
453  file; such a resulting file must not be expressed as a rename from
454  other place.
456  The fix in this patch is broken, unfortunately.
459 * pw/remote-set-url-fetch (2014-11-26) 1 commit
460  - remote: add --fetch and --both options to set-url
462  Expecting a reroll.
465 * tr/remerge-diff (2014-11-10) 9 commits
466  - t4213: avoid "|" in sed regexp
467  - log --remerge-diff: show what the conflict resolution changed
468  - name-hash: allow dir hashing even when !ignore_case
469  - merge-recursive: allow storing conflict hunks in index
470  - merge_diff_mode: fold all merge diff variants into an enum
471  - combine-diff: do not pass revs->dense_combined_merges redundantly
472  - merge-recursive: -Xindex-only to leave worktree unchanged
473  - merge-recursive: internal flag to avoid touching the worktree
474  - merge-recursive: remove dead conditional in update_stages()
476  "log -p" output learns a new way to let users inspect a merge
477  commit by showing the differences between the automerged result
478  with conflicts the person who recorded the merge would have seen
479  and the final conflict resolution that was recorded in the merge.
481  Waiting for a reroll.
482  ($gmane/256591).
485 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
486  - perf-lib: add test_perf_cleanup target
487  - perf-lib: split starting the test from the execution
489  Add test_perf_cleanup shell function to the perf suite, that allows
490  the script writers to define a test with a clean-up action.
492  Will hold.
495 * jc/show-branch (2014-03-24) 5 commits
496  - show-branch: use commit slab to represent bitflags of arbitrary width
497  - show-branch.c: remove "all_mask"
498  - show-branch.c: abstract out "flags" operation
499  - show-branch.c: lift all_mask/all_revs to a global static
500  - show-branch.c: update comment style
502  Waiting for the final step to lift the hard-limit.
504 --------------------------------------------------
505 [Cooking]
507 * js/fsck-opt (2015-06-23) 19 commits
508  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
509  - fsck: git receive-pack: support excluding objects from fsck'ing
510  - fsck: introduce `git fsck --connectivity-only`
511  - fsck: support demoting errors to warnings
512  - fsck: document the new receive.fsck.<msg-id> options
513  - fsck: allow upgrading fsck warnings to errors
514  - fsck: optionally ignore specific fsck issues completely
515  - fsck: disallow demoting grave fsck errors to warnings
516  - fsck: add a simple test for receive.fsck.<msg-id>
517  - fsck: make fsck_tag() warn-friendly
518  - fsck: handle multiple authors in commits specially
519  - fsck: make fsck_commit() warn-friendly
520  - fsck: make fsck_ident() warn-friendly
521  - fsck: report the ID of the error/warning
522  - fsck (receive-pack): allow demoting errors to warnings
523  - fsck: offer a function to demote fsck errors to warnings
524  - fsck: provide a function to parse fsck message IDs
525  - fsck: introduce identifiers for fsck messages
526  - fsck: introduce fsck options
528  Allow ignoring fsck errors on specific set of known-to-be-bad
529  objects, and also tweaking warning level of various kinds of non
530  critical breakages reported.
532  Will merge to 'next'.
535 * js/rebase-i-clean-up-upon-continue-to-skip (2015-06-23) 2 commits
536  - rebase -i: do not leave a CHERRY_PICK_HEAD file behind
537  - t3404: demonstrate CHERRY_PICK_HEAD bug
539  Abandoning an already applied change in "git rebase -i" with
540  "--continue" left CHERRY_PICK_HEAD and confused later steps.
542  Will merge to 'next'.
545 * me/fetch-into-shallow-safety (2015-06-17) 1 commit
546   (merged to 'next' on 2015-06-24 at 8ecc19a)
547  + fetch-pack: check for shallow if depth given
549  "git fetch --depth=<depth>" and "git clone --depth=<depth>" issued
550  a shallow transfer request even to an upload-pack that does not
551  support the capability.
553  Will merge to 'master'.
556 * mm/describe-doc (2015-06-16) 1 commit
557   (merged to 'next' on 2015-06-24 at 75e34cc)
558  + Documentation/describe: improve one-line summary
560  Docfix.
562  Will merge to 'master'.
565 * rh/test-color-avoid-terminfo-in-original-home (2015-06-17) 2 commits
566   (merged to 'next' on 2015-06-24 at 6af5fa7)
567  + test-lib.sh: fix color support when tput needs ~/.terminfo
568  + Revert "test-lib.sh: do tests for color support after changing HOME"
570  An ancient test framework enhancement to allow color was not
571  entirely correct; this makes it work even when tput needs to read
572  from the ~/.terminfo under the user's real HOME directory.
574  Will merge to 'master'.
577 * tb/checkout-doc (2015-06-17) 1 commit
578  - git-checkout.txt: document "git checkout <pathspec>" better
580  Doc update.
582  Will merge to 'next'.
585 * jk/pretty-encoding-doc (2015-06-17) 1 commit
586  - docs: clarify that --encoding can produce invalid sequences
588  Doc update.
590  Will merge to 'next'.
593 * ak/format-patch-odir-config (2015-06-19) 1 commit
594  - format-patch: introduce format.outputDirectory configuration
596  Reroll exists but didn't pick it up as it seems to be still
597  collecting review comments.
599  Expecting a reroll.
600  ($gmane/272180).
603 * bc/gpg-verify-raw (2015-06-22) 7 commits
604   (merged to 'next' on 2015-06-24 at 08a1164)
605  + verify-tag: add option to print raw gpg status information
606  + verify-commit: add option to print raw gpg status information
607  + gpg: centralize printing signature buffers
608  + gpg: centralize signature check
609  + verify-commit: add test for exit status on untrusted signature
610  + verify-tag: share code with verify-commit
611  + verify-tag: add tests
613  "git verify-tag" and "git verify-commit" have been taught to share
614  more code, and then learned to optionally show the verification
615  message from the underlying GPG implementation.
617  Will merge to 'master'.
620 * cb/parse-magnitude (2015-06-22) 2 commits
621   (merged to 'next' on 2015-06-24 at 2fd7205)
622  + parse-options: move unsigned long option parsing out of pack-objects.c
623  + test-parse-options: update to handle negative ints
625  Move machinery to parse human-readable scaled numbers like 1k, 4M,
626  and 2G as an option parameter's value from pack-objects to
627  parse-options API, to make it available to other codepaths.
629  Will merge to 'master'.
632 * cb/subtree-tests-update (2015-06-22) 3 commits
633   (merged to 'next' on 2015-06-24 at 31a2938)
634  + contrib/subtree: small tidy-up to test
635  + contrib/subtree: fix broken &&-chains and revealed test error
636  + contrib/subtree: use tabs consitently for indentation in tests
638  Tests update in contrib/subtree.
640  Will merge to 'master'.
643 * da/mergetool-winmerge (2015-06-19) 1 commit
644   (merged to 'next' on 2015-06-24 at 2fb10c4)
645  + mergetool-lib: fix default tool selection
647  Hotfix for an earlier change already in 'master' that broke the
648  default tool selection for mergetool.
650  Will merge to 'master'.
653 * jk/cat-file-batch-all (2015-06-22) 8 commits
654  - cat-file: sort and de-dup output of --batch-all-objects
655  - cat-file: add --batch-all-objects option
656  - cat-file: split batch_one_object into two stages
657  - cat-file: stop returning value from batch_one_object
658  - cat-file: add --buffer option
659  - cat-file: move batch_options definition to top of file
660  - cat-file: minor style fix in options list
661  - Merge branch 'jk/maint-for-each-packed-object' into jk/cat-file-batch-all
662  (this branch uses jk/maint-for-each-packed-object.)
664  "cat-file" learned "--batch-all-objects" option to enumerate all
665  available objects in the repository more quickly than "rev-list
666  --all --objects" (the output includes unreachable objects, though).
668  Will merge to 'next'.
671 * jk/maint-for-each-packed-object (2015-06-22) 1 commit
672   (merged to 'next' on 2015-06-24 at 162e134)
673  + for_each_packed_object: automatically open pack index
674  (this branch is used by jk/cat-file-batch-all.)
676  The for_each_packed_object() API function did not iterate over
677  objects in a packfile that hasn't been used yet.
679  Will merge to 'master'.
682 * jk/pkt-log-pack (2015-06-16) 3 commits
683  - pkt-line: support tracing verbatim pack contents
684  - pkt-line: tighten sideband PACK check when tracing
685  - pkt-line: simplify starts_with checks in packet tracing
687  Enhance packet tracing machinery to allow capturing an incoming
688  pack data to a file for debugging.
690  Will merge to 'next'.
693 * kn/for-each-ref (2015-06-15) 11 commits
694   (merged to 'next' on 2015-06-24 at 1a3a734)
695  + ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
696  + for-each-ref: introduce filter_refs()
697  + ref-filter: move code from 'for-each-ref'
698  + ref-filter: add 'ref-filter.h'
699  + for-each-ref: rename variables called sort to sorting
700  + for-each-ref: rename some functions and make them public
701  + for-each-ref: introduce 'ref_array_clear()'
702  + for-each-ref: introduce new structures for better organisation
703  + for-each-ref: rename 'refinfo' to 'ref_array_item'
704  + for-each-ref: clean up code
705  + for-each-ref: extract helper functions out of grab_single_ref()
707  GSoC project to rebuild ref listing by branch and tag based on the
708  for-each-ref machinery.  This is its first part.
711 * mh/init-delete-refs-api (2015-06-22) 19 commits
712  - delete_ref(): use the usual convention for old_sha1
713  - cmd_update_ref(): make logic more straightforward
714  - update_ref(): don't read old reference value before delete
715  - check_branch_commit(): make first parameter const
716  - refs.h: add some parameter names to function declarations
717  - refs: move the remaining ref module declarations to refs.h
718  - initial_ref_transaction_commit(): check for ref D/F conflicts
719  - initial_ref_transaction_commit(): check for duplicate refs
720  - refs: remove some functions from the module's public interface
721  - initial_ref_transaction_commit(): function for initial ref creation
722  - repack_without_refs(): make function private
723  - prune_refs(): use delete_refs()
724  - prune_remote(): use delete_refs()
725  - delete_refs(): bail early if the packed-refs file cannot be rewritten
726  - delete_refs(): make error message more generic
727  - delete_refs(): new function for the refs API
728  - delete_ref(): handle special case more explicitly
729  - remove_branches(): remove temporary
730  - delete_ref(): move declaration to refs.h
732  Clean up refs API and make "git clone" less intimate with the
733  implementation detail.
735  Will merge to 'next'.
738 * mh/replace-refs (2015-06-12) 1 commit
739   (merged to 'next' on 2015-06-24 at cb13adf)
740  + Allow to control where the replace refs are looked for
742  Add an environment variable to tell Git to look into refs hierarchy
743  other than refs/replace/ for the object replacement data.
746 * nd/multiple-work-trees (2015-06-12) 1 commit
747   (merged to 'next' on 2015-06-24 at 7c3f918)
748  + checkout: don't check worktrees when not necessary
750  "git checkout [<tree-ish>] <paths>" spent unnecessary cycles
751  checking if the current branch was checked out elsewhere, when we
752  know we are not switching the branches ourselves.
754  Will merge to 'master'.
757 * gp/status-rebase-i-info (2015-06-09) 5 commits
758  - SQUASH??? fix misindent
759  - status: add new tests for status during rebase -i
760  - status: give more information during rebase -i
761  - status: differentiate interactive from non-interactive rebases
762  - status: factor two rebase-related messages together
764  Teach "git status" to show a more detailed information regarding
765  the "rebase -i" session in progress.
767  Expecting a reroll.
770 * jc/prompt-document-ps1-state-separator (2015-06-10) 1 commit
771   (merged to 'next' on 2015-06-24 at e4d1bad)
772  + git-prompt.sh: document GIT_PS1_STATESEPARATOR
774  Docfix.
776  Will merge to 'master'.
779 * mk/utf8-no-iconv-warn (2015-06-08) 1 commit
780  - utf8.c: print warning about disabled iconv
782  Warn when a reencoding is requested in a build without iconv
783  support, as the end user is likely to get an unexpected result.  I
784  think the same level of safety should be added to a build with
785  iconv support when the specified encoding is not available, but the
786  patch does not go there.
788  Expecting a reroll.
791 * mr/rebase-i-customize-insn-sheet (2015-06-15) 1 commit
792  - git-rebase--interactive.sh: add config option for custom instruction format
794  "git rebase -i"'s list of todo is made configurable.
796  Will merge to 'next'.
799 * pt/am-foreign (2015-06-15) 5 commits
800   (merged to 'next' on 2015-06-24 at 838c702)
801  + am: teach mercurial patch parser how to read from stdin
802  + am: use gmtime() to parse mercurial patch date
803  + t4150: test applying StGit series
804  + am: teach StGit patch parser how to read from stdin
805  + t4150: test applying StGit patch
807  Various enhancements around "git am" reading patches generated by
808  foreign SCM.
811 * pt/pull-builtin (2015-06-18) 19 commits
812  - pull: remove redirection to git-pull.sh
813  - pull --rebase: error on no merge candidate cases
814  - pull --rebase: exit early when the working directory is dirty
815  - pull: configure --rebase via branch.<name>.rebase or pull.rebase
816  - pull: teach git pull about --rebase
817  - pull: set reflog message
818  - pull: implement pulling into an unborn branch
819  - pull: fast-forward working tree if head is updated
820  - pull: check if in unresolved merge state
821  - pull: support pull.ff config
822  - pull: error on no merge candidates
823  - pull: pass git-fetch's options to git-fetch
824  - pull: pass git-merge's options to git-merge
825  - pull: pass verbosity, --progress flags to fetch and merge
826  - pull: implement fetch + merge
827  - pull: implement skeletal builtin pull
828  - argv-array: implement argv_array_pushv()
829  - parse-options-cb: implement parse_opt_passthru_argv()
830  - parse-options-cb: implement parse_opt_passthru()
832  Reimplement 'git pull' in C.
834  This is v4 ($gmane/271943).
835  Comments from mentors and others?
838 * rl/send-email-aliases (2015-06-17) 10 commits
839  - send-email: suppress meaningless whitespaces in from field
840  - send-email: allow multiple emails using --cc, --to and --bcc
841  - send-email: consider quote as delimiter instead of character
842  - send-email: reduce dependancies impact on parse_address_line
843  - send-email: minor code refactoring
844  - send-email: allow use of aliases in the From field of --compose mode
845  - send-email: refactor address list process
846  - t9001-send-email: refactor header variable fields replacement
847  - send-email: allow aliases in patch header and command script outputs
848  - t9001-send-email: move script creation in a setup test
850  "git send-email" now performs alias-expansion on names that are
851  given via --cccmd, etc.
853  This round comes with a lot more enhanced e-mail address parser,
854  which makes it a bit scary, but as long as it works as designed, it
855  makes it wonderful ;-).
857  This is a lot older version than the latest round ($gmane/272499).
858  Expecting a reroll.
859  ($gmane/272517).
862 * wp/sha1-name-negative-match (2015-06-08) 2 commits
863  - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
864  - test for '!' handling in rev-parse's named commits
866  Introduce "branch^{/!-<pattern>}" notation to name a commit
867  reachable from branch that does not match the given pattern.
869  Expecting a reroll.
872 * bc/object-id (2015-06-17) 10 commits
873  . remote.c: use struct object_id in many functions
874  . object-id: use struct object_id in struct object
875  . remote.c: use struct object_id in ref_newer()
876  . transport-helper.c: use struct object_id in push_refs_with_export()
877  . connect.c: use struct object_id in get_remote_heads()
878  . remote-curl: use struct object_id in parse_fetch()
879  . fetch-pack: use struct object_id in add_sought_entry_mem()
880  . object_id: convert struct ref to use object_id.
881  . sha1_file: introduce has_object_file() helper
882  . refs: convert some internal functions to use object_id
884  More transition from "unsigned char[40]" to "struct object_id".
886  While GSoC and other topics are actively moving existing code
887  around, this cannot go in; ejected from 'pu'.
890 * jk/log-missing-default-HEAD (2015-06-03) 1 commit
891  - log: diagnose empty HEAD more clearly
893  "git init empty && git -C empty log" said "bad default revision 'HEAD'",
894  which was found to be a bit confusing to new users.
896  What's the status of this one?
899 * gr/rebase-i-drop-warn (2015-06-01) 2 commits
900  - git rebase -i: warn about removed commits
901  - git-rebase -i: add command "drop" to remove a commit
903  Add "drop commit-object-name subject" command as another way to
904  skip replaying of a commit in "rebase -i", and then punish those
905  who do not use it (and instead just remove the lines) by throwing
906  a warning.
908  This is a lot older version than the latest round ($gmane/272420)
909  Expecting a reroll.
910  ($gmane/272506).
913 * jh/strbuf-read-use-read-in-full (2015-06-01) 1 commit
914  - strbuf_read(): skip unnecessary strbuf_grow() at eof
916  Avoid one extra iteration and strbuf_grow() of 8kB in
917  strbuf_read().
919  Looked reasonable; perhaps a log message clarification is needed.
921  Expecting a reroll.
924 * mg/index-read-error-messages (2015-06-01) 2 commits
925  - messages: uniform error messages for index write
926  - show-index: uniform error messages for index read
928  The tip was RFC.
929  Expecting a reroll.
932 * hv/submodule-config (2015-06-15) 4 commits
933  - do not die on error of parsing fetchrecursesubmodules option
934  - use new config API for worktree configurations of submodules
935  - extract functions for submodule config set and lookup
936  - implement submodule config API for lookup of .gitmodules values
938  The gitmodules API accessed from the C code learned to cache stuff
939  lazily.
941  Looked reasonable from a cursory read.
943  Will merge to 'next'.
946 * jc/push-tags-also (2015-05-29) 1 commit
947  - push --tags: push tags *in addition to* other stuff
949  "git fetch --tags" learned to fetch tags in addition to other stuff
950  a few years ago, but "git push --tags" didn't.  Now it does.
953 * jc/commit-slab (2015-05-22) 1 commit
954  - commit-slab: introduce slabname##_peek() function
956  Memory use reduction when commit-slab facility is used to annotate
957  sparsely (which is not recommended in the first place).
960 * jc/clone-bundle (2015-04-30) 1 commit
961  - repack: optionally create a clone.bundle
963  Still an early WIP
966 * ee/clean-remove-dirs (2015-06-15) 5 commits
967   (merged to 'next' on 2015-06-24 at 7c27821)
968  + clean: improve performance when removing lots of directories
969  + p7300: add performance tests for clean
970  + t7300: add tests to document behavior of clean and nested git
971  + setup: sanity check file size in read_gitfile_gently
972  + setup: add gentle version of read_gitfile
974  Replace "is this subdirectory a separate repository that should not
975  be touched?" check "git clean" does by checking if it has .git/HEAD
976  using the submodule-related code with a more optimized check.
978  Will merge to 'master'.
981 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
982   (merged to 'next' on 2015-05-28 at 6bfd8b9)
983  + merge: drop 'git merge <message> HEAD <commit>' syntax
985  Stop supporting "git merge <message> HEAD <commit>" syntax that
986  has been deprecated since October 2007.
988  Will keep in 'next' during the 2.5 cycle.