What's cooking (2014/07 #01)
[git.git] / whats-cooking.txt
bloba5113567574bddce184d81cd6fd7ec47957e0d39
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jul 2014, #01; Tue, 8)
4 X-master-at: 72c779457cd72928e36f2bc43c3ff7f3ae7b77c3
5 X-next-at: 35b839c24c6ee47bec1710eabfa8653925462638
7 What's cooking in git.git (Jul 2014, #01; Tue, 8)
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 You can find the changes described here in the integration branches
15 of the repositories listed at
17     http://git-blame.blogspot.com/p/git-public-repositories.html
19 --------------------------------------------------
20 [Graduated to "master"]
22 * bc/fix-rebase-merge-skip (2014-06-16) 1 commit
23   (merged to 'next' on 2014-06-20 at 01f81f5)
24  + rebase--merge: fix --skip with two conflicts in a row
26  "git rebase --skip" did not work well when it stopped due to a
27  conflict twice in a row.
30 * dt/refs-check-refname-component-sse (2014-06-18) 1 commit
31   (merged to 'next' on 2014-06-20 at d286027)
32  + refs.c: SSE2 optimizations for check_refname_component
34  Further micro-optimization of a leaf-function.
37 * jk/commit-buffer-length (2014-06-13) 18 commits
38   (merged to 'next' on 2014-06-16 at b2d2d7b)
39  + reuse cached commit buffer when parsing signatures
40  + commit: record buffer length in cache
41  + commit: convert commit->buffer to a slab
42  + commit-slab: provide a static initializer
43  + use get_commit_buffer everywhere
44  + convert logmsg_reencode to get_commit_buffer
45  + use get_commit_buffer to avoid duplicate code
46  + use get_cached_commit_buffer where appropriate
47  + provide helpers to access the commit buffer
48  + provide a helper to set the commit buffer
49  + provide a helper to free commit buffer
50  + sequencer: use logmsg_reencode in get_message
51  + logmsg_reencode: return const buffer
52  + do not create "struct commit" with xcalloc
53  + commit: push commit_index update into alloc_commit_node
54  + alloc: include any-object allocations in alloc_report
55  + replace dangerous uses of strbuf_attach
56  + commit_tree: take a pointer/len pair rather than a const strbuf
58  Move "commit->buffer" out of the in-core commit object and keep
59  track of their lengths.  Use this to optimize the code paths to
60  validate GPG signatures in commit objects.
63 * ye/http-extract-charset (2014-06-17) 1 commit
64   (merged to 'next' on 2014-06-20 at 9492bae)
65  + http: fix charset detection of extract_content_type()
67 --------------------------------------------------
68 [New Topics]
70 * cc/replace-edit (2014-06-25) 3 commits
71  - replace: use argv_array in export_object
72  - avoid double close of descriptors handed to run_command
73  - replace: replace spaces with tabs in indentation
74  (this branch is used by jk/replace-edit-raw.)
76  Will merge to 'next'.
79 * ep/submodule-code-cleanup (2014-06-30) 1 commit
80  - submodule.c: use the ARRAY_SIZE macro
82  Will merge to 'next'.
85 * jk/replace-edit-raw (2014-06-25) 1 commit
86  - replace: add a --raw mode for --edit
87  (this branch uses cc/replace-edit.)
89  Will merge to 'next'.
92 * jk/strip-suffix (2014-06-30) 9 commits
93  - prepare_packed_git_one: refactor duplicate-pack check
94  - verify-pack: use strbuf_strip_suffix
95  - strbuf: implement strbuf_strip_suffix
96  - index-pack: use strip_suffix to avoid magic numbers
97  - use strip_suffix instead of ends_with in simple cases
98  - replace has_extension with ends_with
99  - implement ends_with via strip_suffix
100  - add strip_suffix function
101  - sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()
103  Will merge to 'next'.
106 * jk/tag-contains (2014-06-30) 8 commits
107  - perf: add tests for tag --contains
108  - tag: use commit_contains
109  - commit: provide a fast multi-tip contains function
110  - string-list: add pos to iterator callback
111  - add functions for memory-efficient bitmaps
112  - paint_down_to_common: use prio_queue
113  - tag: factor out decision to stream tags
114  - tag: allow --sort with -n
116  Expecting a reroll.
119 * mg/fix-log-mergetag-color (2014-06-30) 1 commit
120  - log: correctly identify mergetag signature verification status
122  Will merge to 'next'.
125 * mk/merge-incomplete-files (2014-06-30) 2 commits
126  - git-merge-file: do not add LF at EOF while applying unrelated change
127  - t6023-merge-file.sh: fix and mark as broken invalid tests
129  Will merge to 'next'.
132 * rs/status-code-clean-up (2014-06-29) 2 commits
133   (merged to 'next' on 2014-07-08 at db67965)
134  + wt-status: simplify building of summary limit argument
135  + wt-status: use argv_array for environment
137  Will merge to 'master'.
140 * tb/crlf-tests (2014-07-08) 2 commits
141   (merged to 'next' on 2014-07-08 at 40764b7)
142  + t0027: combinations of core.autocrlf, core.eol and text
143  + t0025: rename the test files
145  Will merge to 'master'.
148 * ak/profile-feedback-build (2014-07-08) 4 commits
149  - Fix profile feedback with -jN and add profile-fast
150  - Run the perf test suite for profile feedback too
151  - Don't define away __attribute__ on gcc
152  - Use BASIC_FLAGS for profile feedback
154  Will merge to 'next'.
157 * cb/filter-branch-prune-empty-degenerate-merges (2014-07-01) 1 commit
158  - filter-branch: eliminate duplicate mapped parents
160  Will merge to 'next'.
163 * cc/for-each-mergetag (2014-07-07) 1 commit
164  - commit: add for_each_mergetag()
165  (this branch is used by cc/replace-graft.)
167  Will merge to 'next'.
170 * dt/cache-tree-repair (2014-07-08) 4 commits
171  - cache-tree: write updated cache-tree after commit
172  - cache-tree: subdirectory tests
173  - test-dump-cache-tree: invalid trees are not errors
174  - cache-tree: create/update cache-tree on checkout
176  Reviews seen; waiting for a response.
179 * jl/test-lint-scripts (2014-07-07) 3 commits
180  - DONTMERGE: missing sign-off
181  - t/Makefile: always test all lint targets when running tests
182  - t/Makefile: check helper scripts for non-portable shell commands too
185 * kb/hashmap-updates (2014-07-07) 4 commits
186  - hashmap: add string interning API
187  - hashmap: add simplified hashmap_get_from_hash() API
188  - hashmap: improve struct hashmap member documentation
189  - hashmap: factor out getting a hash code from a SHA1
191  Reviews sent; waiting for a response.
194 * kb/path-max-must-go (2014-07-07) 2 commits
195   (merged to 'next' on 2014-07-08 at 4d41c18)
196  + dir: remove PATH_MAX limitation
197  + symlinks: remove PATH_MAX limitation
199  Will merge to 'master'.
202 * rs/fix-alt-odb-path-comparison (2014-07-01) 1 commit
203   (merged to 'next' on 2014-07-08 at f9c69e5)
204  + sha1_file: avoid overrunning alternate object base string
206  Will merge to 'master'.
209 * rs/simplify-archive-tests (2014-07-07) 1 commit
210   (merged to 'next' on 2014-07-08 at c46cfac)
211  + t5000, t5003: simplify commit
213  Will merge to 'master'.
216 * zk/log-graph-showsig (2014-07-08) 1 commit
217  - log: fix indentation for --graph --show-signature
219  The "--show-signature" option did not pay much attention to
220  "--graph".
222  Will merge to 'next'.
224 --------------------------------------------------
225 [Stalled]
227 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
228  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
229  - git-add--interactive: Preserve diff heading when splitting hunks
231  Waiting for a reroll.
234 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
235  - gitweb: Harden UTF-8 handling in generated links
237  $gmane/250758?
240 * rh/prompt-tests (2014-06-05) 11 commits
241  - t9904: new __git_ps1 tests for Zsh
242  - test-lib: make it possible to override how test code is eval'd
243  - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
244  - lib-prompt-tests.sh: put all tests inside a function
245  - t9903: move prompt tests to a new lib-prompt-tests.sh file
246  - t9903: move PS1 color code variable definitions to lib-bash.sh
247  - t9903: include "Bash" in test names via new $shellname var
248  - t9903: run pc mode tests again with PS1 expansion disabled
249  - t9903: move test name prefix to a separate variable
250  - t9903: put the Bash pc mode prompt test cases in a function
251  - t9903: remove Zsh test from the suite of Bash prompt tests
253  Expecting a reroll to limit the damage to test_eval_; also reported
254  to be broken with older zsh that are still in the field ($gmane/251231).
257 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
258  - userdiff: support Java try keyword
259  - userdiff: support C# async methods and correct C# keywords
261  Reviews sent; waiting for a response.
264 * cc/interpret-trailers (2014-05-28) 11 commits
265  - Documentation: add documentation for 'git interpret-trailers'
266  - trailer: add tests for commands in config file
267  - trailer: execute command from 'trailer.<name>.command'
268  - trailer: add tests for "git interpret-trailers"
269  - trailer: add interpret-trailers command
270  - trailer: put all the processing together and print
271  - trailer: parse trailers from file or stdin
272  - trailer: process command line trailer arguments
273  - trailer: read and process config information
274  - trailer: process trailers from input message and arguments
275  - trailer: add data structures and basic functions
277  A new filter to programatically edit the tail end of the commit log
278  messages.
280  What is the status of this one?  I think I saw reviews by Michael
281  but after that I do not recall seeing any updates.
284 * mh/lockfile (2014-04-15) 25 commits
285  - trim_last_path_elm(): replace last_path_elm()
286  - resolve_symlink(): take a strbuf parameter
287  - resolve_symlink(): use a strbuf for internal scratch space
288  - change lock_file::filename into a strbuf
289  - commit_lock_file(): use a strbuf to manage temporary space
290  - try_merge_strategy(): use a statically-allocated lock_file object
291  - try_merge_strategy(): remove redundant lock_file allocation
292  - struct lock_file: declare some fields volatile
293  - lockfile: avoid transitory invalid states
294  - commit_lock_file(): die() if called for unlocked lockfile object
295  - commit_lock_file(): inline temporary variable
296  - remove_lock_file(): call rollback_lock_file()
297  - lock_file(): exit early if lockfile cannot be opened
298  - write_packed_entry_fn(): convert cb_data into a (const int *)
299  - prepare_index(): declare return value to be (const char *)
300  - delete_ref_loose(): don't muck around in the lock_file's filename
301  - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
302  - lockfile.c: document the various states of lock_file objects
303  - lock_file(): always add lock_file object to lock_file_list
304  - hold_lock_file_for_append(): release lock on errors
305  - lockfile: unlock file if lockfile permissions cannot be adjusted
306  - rollback_lock_file(): set fd to -1
307  - rollback_lock_file(): do not clear filename redundantly
308  - api-lockfile: expand the documentation
309  - unable_to_lock_die(): rename function from unable_to_lock_index_die()
311  Refactor and fix corner-case bugs in the lockfile API, all looked
312  sensible.
314  Expecting a reroll.
317 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
318  - git-rebase: print name of rev when using shorthand
320  Teach "git rebase -" to report the concrete name of the branch
321  (i.e. the previous one).
323  But it stops short and does not do the same for "git rebase @{-1}".
324  Expecting a reroll.
327 * tr/merge-recursive-index-only (2014-02-05) 3 commits
328  - merge-recursive: -Xindex-only to leave worktree unchanged
329  - merge-recursive: internal flag to avoid touching the worktree
330  - merge-recursive: remove dead conditional in update_stages()
331  (this branch is used by tr/remerge-diff.)
334 * tr/remerge-diff (2014-02-26) 5 commits
335  . log --remerge-diff: show what the conflict resolution changed
336  . name-hash: allow dir hashing even when !ignore_case
337  . merge-recursive: allow storing conflict hunks in index
338  . revision: fold all merge diff variants into an enum merge_diff_mode
339  . combine-diff: do not pass revs->dense_combined_merges redundantly
340  (this branch uses tr/merge-recursive-index-only.)
342  "log -p" output learns a new way to let users inspect a merge
343  commit by showing the differences between the automerged result
344  with conflicts the person who recorded the merge would have seen
345  and the final conflict resolution that was recorded in the merge.
347  Needs to be rebased, now kb/fast-hashmap topic is in.
350 * jk/makefile (2014-02-05) 16 commits
351  . FIXUP
352  . move LESS/LV pager environment to Makefile
353  . Makefile: teach scripts to include make variables
354  . FIXUP
355  . Makefile: auto-build C strings from make variables
356  . Makefile: drop *_SQ variables
357  . FIXUP
358  . Makefile: add c-quote helper function
359  . Makefile: introduce sq function for shell-quoting
360  . Makefile: always create files via make-var
361  . Makefile: store GIT-* sentinel files in MAKE/
362  . Makefile: prefer printf to echo for GIT-*
363  . Makefile: use tempfile/mv strategy for GIT-*
364  . Makefile: introduce make-var helper function
365  . Makefile: fix git-instaweb dependency on gitweb
366  . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS
368  Simplify the Makefile rules and macros that exist primarily for
369  quoting purposes, and make it easier to robustly express the
370  dependency rules.
372  Expecting a reroll.
375 * po/everyday-doc (2014-01-27) 1 commit
376  - Make 'git help everyday' work
378  This may make the said command to emit something, but the source is
379  not meant to be formatted into a manual pages to begin with, and
380  also its contents are a bit stale.  It may be a good first step in
381  the right direction, but needs more work to at least get the
382  mark-up right before public consumption.
384  Will hold.
387 * jk/branch-at-publish-rebased (2014-01-17) 5 commits
388  . t1507 (rev-parse-upstream): fix typo in test title
389  . implement @{publish} shorthand
390  . branch_get: provide per-branch pushremote pointers
391  . branch_get: return early on error
392  . sha1_name: refactor upstream_mark
394  Give an easier access to the tracking branches from "other" side in
395  a triangular workflow by introducing B@{publish} that works in a
396  similar way to how B@{upstream} does.
398  Meant to be used as a basis for whatever Ram wants to build on.
400  Ejected from 'pu' to unclutter.
403 * fc/publish-vs-upstream (2014-04-21) 8 commits
404  . sha1_name: add support for @{publish} marks
405  . sha1_name: simplify track finding
406  . sha1_name: cleanup interpret_branch_name()
407  . branch: display publish branch
408  . push: add --set-publish option
409  . branch: add --set-publish-to option
410  . Add concept of 'publish' branch
411  . t5516 (fetch-push): fix test restoration
413  Add branch@{publish}; it seems that this is somewhat different from
414  Ram and Peff started working on.  At least the tip needs to be
415  rerolled not to squat on @{p} which @{push} and possibly @{pull}
416  may want to share.
419 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
420  - merge: drop unused arg from abort_commit method signature
421  - merge: make prepare_to_commit responsible for write_merge_state
422  - t7505: ensure cleanup after hook blocks merge
423  - t7505: add missing &&
425  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
426  run during "git merge".  The log message stresses too much on one
427  hook, prepare-commit-msg, but it would equally apply to other hooks
428  like post-merge, I think.
430  Waiting for a reroll.
433 * jc/graph-post-root-gap (2013-12-30) 3 commits
434  - WIP: document what we want at the end
435  - graph: remove unused code a bit
436  - graph: stuff the current commit into graph->columns[]
438  This was primarily a RFH ($gmane/239580).
441 * np/pack-v4 (2013-09-18) 90 commits
442  . packv4-parse.c: add tree offset caching
443  . t1050: replace one instance of show-index with verify-pack
444  . index-pack, pack-objects: allow creating .idx v2 with .pack v4
445  . unpack-objects: decode v4 trees
446  . unpack-objects: allow to save processed bytes to a buffer
447  - ...
449  Nico and Duy advancing the eternal vaporware pack-v4.  This is here
450  primarily for wider distribution of the preview edition.
452  Needs to be rebased, now the pack-bitmap series is in.
455 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
456  - perf-lib: add test_perf_cleanup target
457  - perf-lib: split starting the test from the execution
459  Add test_perf_cleanup shell function to the perf suite, that allows
460  the script writers to define a test with a clean-up action.
462  Will hold.
465 * jc/show-branch (2014-03-24) 5 commits
466  - show-branch: use commit slab to represent bitflags of arbitrary width
467  - show-branch.c: remove "all_mask"
468  - show-branch.c: abstract out "flags" operation
469  - show-branch.c: lift all_mask/all_revs to a global static
470  - show-branch.c: update comment style
472  Waiting for the final step to lift the hard-limit before sending it out.
475 * jh/submodule-tests (2014-04-17) 1 commit
476  - t7410: 210 tests for various 'git submodule update' scenarios
478  More or less abandoned.  Will drop.
481 * nd/multiple-work-trees (2014-03-25) 28 commits
482  . count-objects: report unused files in $GIT_DIR/repos/...
483  . gc: support prune --repos
484  . gc: style change -- no SP before closing bracket
485  . prune: strategies for linked checkouts
486  . checkout: detach if the branch is already checked out elsewhere
487  . checkout: clean up half-prepared directories in --to mode
488  . checkout: support checking out into a new working directory
489  . use new wrapper write_file() for simple file writing
490  . wrapper.c: wrapper to open a file, fprintf then close
491  . setup.c: support multi-checkout repo setup
492  . setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
493  . setup.c: convert check_repository_format_gently to use strbuf
494  . setup.c: detect $GIT_COMMON_DIR in is_git_directory()
495  . setup.c: convert is_git_directory() to use strbuf
496  . git-stash: avoid hardcoding $GIT_DIR/logs/....
497  . *.sh: avoid hardcoding $GIT_DIR/hooks/...
498  . git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
499  . $GIT_COMMON_DIR: a new environment variable
500  . commit: use SEQ_DIR instead of hardcoding "sequencer"
501  . fast-import: use git_path() for accessing .git dir instead of get_git_dir()
502  . reflog: avoid constructing .lock path with git_path
503  . *.sh: respect $GIT_INDEX_FILE
504  . git_path(): be aware of file relocation in $GIT_DIR
505  . path.c: group git_path(), git_pathdup() and strbuf_git_path() together
506  . path.c: rename vsnpath() to do_git_path()
507  . git_snpath(): retire and replace with strbuf_git_path()
508  . path.c: make get_pathname() call sites return const char *
509  . path.c: make get_pathname() return strbuf instead of static buffer
511  A replacement for contrib/workdir/git-new-workdir that does not
512  rely on symbolic links and make sharing of objects and refs safer
513  by making the borrowee and borrowers aware of each other.
515 --------------------------------------------------
516 [Cooking]
518 * cc/replace-graft (2014-07-07) 9 commits
519  - replace: add test for --graft with a mergetag
520  - replace: check mergetags when using --graft
521  - replace: add test for --graft with signed commit
522  - replace: remove signature when using --graft
523  - contrib: add convert-grafts-to-replace-refs.sh
524  - Documentation: replace: add --graft option
525  - replace: add test for --graft
526  - replace: add --graft option
527  - replace: cleanup redirection style in tests
528  (this branch uses cc/for-each-mergetag.)
530  "git replace" learned a "--graft" option to rewrite parents of a
531  commit.
534 * jc/fix-clone-single-starting-at-a-tag (2014-06-23) 1 commit
535   (merged to 'next' on 2014-07-02 at cc0c4b1)
536  + builtin/clone.c: detect a clone starting at a tag correctly
538  Will merge to 'master'.
541 * mg/verify-commit (2014-06-23) 5 commits
542   (merged to 'next' on 2014-07-02 at 6d77bcf)
543  + t7510: test verify-commit
544  + t7510: exit for loop with test result
545  + verify-commit: scriptable commit signature verification
546  + gpg-interface: provide access to the payload
547  + gpg-interface: provide clear helper for struct signature_check
549  Add 'verify-commit' to be used in a way similar to 'verify-tag' is
550  used.  Further work on verifying the mergetags might be needed.
552  Will merge to 'master'.
555 * dt/refs-check-refname-component-sse-fix (2014-07-08) 2 commits
556   (merged to 'next' on 2014-07-08 at 35b839c)
557  + refs: fix valgrind suppression file
558  + refs.c: handle REFNAME_REFSPEC_PATTERN at end of page
560  Fixes to a topic that is already in 'master'.
562  Will merge to 'master'.
565 * jk/skip-prefix (2014-06-20) 18 commits
566   (merged to 'next' on 2014-06-23 at cd387a6)
567  + http-push: refactor parsing of remote object names
568  + imap-send: use skip_prefix instead of using magic numbers
569  + use skip_prefix to avoid repeated calculations
570  + git: avoid magic number with skip_prefix
571  + fetch-pack: refactor parsing in get_ack
572  + fast-import: refactor parsing of spaces
573  + stat_opt: check extra strlen call
574  + daemon: use skip_prefix to avoid magic numbers
575  + fast-import: use skip_prefix for parsing input
576  + use skip_prefix to avoid repeating strings
577  + use skip_prefix to avoid magic numbers
578  + transport-helper: avoid reading past end-of-string
579  + fast-import: fix read of uninitialized argv memory
580  + apply: use skip_prefix instead of raw addition
581  + refactor skip_prefix to return a boolean
582  + avoid using skip_prefix as a boolean
583  + daemon: mark some strings as const
584  + parse_diff_color_slot: drop ofs parameter
586  Will merge to 'master'.
589 * jk/xstrfmt (2014-06-25) 11 commits
590   (merged to 'next' on 2014-06-25 at 5031d4e)
591  + setup_git_env(): introduce git_path_from_env() helper
592   (merged to 'next' on 2014-06-23 at 64f2558)
593  + unique_path: fix unlikely heap overflow
594  + walker_fetch: fix minor memory leak
595  + merge: use argv_array when spawning merge strategy
596  + sequencer: use argv_array_pushf
597  + setup_git_env: use git_pathdup instead of xmalloc + sprintf
598  + use xstrfmt to replace xmalloc + strcpy/strcat
599  + use xstrfmt to replace xmalloc + sprintf
600  + use xstrdup instead of xmalloc + strcpy
601  + use xstrfmt in favor of manual size calculations
602  + strbuf: add xstrfmt helper
604  Will merge to 'master'.
607 * kb/perf-trace (2014-07-07) 17 commits
608  - progress: simplify performance measurement by using getnanotime()
609  - wt-status: simplify performance measurement by using getnanotime()
610  - git: add performance tracing for git's main() function to debug scripts
611  - trace: add trace_performance facility to debug performance issues
612  - trace: add high resolution timer function to debug performance issues
613  - trace: add 'file:line' to all trace output
614  - trace: move code around, in preparation to file:line output
615  - trace: add current timestamp to all trace output
616  - trace: disable additional trace output for unit tests
617  - trace: add infrastructure to augment trace output with additional info
618  - sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API
619  - Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables
620  - trace.h: suppress some sparse warnings and errors
621  - trace: improve trace performance
622  - trace: remove redundant printf format attribute
623  - trace: consistently name the format parameter
624  - trace: move trace declarations from cache.h to new trace.h
626  Will merge to 'next'.
629 * hv/submodule-config (2014-06-30) 4 commits
630  - do not die on error of parsing fetchrecursesubmodules option
631  - use new config API for worktree configurations of submodules
632  - extract functions for submodule config set and lookup
633  - implement submodule config cache for lookup of submodule names
636 * jl/submodule-tests (2014-07-07) 14 commits
637  - revert: add t3513 for submodule updates
638  - stash: add t3906 for submodule updates
639  - am: add t4255 for submodule updates
640  - cherry-pick: add t3512 for submodule updates
641  - pull: add t5572 for submodule updates
642  - rebase: add t3426 for submodule updates
643  - merge: add t7613 for submodule updates
644  - bisect: add t6041 for submodule updates
645  - reset: add t7112 for submodule updates
646  - read-tree: add t1013 for submodule updates
647  - apply: add t4137 for submodule updates
648  - checkout: call the new submodule update test framework
649  - submodules: add the lib-submodule-update.sh test library
650  - test-lib: add test_dir_is_empty()
652  Will merge to 'next'.
655 * po/error-message-style (2014-06-16) 1 commit
656  - doc: state coding guideline for error message punctuation
658  Expecting a reroll.
661 * rs/ref-transaction (2014-06-20) 48 commits
662  - refs.c: make write_ref_sha1 static
663  - fetch.c: change s_update_ref to use a ref transaction
664  - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
665  - refs.c: pass a skip list to name_conflict_fn
666  - refs.c: call lock_ref_sha1_basic directly from commit
667  - refs.c: move the check for valid refname to lock_ref_sha1_basic
668  - refs.c: pass NULL as *flags to read_ref_full
669  - refs.c: pass the ref log message to _create/delete/update instead of _commit
670  - refs.c: add an err argument to delete_ref_loose
671  - refs.c: make delete_ref use a transaction
672  - refs.c: make prune_ref use a transaction to delete the ref
673  - refs.c: remove lock_ref_sha1
674  - refs.c: remove the update_ref_write function
675  - refs.c: remove the update_ref_lock function
676  - refs.c: make lock_ref_sha1 static
677  - walker.c: use ref transaction for ref updates
678  - fast-import.c: use a ref transaction when dumping tags
679  - receive-pack.c: use a reference transaction for updating the refs
680  - refs.c: change update_ref to use a transaction
681  - branch.c: use ref transaction for all ref updates
682  - fast-import.c: change update_branch to use ref transactions
683  - sequencer.c: use ref transactions for all ref updates
684  - commit.c: use ref transactions for updates
685  - replace.c: use the ref transaction functions for updates
686  - tag.c: use ref transactions when doing updates
687  - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
688  - refs.c: make ref_transaction_begin take an err argument
689  - refs.c: update ref_transaction_delete to check for error and return status
690  - refs.c: change ref_transaction_create to do error checking and return status
691  - refs.c: change ref_transaction_update() to do error checking and return status
692  - refs.c: remove the onerr argument to ref_transaction_commit
693  - update-ref: use err argument to get error from ref_transaction_commit
694  - refs.c: make update_ref_write update a strbuf on failure
695  - refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
696  - refs.c: log_ref_write should try to return meaningful errno
697  - refs.c: make resolve_ref_unsafe set errno to something meaningful on error
698  - refs.c: commit_packed_refs to return a meaningful errno on failure
699  - refs.c: make remove_empty_directories always set errno to something sane
700  - refs.c: verify_lock should set errno to something meaningful
701  - refs.c: make sure log_ref_setup returns a meaningful errno
702  - refs.c: add an err argument to repack_without_refs
703  - lockfile.c: make lock_file return a meaningful errno on failurei
704  - lockfile.c: add a new public function unable_to_lock_message
705  - refs.c: add a strbuf argument to ref_transaction_commit for error logging
706  - refs.c: allow passing NULL to ref_transaction_free
707  - refs.c: constify the sha arguments for ref_transaction_create|delete|update
708  - refs.c: ref_transaction_commit should not free the transaction
709  - refs.c: remove ref_transaction_rollback
711  Portability workaround may be needed on top ($gmane/252496).
712  Updates in response to review comments from Michael ($gmane/253033)
713  may be needed for later parts, but the earlier parts look ready
714  for 'next'.
717 * jk/pretty-G-format-fixes (2014-06-25) 6 commits
718   (merged to 'next' on 2014-06-26 at 7138407)
719  + move "%G" format test from t7510 to t6006
720   (merged to 'next' on 2014-06-20 at f504bbc)
721  + pretty: avoid reading past end-of-string with "%G"
722  + t7510: check %G* pretty-format output
723  + t7510: test a commit signed by an unknown key
724  + t7510: use consistent &&-chains in loop
725  + t7510: stop referring to master in later tests
727  Will merge to 'master'.
730 * nd/split-index (2014-06-13) 32 commits
731   (merged to 'next' on 2014-07-08 at 49325ef)
732  + t1700: new tests for split-index mode
733  + t2104: make sure split index mode is off for the version test
734  + read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
735  + read-tree: note about dropping split-index mode or index version
736  + read-tree: force split-index mode off on --index-output
737  + rev-parse: add --shared-index-path to get shared index path
738  + update-index --split-index: do not split if $GIT_DIR is read only
739  + update-index: new options to enable/disable split index mode
740  + split-index: strip pathname of on-disk replaced entries
741  + split-index: do not invalidate cache-tree at read time
742  + split-index: the reading part
743  + split-index: the writing part
744  + read-cache: mark updated entries for split index
745  + read-cache: save deleted entries in split index
746  + read-cache: mark new entries for split index
747  + read-cache: split-index mode
748  + read-cache: save index SHA-1 after reading
749  + entry.c: update cache_changed if refresh_cache is set in checkout_entry()
750  + cache-tree: mark istate->cache_changed on prime_cache_tree()
751  + cache-tree: mark istate->cache_changed on cache tree update
752  + cache-tree: mark istate->cache_changed on cache tree invalidation
753  + unpack-trees: be specific what part of the index has changed
754  + resolve-undo: be specific what part of the index has changed
755  + update-index: be specific what part of the index has changed
756  + read-cache: be specific what part of the index has changed
757  + read-cache: be strict about "changed" in remove_marked_cache_entries()
758  + read-cache: store in-memory flags in the first 12 bits of ce_flags
759  + read-cache: relocate and unexport commit_locked_index()
760  + read-cache: new API write_locked_index instead of write_index/write_cache
761  + sequencer: do not update/refresh index if the lock cannot be held
762  + ewah: delete unused ewah_read_mmap_native declaration
763  + ewah: fix constness of ewah_read_mmap
765  An experiment to use two files (the base file and incremental
766  changes relative to it) to represent the index to reduce I/O cost
767  of rewriting a large index when only small part of the working tree
768  changes.
770  Will merge to 'master'.
773 * jc/test-lazy-prereq (2014-06-13) 1 commit
774  - tests: drop GIT_*_TIMING_TESTS environment variable support
776  Test-script clean-up.
778  Will hold.
781 * sk/mingw-unicode-spawn-args (2014-06-16) 6 commits
782   (merged to 'next' on 2014-06-30 at c8f79d0)
783  + Win32: Unicode arguments (incoming)
784  + Win32: Unicode arguments (outgoing)
785  + MinGW: disable CRT command line globbing
786  + Win32: fix potential multi-threading issue
787  + Win32: simplify internal mingw_spawn* APIs
788  + Win32: let mingw_execve() return an int
789  (this branch uses sk/mingw-main and sk/mingw-uni-console.)
791  Will merge to 'master'.
794 * sk/mingw-dirent (2014-06-09) 5 commits
795   (merged to 'next' on 2014-06-30 at ae9e2d6)
796  + Win32 dirent: improve dirent implementation
797  + Win32 dirent: clarify #include directives
798  + Win32 dirent: change FILENAME_MAX to MAX_PATH
799  + Win32 dirent: remove unused dirent.d_reclen member
800  + Win32 dirent: remove unused dirent.d_ino member
802  Will merge to 'master'.
805 * sk/mingw-main (2014-06-10) 2 commits
806   (merged to 'next' on 2014-06-30 at 447cb50)
807  + mingw: avoid const warning
808  + Win32: move main macro to a function
809  (this branch is used by sk/mingw-uni-console and sk/mingw-unicode-spawn-args.)
811  Will merge to 'master'.
814 * sk/mingw-uni-console (2014-06-16) 7 commits
815   (merged to 'next' on 2014-06-30 at f4fbc41)
816  + Win32: reliably detect console pipe handles
817  + Win32: fix broken pipe detection
818  + Win32: Thread-safe windows console output
819  + Win32: add Unicode conversion functions
820  + Win32: warn if the console font doesn't support Unicode
821  + Win32: detect console streams more reliably
822  + Win32: support Unicode console output
823  (this branch is used by sk/mingw-unicode-spawn-args; uses sk/mingw-main.)
825  Will merge to 'master'.
828 * mt/patch-id-stable (2014-06-10) 1 commit
829  - patch-id: change default to stable
831  Teaches "git patch-id" to compute the patch ID that does not change
832  when the files in a single patch is reordered. As this new algorithm
833  is backward incompatible, the last bit to flip it to be the default
834  is left out of 'master' for now.
836  Will hold.