What's cooking (2014/08 #03)
[git.git] / whats-cooking.txt
blob40dcd37563c9e8b364da02df22eb01617dc0d118
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Aug 2014, #03; Wed, 20)
4 X-master-at: 6c4ab27f2378ce67940b4496365043119d7ffff2
5 X-next-at: 9eef2c89753895da807c936ff1ba3a255c8370c9
7 What's cooking in git.git (Aug 2014, #03; Wed, 20)
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 A few fixes for regressions have been posted since 2.1 was tagged,
15 which I'd like to address before moving any topic to 'master',
16 rewinding 'next', or doing anything for the 2.2 cycle.  Hopefully by
17 the end of this week 'next' will be rewound and rebuilt and then we
18 can start taking patches for new topics in earnest from that point.
20 You can find the changes described here in the integration branches
21 of the repositories listed at
23     http://git-blame.blogspot.com/p/git-public-repositories.html
25 --------------------------------------------------
26 [New Topics]
28 * br/http-init-fix (2014-08-18) 2 commits
29  - http: style fixes for curl_multi_init error check
30  - http.c: die if curl_*_init fails
32  Needs S-o-b from peff for the topmost one.
35 * br/imap-send-simplify-tunnel-child-process (2014-08-20) 2 commits
36  - imap-send.c: imap_folder -> imap_server_conf.folder
37  - git-imap-send: simplify tunnel construction
39  Will merge to 'next'.
42 * jc/config-mak-document-darwin-vs-macosx (2014-08-15) 1 commit
43  - config.mak.uname: add hint on uname_R for MacOS X
44  (this branch uses km/no-apple-common-crypto-on-darwin-8-and-below.)
46  Will merge to 'next'.
49 * jk/fix-profile-feedback-build (2014-08-19) 1 commit
50  - Makefile: make perf tests optional for profile build
52  Fix profile-feedback build broken in 2.1 for tarball releases.
54  Will merge to 'next'.
57 * jk/pack-shallow-always-without-bitmap (2014-08-12) 1 commit
58  - pack-objects: turn off bitmaps when we see --shallow lines
60  Reachability bitmaps do not work with shallow operations.
62  Will merge to 'next'.
65 * jn/header-dependencies (2014-08-10) 1 commit
66  - Update hard-coded header dependencies
68  Needs further discussions on the list.
71 * jn/unpack-trees-checkout-m-carry-deletion (2014-08-13) 4 commits
72  - SQUASH???
73  - checkout -m: attempt merge when deletion of path was staged
74  - unpack-trees: use 'cuddled' style for if-else cascade
75  - unpack-trees: simplify 'all other failures' case
77  Needs tests; perhaps squashing in the topmost "SQUASH???" is enough.
80 * km/no-apple-common-crypto-on-darwin-8-and-below (2014-08-15) 1 commit
81  - config.mak.uname: set NO_APPLE_COMMON_CRYPTO on older systems
82  (this branch is used by jc/config-mak-document-darwin-vs-macosx.)
84  Build automation for older versions of MacOS X.
86  Will merge to 'next'.
89 * nd/large-blobs (2014-08-18) 5 commits
90  - diff: shortcut for diff'ing two binary SHA-1 objects
91  - diff --stat: mark any file larger than core.bigfilethreshold binary
92  - diff.c: allow to pass more flags to diff_populate_filespec
93  - sha1_file.c: do not die failing to malloc in unpack_compressed_entry
94  - wrapper.c: introduce gentle xmallocz that does not die()
96  Will merge to 'next'.
99 * nd/mv-code-cleaning (2014-08-11) 9 commits
100  - SQUASH???
101  - mv: no SP between function name and the first opening parenthese
102  - mv: combine two if(s)
103  - mv: unindent one level for directory move code
104  - mv: move index search code out
105  - mv: remove an "if" that's always true
106  - mv: split submodule move preparation code out
107  - mv: flatten error handling code block
108  - mv: mark strings for translations
110  Needs rerolling to account for the topmost "SQUASH???" simplification.
113 * nd/strbuf-utf8-replace (2014-08-11) 1 commit
114  - utf8.c: fix strbuf_utf8_replace() consuming data beyond input string
116  Will merge to 'next'.
119 * rr/mergetool-temporary-filename-tweak (2014-08-19) 1 commit
120  - Allow the user to change the temporary file name for mergetool
122  Needs rerolling (new paragraph in doc seems to be in a wrong place)
125 * rs/clean-menu-item-defn (2014-08-18) 1 commit
126  - clean: use f(void) instead of f() to declare a pointer to a function without arguments
128  Will merge to 'next'.
131 * rs/inline-compat-path-macros (2014-08-18) 1 commit
132  - turn path macros into inline function
134  Will merge to 'next'.
137 * rs/refresh-beyond-symlink (2014-08-10) 1 commit
138  - read-cache: check for leading symlinks when refreshing index
140  "git add x" where x that used to be a directory has become a
141  symbolic link to a directory misbehaved.
143  Will merge to 'next'.
146 * sb/blame-msg-i18n (2014-08-12) 1 commit
147  - builtin/blame.c: add translation to warning about failed revision walk
149  Will merge to 'next'.
152 * sb/plug-leaks (2014-08-10) 2 commits
153  - clone.c: don't leak memory in cmd_clone
154  - remote.c: don't leak the base branch name in format_tracking_info
156  Will merge to 'next'.
159 * sb/prepare-revision-walk-error-check (2014-08-12) 1 commit
160  - prepare_revision_walk(): check for return value in all places
162  Will merge to 'next'.
165 * sb/unpack-trees-dead-code-removal (2014-08-12) 2 commits
166  - SQUASH???
167  - unpack-tree.c: remove dead code
169  Will discard (jn/unpack-trees-checkout-m-carry-deletion should do the same).
172 * so/rebase-doc (2014-08-12) 1 commit
173  - Documentation/git-rebase.txt: -f forces a rebase that would otherwise be a no-op
175  May need description on what makes various modes of operation to
176  decide that the request can become a "no-op".
178  Will merge to 'next'.
181 * sp/stream-clean-filter (2014-08-12) 2 commits
182  - convert: Stream from fd to required clean filter instead of mmap
183  - convert: Refactor would_convert_to_git() to single arg 'path'
185  Will be rerolled.
188 * ta/config-add-to-empty-or-true-fix (2014-08-18) 1 commit
189  - make config --add behave correctly for empty and NULL values
191  Will be rerolled.
194 * jc/push-cert (2014-08-19) 18 commits
195  - signed push: final protocol update
196  - send-pack: send feature request on push-cert packet
197  - receive-pack: GPG-validate push certificates
198  - the beginning of the signed push
199  - pack-protocol doc: typofix for PKT-LINE
200  - gpg-interface: move parse_signature() to where it should be
201  - gpg-interface: move parse_gpg_output() to where it should be
202  - send-pack: clarify that cmds_sent is a boolean
203  - send-pack: refactor inspecting and resetting status and sending commands
204  - send-pack: rename "new_refs" to "need_pack_data"
205  - send-pack: factor out capability string generation
206  - send-pack: always send capabilities
207  - send-pack: refactor decision to send update per ref
208  - send-pack: move REF_STATUS_REJECT_NODELETE logic a bit higher
209  - receive-pack: factor out queueing of command
210  - receive-pack: do not reuse old_sha1[] to other things
211  - receive-pack: parse feature request a bit earlier
212  - receive-pack: do not overallocate command structure
214  Allow "git push" request to be signed, so that it can be verified
215  audited, using the GPG signature of the person who pushed, that the
216  tips of branches at a public repository really point the commits
217  the pusher wanted to, without having to "trust" the server.
219  Needs further discussion and then a reroll.
221  Replay attack prevention needs to be tightened and also need to fix
222  a few minor typos.
224 * jk/diff-tree-t-fix (2014-08-20) 1 commit
225  - intersect_paths: respect mode in git's tree-sort
227  Fix (rarely used) "git diff-tree -t" regression in 2.0.
229  Will merge to 'next'.
232 * rs/child-process-init (2014-08-20) 4 commits
233  - run-command: inline prepare_run_command_v_opt()
234  - run-command: call run_command_v_opt_cd_env() instead of duplicating it
235  - run-command: introduce child_process_init()
236  - run-command: introduce CHILD_PROCESS_INIT
238  Will merge to 'next'.
240 --------------------------------------------------
241 [Stalled]
243 * jk/tag-contains (2014-06-30) 8 commits
244  . perf: add tests for tag --contains
245  . tag: use commit_contains
246  . commit: provide a fast multi-tip contains function
247  . string-list: add pos to iterator callback
248  . add functions for memory-efficient bitmaps
249  . paint_down_to_common: use prio_queue
250  . tag: factor out decision to stream tags
251  . tag: allow --sort with -n
253  Expecting a reroll.
256 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
257  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
258  - git-add--interactive: Preserve diff heading when splitting hunks
260  Waiting for a reroll.
263 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
264  - gitweb: Harden UTF-8 handling in generated links
266  $gmane/250758?
269 * rh/prompt-tests (2014-06-05) 11 commits
270  - t9904: new __git_ps1 tests for Zsh
271  - test-lib: make it possible to override how test code is eval'd
272  - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
273  - lib-prompt-tests.sh: put all tests inside a function
274  - t9903: move prompt tests to a new lib-prompt-tests.sh file
275  - t9903: move PS1 color code variable definitions to lib-bash.sh
276  - t9903: include "Bash" in test names via new $shellname var
277  - t9903: run pc mode tests again with PS1 expansion disabled
278  - t9903: move test name prefix to a separate variable
279  - t9903: put the Bash pc mode prompt test cases in a function
280  - t9903: remove Zsh test from the suite of Bash prompt tests
282  Expecting a reroll to limit the damage to test_eval_; also reported
283  to be broken with older zsh that are still in the field ($gmane/251231).
286 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
287  - userdiff: support Java try keyword
288  - userdiff: support C# async methods and correct C# keywords
290  Reviews sent; waiting for a response.
293 * cc/interpret-trailers (2014-05-28) 11 commits
294  - Documentation: add documentation for 'git interpret-trailers'
295  - trailer: add tests for commands in config file
296  - trailer: execute command from 'trailer.<name>.command'
297  - trailer: add tests for "git interpret-trailers"
298  - trailer: add interpret-trailers command
299  - trailer: put all the processing together and print
300  - trailer: parse trailers from file or stdin
301  - trailer: process command line trailer arguments
302  - trailer: read and process config information
303  - trailer: process trailers from input message and arguments
304  - trailer: add data structures and basic functions
306  A new filter to programatically edit the tail end of the commit log
307  messages.
309  What is the status of this one?  I think I saw reviews by Michael
310  but after that I do not recall seeing any updates.
313 * mh/lockfile (2014-04-15) 25 commits
314  . trim_last_path_elm(): replace last_path_elm()
315  . resolve_symlink(): take a strbuf parameter
316  . resolve_symlink(): use a strbuf for internal scratch space
317  . change lock_file::filename into a strbuf
318  . commit_lock_file(): use a strbuf to manage temporary space
319  . try_merge_strategy(): use a statically-allocated lock_file object
320  . try_merge_strategy(): remove redundant lock_file allocation
321  . struct lock_file: declare some fields volatile
322  . lockfile: avoid transitory invalid states
323  . commit_lock_file(): die() if called for unlocked lockfile object
324  . commit_lock_file(): inline temporary variable
325  . remove_lock_file(): call rollback_lock_file()
326  . lock_file(): exit early if lockfile cannot be opened
327  . write_packed_entry_fn(): convert cb_data into a (const int *)
328  . prepare_index(): declare return value to be (const char *)
329  . delete_ref_loose(): don't muck around in the lock_file's filename
330  . cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
331  . lockfile.c: document the various states of lock_file objects
332  . lock_file(): always add lock_file object to lock_file_list
333  . hold_lock_file_for_append(): release lock on errors
334  . lockfile: unlock file if lockfile permissions cannot be adjusted
335  . rollback_lock_file(): set fd to -1
336  . rollback_lock_file(): do not clear filename redundantly
337  . api-lockfile: expand the documentation
338  . unable_to_lock_die(): rename function from unable_to_lock_index_die()
340  Ejected from 'pu' to unclutter.
341  Expecting a reroll.
344 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
345  - git-rebase: print name of rev when using shorthand
347  Teach "git rebase -" to report the concrete name of the branch
348  (i.e. the previous one).
350  But it stops short and does not do the same for "git rebase @{-1}".
351  Expecting a reroll.
354 * tr/merge-recursive-index-only (2014-02-05) 3 commits
355  - merge-recursive: -Xindex-only to leave worktree unchanged
356  - merge-recursive: internal flag to avoid touching the worktree
357  - merge-recursive: remove dead conditional in update_stages()
358  (this branch is used by tr/remerge-diff.)
361 * tr/remerge-diff (2014-02-26) 5 commits
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  . revision: fold all merge diff variants into an enum merge_diff_mode
366  . combine-diff: do not pass revs->dense_combined_merges redundantly
367  (this branch uses tr/merge-recursive-index-only.)
369  "log -p" output learns a new way to let users inspect a merge
370  commit by showing the differences between the automerged result
371  with conflicts the person who recorded the merge would have seen
372  and the final conflict resolution that was recorded in the merge.
374  Needs to be rebased, now kb/fast-hashmap topic is in.
377 * jk/makefile (2014-02-05) 16 commits
378  . FIXUP
379  . move LESS/LV pager environment to Makefile
380  . Makefile: teach scripts to include make variables
381  . FIXUP
382  . Makefile: auto-build C strings from make variables
383  . Makefile: drop *_SQ variables
384  . FIXUP
385  . Makefile: add c-quote helper function
386  . Makefile: introduce sq function for shell-quoting
387  . Makefile: always create files via make-var
388  . Makefile: store GIT-* sentinel files in MAKE/
389  . Makefile: prefer printf to echo for GIT-*
390  . Makefile: use tempfile/mv strategy for GIT-*
391  . Makefile: introduce make-var helper function
392  . Makefile: fix git-instaweb dependency on gitweb
393  . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS
395  Simplify the Makefile rules and macros that exist primarily for
396  quoting purposes, and make it easier to robustly express the
397  dependency rules.
399  Expecting a reroll.
402 * po/everyday-doc (2014-01-27) 1 commit
403  - Make 'git help everyday' work
405  This may make the said command to emit something, but the source is
406  not meant to be formatted into a manual pages to begin with, and
407  also its contents are a bit stale.  It may be a good first step in
408  the right direction, but needs more work to at least get the
409  mark-up right before public consumption.
411  Will hold.
414 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
415  - merge: drop unused arg from abort_commit method signature
416  - merge: make prepare_to_commit responsible for write_merge_state
417  - t7505: ensure cleanup after hook blocks merge
418  - t7505: add missing &&
420  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
421  run during "git merge".  The log message stresses too much on one
422  hook, prepare-commit-msg, but it would equally apply to other hooks
423  like post-merge, I think.
425  Waiting for a reroll.
428 * jc/graph-post-root-gap (2013-12-30) 3 commits
429  - WIP: document what we want at the end
430  - graph: remove unused code a bit
431  - graph: stuff the current commit into graph->columns[]
433  This was primarily a RFH ($gmane/239580).
436 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
437  - perf-lib: add test_perf_cleanup target
438  - perf-lib: split starting the test from the execution
440  Add test_perf_cleanup shell function to the perf suite, that allows
441  the script writers to define a test with a clean-up action.
443  Will hold.
446 * jc/show-branch (2014-03-24) 5 commits
447  - show-branch: use commit slab to represent bitflags of arbitrary width
448  - show-branch.c: remove "all_mask"
449  - show-branch.c: abstract out "flags" operation
450  - show-branch.c: lift all_mask/all_revs to a global static
451  - show-branch.c: update comment style
453  Waiting for the final step to lift the hard-limit before sending it out.
455 --------------------------------------------------
456 [Cooking]
458 * tf/imap-send-create (2014-08-01) 3 commits
459  - SQUASH??? varargs form of issue-imap-cmd is no longer used
460  - imap-send: create target mailbox if it is missing
461  - imap-send: clarify CRAM-MD5 vs LOGIN documentation
463  Will merge to 'next' after dealing with the SQUASH??? fix-up.
466 * bc/archive-pax-header-mode (2014-08-04) 1 commit
467   (merged to 'next' on 2014-08-13 at 9972bb2)
468  + archive: honor tar.umask even for pax headers
470  Implementations of "tar" that do not understand an extended pax
471  header would extract the contents of it in a regular file; make
472  sure the permission bits of this file follows the same tar.umask
473  configuration setting.
475  Will merge to 'master'.
478 * bc/imap-send-doc (2014-08-05) 1 commit
479  - imap-send doc: omit confusing "to use imap-send" modifier
481  Will merge to 'next'.
484 * jc/apply-ws-prefix (2014-08-07) 3 commits
485  - apply: omit ws check for excluded paths
486  - apply: hoist use_patch() helper for path exclusion up
487  - apply: use the right attribute for paths in non-Git patches
489  Applying a patch not generated by Git in a subdirectory used to
490  check the whitespace breakage using the attributes for incorrect
491  paths. Also whitespace checks were performed even for paths
492  excluded via "git apply --exclude=<path>" mechanism.
494  Will merge to 'next'.
497 * jk/command-line-config-empty-string (2014-08-05) 1 commit
498  - config: teach "git -c" to recognize an empty string
500  "git -c section.var command" and "git -c section.var= command"
501  should pass the configuration differently (the former should be
502  a boolean true, the latter should be an empty string).
504  Will merge to 'next'.
507 * jk/pack-bitmap (2014-08-04) 1 commit
508  - pack-bitmap: do not use gcc packed attribute
510  Hold, waiting for Karsten's replacement.
513 * jk/pretty-empty-format (2014-07-30) 3 commits
514   (merged to 'next' on 2014-08-13 at 543bb4d)
515  + pretty: make empty userformats truly empty
516  + pretty: treat "--format=" as an empty userformat
517  + revision: drop useless string offset when parsing "--pretty"
519  "git log --pretty/format=" with an empty format string did not mean
520  the more obvious "No output whatsoever" but "Use default format",
521  which was counterintuitive.
523  Will merge to 'master'.
526 * la/init-doc (2014-08-08) 7 commits
527  - Documentation: git-init: flesh out example
528  - Documentation: git-init: template directory: reword and cross-reference
529  - Documentation: git-init: reword parenthetical statements
530  - Documentation: git-init: --separate-git-dir: clarify
531  - Documentation: git-init: template directory: reword
532  - Documentation: git-init: list items facelift
533  - Documentation: git-init: typographical fixes
535  Will merge to 'next'.
538 * lf/bundle-exclusion (2014-08-07) 1 commit
539  - bundle: fix exclusion of annotated tags
541  Will merge to 'next'.
544 * mm/log-branch-desc-plug-leak (2014-08-07) 1 commit
545  - builtin/log.c: fix minor memory leak
547  Will merge to 'next'.
550 * ta/config-set-1 (2014-08-07) 8 commits
551  - add tests for `git_config_get_string_const()`
552  - add a test for semantic errors in config files
553  - rewrite git_config() to use the config-set API
554  - config: add `git_die_config()` to the config-set API
555  - change `git_config()` return value to void
556  - add line number and file name info to `config_set`
557  - config.c: fix accuracy of line number in errors
558  - config.c: mark error and warnings strings for translation
559  (this branch is used by ta/config-set-2; uses ta/config-set.)
562 * ta/config-set-2 (2014-08-13) 15 commits
563  - builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`
564  - merge-recursive.c: replace `git_config()` with `git_config_get_int()`
565  - ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
566  - fast-import.c: replace `git_config()` with `git_config_get_*()` family
567  - branch.c: replace `git_config()` with `git_config_get_string()
568  - alias.c: replace `git_config()` with `git_config_get_string()`
569  - imap-send.c: replace `git_config()` with `git_config_get_*()` family
570  - pager.c: replace `git_config()` with `git_config_get_value()`
571  - builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
572  - rerere.c: replace `git_config()` with `git_config_get_*()` family
573  - fetchpack.c: replace `git_config()` with `git_config_get_*()` family
574  - archive.c: replace `git_config()` with `git_config_get_bool()` family
575  - read-cache.c: replace `git_config()` with `git_config_get_*()` family
576  - http-backend.c: replace `git_config()` with `git_config_get_bool()` family
577  - daemon.c: replace `git_config()` with `git_config_get_bool()` family
578  (this branch uses ta/config-set and ta/config-set-1.)
581 * ta/pretty-parse-config (2014-08-04) 1 commit
582   (merged to 'next' on 2014-08-13 at 07396f4)
583  + pretty.c: make git_pretty_formats_config return -1 on git_config_string failure
585  Will merge to 'master'.
588 * jk/stash-list-p (2014-08-07) 1 commit
589  - stash: default listing to working-tree diff
591  Teach "git stash list -p" to show the difference between the base
592  commit version and the working tree version, which is in line with
593  what "git show" gives.
595  Will merge to 'next'.
598 * pr/remotes-in-hashmap (2014-07-30) 1 commit
599   (merged to 'next' on 2014-08-13 at 850c14a)
600  + use a hashmap to make remotes faster
602  Optimize remotes configuration look-up in a repository with very
603  many remotes defined.
605  Will merge to 'master'.
608 * rs/ref-transaction-multi (2014-07-31) 5 commits
609  - refs.c: make the *_packed_refs functions static
610  - refs.c: make repack_without_refs static
611  - remote.c: use a transaction for deleting refs
612  - refs.c: write updates to packed refs when a transaction has more than one ref
613  - refs.c: move reflog updates into its own function
614  (this branch uses rs/ref-transaction, rs/ref-transaction-1, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
616  Follow-up on rs/ref-transaction series to use the packed-ref to
617  achieve atomicity when multiple refs are involved.
619  No more nitpicks and better design suggestions?
622 * rs/ref-transaction-rename (2014-07-31) 5 commits
623  - refs.c: rollback the lockfile before we die() in repack_without_refs
624  - refs.c: update rename_ref to use a transaction
625  - refs.c: use packed refs when deleting refs during a transaction
626  - refs.c: return error instead of dying when locking fails during transaction
627  - refs.c: allow passing raw git_committer_info as email to _update_reflog
628  (this branch is used by rs/ref-transaction-multi; uses rs/ref-transaction, rs/ref-transaction-1 and rs/ref-transaction-reflog.)
630  Follow-up on rs/ref-transaction series to make renaming a ref
631  transactional (i.e. "delete old and create new" should not leave
632  an in-between state behind when it fails).
634  No more nitpicks and better design suggestions?
637 * nd/lock-paths-absolute (2014-08-01) 3 commits
638  - lockfile.c: store absolute path
639  - lockfile.c: remove PATH_MAX limit in resolve_symlink()
640  - lockfile.c: remove PATH_MAX limitation (except in resolve_symlink)
642  Will drop and ask Michael to possibly cooperate and merge with mh/lockfile.
645 * mm/config-message-i18n (2014-08-01) 1 commit
646  - config.c: mark error and warnings strings for translation
648  Will discard (now at the bottom of ta/config-set-1 topic).
651 * mm/config-edit-global (2014-07-25) 3 commits
652   (merged to 'next' on 2014-07-31 at ecce1c7)
653  + commit: advertise config --global --edit on guessed identity
654  + home_config_paths(): let the caller ignore xdg path
655  + config --global --edit: create a template file if needed
657  Start "git config --edit --global" from a skeletal per-user
658  configuration file contents, instead of a total blank, when the
659  user does not already have any.  This immediately reduces the need
660  for a later "Have you forgotten setting core.user?" and we can add
661  more to the template as we gain more experience.
663  Will cook in 'next'.
666 * rs/init-no-duplicate-real-path (2014-07-28) 1 commit
667   (merged to 'next' on 2014-07-31 at 683112e)
668  + init: avoid superfluous real_path() calls
670  Will cook in 'next'.
673 * rs/ref-transaction-reflog (2014-07-23) 15 commits
674  - refs.c: allow deleting refs with a broken sha1
675  - refs.c: remove lock_any_ref_for_update
676  - refs.c: make unlock_ref/close_ref/commit_ref static
677  - refs.c: rename log_ref_setup to create_reflog
678  - reflog.c: use a reflog transaction when writing during expire
679  - refs.c: allow multiple reflog updates during a single transaction
680  - refs.c: only write reflog update if msg is non-NULL
681  - refs.c: add a flag to allow reflog updates to truncate the log
682  - refs.c: add a transaction function to append a reflog entry
683  - lockfile.c: make hold_lock_file_for_append preserve meaningful errno
684  - refs.c: add a function to append a reflog entry to a fd
685  - refs.c: add a new update_type field to ref_update
686  - refs.c: rename the transaction functions
687  - refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
688  - refs.c: make ref_transaction_create a wrapper to ref_transaction_update
689  (this branch is used by rs/ref-transaction-multi and rs/ref-transaction-rename; uses rs/ref-transaction and rs/ref-transaction-1.)
691  Cover updates to reflog with the same transaction mechanism as used
692  for reflog manipulations.
694  No more nitpicks and better design suggestions?
697 * cb/mergetool-difftool (2014-07-21) 2 commits
698  - difftool: don't assume that default sh is sane
699  - mergetool: don't require a work tree for --tool-help
701  Update the way the "difftool --help" shows the help message that is
702  shared with the "mergetool" to reduce one shell dependency.
704  Will be rerolled.
707 * rs/strbuf-getcwd (2014-08-18) 11 commits
708   (merged to 'next' on 2014-08-18 at 9eef2c8)
709  + fixup! setup: convert setup_git_directory_gently_1 et al. to strbuf
710   (merged to 'next' on 2014-07-31 at 6edc3bc)
711  + use strbuf_add_absolute_path() to add absolute paths
712  + abspath: convert absolute_path() to strbuf
713  + use xgetcwd() to set $GIT_DIR
714  + use xgetcwd() to get the current directory or die
715  + wrapper: add xgetcwd()
716  + abspath: convert real_path_internal() to strbuf
717  + abspath: use strbuf_getcwd() to remember original working directory
718  + setup: convert setup_git_directory_gently_1 et al. to strbuf
719  + unix-sockets: use strbuf_getcwd()
720  + strbuf: add strbuf_getcwd()
722  Will cook in 'next'.
725 * jc/not-mingw-cygwin (2014-07-21) 2 commits
726  - test prerequisites: enumerate with commas
727  - test prerequisites: eradicate NOT_FOO
729  We have been using NOT_{MINGW,CYGWIN} test prerequisites long
730  before Peff invented support for negated prerequisites e.g. !MINGW
731  and we still add more uses of the former.  Convert them to the
732  latter to avoid confusion.
735 * ta/config-set (2014-07-29) 2 commits
736   (merged to 'next' on 2014-08-13 at 99011c8)
737  + test-config: add tests for the config_set API
738  + add `config_set` API for caching config-like files
739  (this branch is used by ta/config-set-1 and ta/config-set-2.)
741  Add in-core caching layer to let us avoid reading the same
742  configuration files number of times.
744  Will merge to 'master'.
747 * rs/ref-transaction-1 (2014-07-16) 20 commits
748  - refs.c: make delete_ref use a transaction
749  - refs.c: make prune_ref use a transaction to delete the ref
750  - refs.c: remove lock_ref_sha1
751  - refs.c: remove the update_ref_write function
752  - refs.c: remove the update_ref_lock function
753  - refs.c: make lock_ref_sha1 static
754  - walker.c: use ref transaction for ref updates
755  - fast-import.c: use a ref transaction when dumping tags
756  - receive-pack.c: use a reference transaction for updating the refs
757  - refs.c: change update_ref to use a transaction
758  - branch.c: use ref transaction for all ref updates
759  - fast-import.c: change update_branch to use ref transactions
760  - sequencer.c: use ref transactions for all ref updates
761  - commit.c: use ref transactions for updates
762  - replace.c: use the ref transaction functions for updates
763  - tag.c: use ref transactions when doing updates
764  - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
765  - refs.c: make ref_transaction_begin take an err argument
766  - refs.c: update ref_transaction_delete to check for error and return status
767  - refs.c: change ref_transaction_create to do error checking and return status
768  (this branch is used by rs/ref-transaction, rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
770  The second batch of the transactional ref update series.
772  No more nitpicks and better design suggestions?
775 * jc/reopen-lock-file (2014-07-14) 1 commit
776   (merged to 'next' on 2014-07-21 at 8277dc9)
777  + lockfile: allow reopening a closed but still locked file
779  Needed in the "commit -p" code path to update the cache tree in the
780  index (e.g. for dt/cache-tree-repair topic).
782  Will cook in 'next'.
785 * nd/multiple-work-trees (2014-07-17) 31 commits
786   (merged to 'next' on 2014-07-17 at a29d310)
787  + checkout: don't require a work tree when checking out into a new one
788  + git_path(): keep "info/sparse-checkout" per work-tree
789  + count-objects: report unused files in $GIT_DIR/repos/...
790  + gc: support prune --repos
791  + gc: factor out gc.pruneexpire parsing code
792  + gc: style change -- no SP before closing parenthesis
793  + prune: strategies for linked checkouts
794  + checkout: detach if the branch is already checked out elsewhere
795  + checkout: clean up half-prepared directories in --to mode
796  + checkout: support checking out into a new working directory
797  + use new wrapper write_file() for simple file writing
798  + wrapper.c: wrapper to open a file, fprintf then close
799  + setup.c: support multi-checkout repo setup
800  + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
801  + setup.c: convert check_repository_format_gently to use strbuf
802  + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
803  + setup.c: convert is_git_directory() to use strbuf
804  + git-stash: avoid hardcoding $GIT_DIR/logs/....
805  + *.sh: avoid hardcoding $GIT_DIR/hooks/...
806  + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
807  + $GIT_COMMON_DIR: a new environment variable
808  + commit: use SEQ_DIR instead of hardcoding "sequencer"
809  + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
810  + reflog: avoid constructing .lock path with git_path
811  + *.sh: respect $GIT_INDEX_FILE
812  + git_path(): be aware of file relocation in $GIT_DIR
813  + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
814  + path.c: rename vsnpath() to do_git_path()
815  + git_snpath(): retire and replace with strbuf_git_path()
816  + path.c: make get_pathname() call sites return const char *
817  + path.c: make get_pathname() return strbuf instead of static buffer
818  (this branch is used by nd/multiple-work-trees-1.)
820  A replacement for contrib/workdir/git-new-workdir that does not
821  rely on symbolic links and make sharing of objects and refs safer
822  by making the borrowee and borrowers aware of each other.
824  Will kick back to 'pu'.
827 * nd/multiple-work-trees-1 (2014-07-29) 8 commits
828   (merged to 'next' on 2014-08-13 at 4f3a585)
829  + checkout --to: do not touch existing target directory
830  + checkout: prefix --to argument properly when cwd is moved
831  + environment.c: fix incorrect git_graft_file initialization
832  + checkout --to: fix dangling pointers in remove_junk()
833  + checkout: no auto-detach if the ref is already checked out
834  + prune --repos: fix uninitialized access
835  + checkout: no need to call check_linked_checkouts if head_ref is NULL
836  + gitrepository-layout.txt: s/ignored/ignored if/
837  (this branch uses nd/multiple-work-trees.)
839  Continue polishing nd/multiple-work-trees topic in 'next'.
841  Will kick back to 'pu'.
844 * dt/cache-tree-repair (2014-07-14) 4 commits
845   (merged to 'next' on 2014-07-21 at e83db34)
846  + cache-tree: Write updated cache-tree after commit
847  + cache-tree: subdirectory tests
848  + test-dump-cache-tree: invalid trees are not errors
849  + cache-tree: create/update cache-tree on checkout
851  Add a few more places in "commit" and "checkout" that make sure
852  that the cache-tree is fully populated in the index.
854  Will cook in 'next'.
857 * hv/submodule-config (2014-06-30) 4 commits
858   (merged to 'next' on 2014-07-17 at 5e0ce45)
859  + do not die on error of parsing fetchrecursesubmodules option
860  + use new config API for worktree configurations of submodules
861  + extract functions for submodule config set and lookup
862  + implement submodule config cache for lookup of submodule names
864  Will cook in 'next'.
867 * rs/ref-transaction (2014-07-17) 12 commits
868  - refs.c: fix handling of badly named refs
869  - refs.c: make write_ref_sha1 static
870  - fetch.c: change s_update_ref to use a ref transaction
871  - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
872  - refs.c: pass a skip list to name_conflict_fn
873  - refs.c: call lock_ref_sha1_basic directly from commit
874  - refs.c: move the check for valid refname to lock_ref_sha1_basic
875  - refs.c: pass NULL as *flags to read_ref_full
876  - refs.c: pass the ref log message to _create/delete/update instead of _commit
877  - refs.c: add an err argument to delete_ref_loose
878  - wrapper.c: add a new function unlink_or_msg
879  - wrapper.c: simplify warn_if_unremovable
880  (this branch is used by rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename; uses rs/ref-transaction-1.)
883 * jc/test-lazy-prereq (2014-06-13) 1 commit
884  - tests: drop GIT_*_TIMING_TESTS environment variable support
886  Test-script clean-up.
888  Will hold.
891 * mt/patch-id-stable (2014-06-10) 1 commit
892  - patch-id: change default to stable
894  Teaches "git patch-id" to compute the patch ID that does not change
895  when the files in a single patch is reordered. As this new algorithm
896  is backward incompatible, the last bit to flip it to be the default
897  is left out of 'master' for now.
899  Will hold.
901 --------------------------------------------------
902 [Discarded]
904 * jh/submodule-tests (2014-04-17) 1 commit
905  . t7410: 210 tests for various 'git submodule update' scenarios
908 * nd/path-max-is-better-than-hardcoded-magic-1024 (2014-07-17) 1 commit
909  . abspath.c: use PATH_MAX in real_path_internal()
911  rs/strbuf-getcwd topic covers this codepath in a better way.