What's cooking (2014/07 #05)
[alt-git.git] / whats-cooking.txt
blob967c5023dba0d7a140859cf4111bf44e772f5993
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jul 2014, #05; Thu, 24)
4 X-master-at: 996b0fdbb4ff63bfd880b3901f054139c95611cf
5 X-next-at: 7327a17171fc87d5f8f5c790eb1ba1d0e031482d
7 What's cooking in git.git (Jul 2014, #05; Thu, 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 We would need to start slowing down to prepare for -rc0 preview at
15 the end of this week and then feature freeze.  Some topics that
16 joined 'next' late may want to stay there for the remainder of this
17 cycle.  Many of the accumulated fixes have been flushed to 'maint'
18 and Git 2.0.3 has been tagged.
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 [Graduated to "master"]
28 * jk/tag-sort (2014-07-17) 2 commits
29   (merged to 'next' on 2014-07-21 at bc34738)
30  + tag: support configuring --sort via .gitconfig
31  + tag: fix --sort tests to use cat<<-\EOF format
33  Teach "git tag" to pay attention to "tag.sort" configuration, to be
34  used as the default sort order when no --sort=<value> is given.
37 * mb/local-clone-after-applying-insteadof (2014-07-17) 1 commit
38   (merged to 'next' on 2014-07-21 at ebe07c2)
39  + use local cloning if insteadOf makes a local URL
41  Apply the "if cloning from a local disk, physically copy repository
42  using hardlinks, unless otherwise told not to with --no-local"
43  optimization when url.*.insteadOf mechanism rewrites a "git clone
44  $URL" that refers to a repository over the network to a clone from
45  a local disk.
48 * rs/fix-unlink-unix-socket (2014-07-21) 1 commit
49   (merged to 'next' on 2014-07-22 at fad8c29)
50  + unix-socket: remove stale socket before calling chdir()
52  The unix-domain socket used by the sample credential cache daemon
53  tried to unlink an existing stale one at a wrong path, if the path
54  to the socket was given as an overlong path that does not fit in
55  sun_path member of the sockaddr_un structure.
58 * ta/string-list-init (2014-07-21) 2 commits
59   (merged to 'next' on 2014-07-21 at 63e8891)
60  + replace memset with string-list initializers
61  + string-list: add string_list initializer helper function
62  (this branch is tangled with ta/config-set.)
64 --------------------------------------------------
65 [New Topics]
67 * nd/multiple-work-trees-1 (2014-07-23) 5 commits
68  - environment.c: fix incorrect git_graft_file initialization
69  - checkout --to: fix dangling pointers in remove_junk()
70  - checkout --to: no auto-detach if the ref is already checked out
71  - prune --repos: fix uninitialized access
72  - gitrepository-layout.txt: s/ignored/ignored if/
73  (this branch uses nd/multiple-work-trees.)
75  Continue polishing nd/multiple-work-trees topic in 'next'.
78 * jk/misc-fixes-maint (2014-07-24) 5 commits
79  - apply: avoid possible bogus pointer
80  - fix memory leak parsing core.commentchar
81  - transport: fix leaks in refs_from_alternate_cb
82  - free ref string returned by dwim_ref
83  - receive-pack: don't copy "dir" parameter
85  Miscellaneous fixes.
87  Will merge to 'next' and then to 'master'.
90 * rs/ref-transaction-reflog (2014-07-23) 15 commits
91  - refs.c: allow deleting refs with a broken sha1
92  - refs.c: remove lock_any_ref_for_update
93  - refs.c: make unlock_ref/close_ref/commit_ref static
94  - refs.c: rename log_ref_setup to create_reflog
95  - reflog.c: use a reflog transaction when writing during expire
96  - refs.c: allow multiple reflog updates during a single transaction
97  - refs.c: only write reflog update if msg is non-NULL
98  - refs.c: add a flag to allow reflog updates to truncate the log
99  - refs.c: add a transaction function to append a reflog entry
100  - lockfile.c: make hold_lock_file_for_append preserve meaningful errno
101  - refs.c: add a function to append a reflog entry to a fd
102  - refs.c: add a new update_type field to ref_update
103  - refs.c: rename the transaction functions
104  - refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
105  - refs.c: make ref_transaction_create a wrapper to ref_transaction_update
106  (this branch uses rs/ref-transaction and rs/ref-transaction-1.)
108  Cover updates to reflog with the same transaction mechanism as used
109  for reflog manipulations.
111 --------------------------------------------------
112 [Stalled]
114 * jk/tag-contains (2014-06-30) 8 commits
115  . perf: add tests for tag --contains
116  . tag: use commit_contains
117  . commit: provide a fast multi-tip contains function
118  . string-list: add pos to iterator callback
119  . add functions for memory-efficient bitmaps
120  . paint_down_to_common: use prio_queue
121  . tag: factor out decision to stream tags
122  . tag: allow --sort with -n
124  Expecting a reroll.
127 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
128  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
129  - git-add--interactive: Preserve diff heading when splitting hunks
131  Waiting for a reroll.
134 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
135  - gitweb: Harden UTF-8 handling in generated links
137  $gmane/250758?
140 * rh/prompt-tests (2014-06-05) 11 commits
141  - t9904: new __git_ps1 tests for Zsh
142  - test-lib: make it possible to override how test code is eval'd
143  - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
144  - lib-prompt-tests.sh: put all tests inside a function
145  - t9903: move prompt tests to a new lib-prompt-tests.sh file
146  - t9903: move PS1 color code variable definitions to lib-bash.sh
147  - t9903: include "Bash" in test names via new $shellname var
148  - t9903: run pc mode tests again with PS1 expansion disabled
149  - t9903: move test name prefix to a separate variable
150  - t9903: put the Bash pc mode prompt test cases in a function
151  - t9903: remove Zsh test from the suite of Bash prompt tests
153  Expecting a reroll to limit the damage to test_eval_; also reported
154  to be broken with older zsh that are still in the field ($gmane/251231).
157 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
158  - userdiff: support Java try keyword
159  - userdiff: support C# async methods and correct C# keywords
161  Reviews sent; waiting for a response.
164 * cc/interpret-trailers (2014-05-28) 11 commits
165  - Documentation: add documentation for 'git interpret-trailers'
166  - trailer: add tests for commands in config file
167  - trailer: execute command from 'trailer.<name>.command'
168  - trailer: add tests for "git interpret-trailers"
169  - trailer: add interpret-trailers command
170  - trailer: put all the processing together and print
171  - trailer: parse trailers from file or stdin
172  - trailer: process command line trailer arguments
173  - trailer: read and process config information
174  - trailer: process trailers from input message and arguments
175  - trailer: add data structures and basic functions
177  A new filter to programatically edit the tail end of the commit log
178  messages.
180  What is the status of this one?  I think I saw reviews by Michael
181  but after that I do not recall seeing any updates.
184 * mh/lockfile (2014-04-15) 25 commits
185  . trim_last_path_elm(): replace last_path_elm()
186  . resolve_symlink(): take a strbuf parameter
187  . resolve_symlink(): use a strbuf for internal scratch space
188  . change lock_file::filename into a strbuf
189  . commit_lock_file(): use a strbuf to manage temporary space
190  . try_merge_strategy(): use a statically-allocated lock_file object
191  . try_merge_strategy(): remove redundant lock_file allocation
192  . struct lock_file: declare some fields volatile
193  . lockfile: avoid transitory invalid states
194  . commit_lock_file(): die() if called for unlocked lockfile object
195  . commit_lock_file(): inline temporary variable
196  . remove_lock_file(): call rollback_lock_file()
197  . lock_file(): exit early if lockfile cannot be opened
198  . write_packed_entry_fn(): convert cb_data into a (const int *)
199  . prepare_index(): declare return value to be (const char *)
200  . delete_ref_loose(): don't muck around in the lock_file's filename
201  . cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
202  . lockfile.c: document the various states of lock_file objects
203  . lock_file(): always add lock_file object to lock_file_list
204  . hold_lock_file_for_append(): release lock on errors
205  . lockfile: unlock file if lockfile permissions cannot be adjusted
206  . rollback_lock_file(): set fd to -1
207  . rollback_lock_file(): do not clear filename redundantly
208  . api-lockfile: expand the documentation
209  . unable_to_lock_die(): rename function from unable_to_lock_index_die()
211  Ejected from 'pu' to unclutter.
212  Expecting a reroll.
215 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
216  - git-rebase: print name of rev when using shorthand
218  Teach "git rebase -" to report the concrete name of the branch
219  (i.e. the previous one).
221  But it stops short and does not do the same for "git rebase @{-1}".
222  Expecting a reroll.
225 * tr/merge-recursive-index-only (2014-02-05) 3 commits
226  - merge-recursive: -Xindex-only to leave worktree unchanged
227  - merge-recursive: internal flag to avoid touching the worktree
228  - merge-recursive: remove dead conditional in update_stages()
229  (this branch is used by tr/remerge-diff.)
232 * tr/remerge-diff (2014-02-26) 5 commits
233  . log --remerge-diff: show what the conflict resolution changed
234  . name-hash: allow dir hashing even when !ignore_case
235  . merge-recursive: allow storing conflict hunks in index
236  . revision: fold all merge diff variants into an enum merge_diff_mode
237  . combine-diff: do not pass revs->dense_combined_merges redundantly
238  (this branch uses tr/merge-recursive-index-only.)
240  "log -p" output learns a new way to let users inspect a merge
241  commit by showing the differences between the automerged result
242  with conflicts the person who recorded the merge would have seen
243  and the final conflict resolution that was recorded in the merge.
245  Needs to be rebased, now kb/fast-hashmap topic is in.
248 * jk/makefile (2014-02-05) 16 commits
249  . FIXUP
250  . move LESS/LV pager environment to Makefile
251  . Makefile: teach scripts to include make variables
252  . FIXUP
253  . Makefile: auto-build C strings from make variables
254  . Makefile: drop *_SQ variables
255  . FIXUP
256  . Makefile: add c-quote helper function
257  . Makefile: introduce sq function for shell-quoting
258  . Makefile: always create files via make-var
259  . Makefile: store GIT-* sentinel files in MAKE/
260  . Makefile: prefer printf to echo for GIT-*
261  . Makefile: use tempfile/mv strategy for GIT-*
262  . Makefile: introduce make-var helper function
263  . Makefile: fix git-instaweb dependency on gitweb
264  . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS
266  Simplify the Makefile rules and macros that exist primarily for
267  quoting purposes, and make it easier to robustly express the
268  dependency rules.
270  Expecting a reroll.
273 * po/everyday-doc (2014-01-27) 1 commit
274  - Make 'git help everyday' work
276  This may make the said command to emit something, but the source is
277  not meant to be formatted into a manual pages to begin with, and
278  also its contents are a bit stale.  It may be a good first step in
279  the right direction, but needs more work to at least get the
280  mark-up right before public consumption.
282  Will hold.
285 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
286  - merge: drop unused arg from abort_commit method signature
287  - merge: make prepare_to_commit responsible for write_merge_state
288  - t7505: ensure cleanup after hook blocks merge
289  - t7505: add missing &&
291  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
292  run during "git merge".  The log message stresses too much on one
293  hook, prepare-commit-msg, but it would equally apply to other hooks
294  like post-merge, I think.
296  Waiting for a reroll.
299 * jc/graph-post-root-gap (2013-12-30) 3 commits
300  - WIP: document what we want at the end
301  - graph: remove unused code a bit
302  - graph: stuff the current commit into graph->columns[]
304  This was primarily a RFH ($gmane/239580).
307 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
308  - perf-lib: add test_perf_cleanup target
309  - perf-lib: split starting the test from the execution
311  Add test_perf_cleanup shell function to the perf suite, that allows
312  the script writers to define a test with a clean-up action.
314  Will hold.
317 * jc/show-branch (2014-03-24) 5 commits
318  - show-branch: use commit slab to represent bitflags of arbitrary width
319  - show-branch.c: remove "all_mask"
320  - show-branch.c: abstract out "flags" operation
321  - show-branch.c: lift all_mask/all_revs to a global static
322  - show-branch.c: update comment style
324  Waiting for the final step to lift the hard-limit before sending it out.
327 * jh/submodule-tests (2014-04-17) 1 commit
328  - t7410: 210 tests for various 'git submodule update' scenarios
330  More or less abandoned.  Will drop.
332 --------------------------------------------------
333 [Cooking]
335 * nd/path-max-is-better-than-hardcoded-magic-1024 (2014-07-17) 1 commit
336  - abspath.c: use PATH_MAX in real_path_internal()
338  Still being discussed.
341 * sk/mingw-uni-fix-more (2014-07-21) 14 commits
342  - Win32: enable color output in Windows cmd.exe
343  - Win32: patch Windows environment on startup
344  - Win32: keep the environment sorted
345  - Win32: use low-level memory allocation during initialization
346  - Win32: reduce environment array reallocations
347  - Win32: don't copy the environment twice when spawning child processes
348  - Win32: factor out environment block creation
349  - Win32: unify environment function names
350  - Win32: unify environment case-sensitivity
351  - Win32: fix environment memory leaks
352  - Win32: Unicode environment (incoming)
353  - Win32: Unicode environment (outgoing)
354  - Revert "Windows: teach getenv to do a case-sensitive search"
355  - tests: do not pass iso8859-1 encoded parameter
357  Most of these are battle-tested in msysgit and are needed to
358  complete what has been merged to 'master' already.
360  A fix has been squashed into "Unicode environ (outgoing)"; is this
361  now ready to go?
364 * sk/mingw-tests-workaround (2014-07-21) 6 commits
365  - t800[12]: work around MSys limitation
366  - t9902: mingw-specific fix for gitfile link files
367  - t4210: skip command-line encoding tests on mingw
368  - MinGW: disable legacy encoding tests
369  - t0110/MinGW: skip tests that pass arbitrary bytes on the command line
370  - MinGW: Skip test redirecting to fd 4
371  (this branch is used by jc/not-mingw-cygwin.)
373  Make tests pass on msysgit by mostly disabling ones that are
374  infeasible on that platform.
376  The t0110 one has been replaced; is this now ready to go?
379 * cb/mergetool-difftool (2014-07-21) 2 commits
380  - difftool: don't assume that default sh is sane
381  - mergetool: don't require a work tree for --tool-help
384 * rs/strbuf-getcwd (2014-07-21) 4 commits
385  - use xgetcwd() get the current directory or die
386  - wrapper: add xgetcwd()
387  - use strbuf_getcwd() to get the current working directory without fixed-sized buffers
388  - strbuf: add strbuf_getcwd()
390  Still being discussed.
393 * jc/not-mingw-cygwin (2014-07-21) 2 commits
394  - test prerequisites: enumerate with commas
395  - test prerequisites: eradicate NOT_FOO
396  (this branch uses sk/mingw-tests-workaround.)
398  We have been using NOT_{MINGW,CYGWIN} test prerequisites long
399  before Peff invented support for negated prerequisites e.g. !MINGW
400  and we still add more uses of the former.  Convert them to the
401  latter to avoid confusion.
404 * jk/more-push-completion (2014-07-22) 3 commits
405  - completion: complete `git push --force-with-lease=`
406  - completion: add some missing options to `git push`
407  - completion: complete "unstuck" `git push --recurse-submodules`
410 * jk/rebase-am-fork-point (2014-07-16) 2 commits
411   (merged to 'next' on 2014-07-22 at 7648293)
412  + rebase: omit patch-identical commits with --fork-point
413  + rebase--am: use --cherry-pick instead of --ignore-if-in-upstream
415  "git rebase --fork-point" did not filter out patch-identical
416  commits correctly.
418  Will merge to 'master'.
421 * jk/stable-prio-queue (2014-07-15) 4 commits
422   (merged to 'next' on 2014-07-22 at 46e9bc3)
423  + t5539: update a flaky test
424  + paint_down_to_common: use prio_queue
425  + prio-queue: make output stable with respect to insertion
426  + prio-queue: factor out compare and swap operations
428  Will merge to 'master'.
431 * ta/config-set (2014-07-24) 2 commits
432  - test-config: add tests for the config_set API
433  - add `config_set` API for caching config-like files
435  More or less solidified enough to be built other enhancements upon.
438 * rs/ref-transaction-1 (2014-07-16) 20 commits
439  - refs.c: make delete_ref use a transaction
440  - refs.c: make prune_ref use a transaction to delete the ref
441  - refs.c: remove lock_ref_sha1
442  - refs.c: remove the update_ref_write function
443  - refs.c: remove the update_ref_lock function
444  - refs.c: make lock_ref_sha1 static
445  - walker.c: use ref transaction for ref updates
446  - fast-import.c: use a ref transaction when dumping tags
447  - receive-pack.c: use a reference transaction for updating the refs
448  - refs.c: change update_ref to use a transaction
449  - branch.c: use ref transaction for all ref updates
450  - fast-import.c: change update_branch to use ref transactions
451  - sequencer.c: use ref transactions for all ref updates
452  - commit.c: use ref transactions for updates
453  - replace.c: use the ref transaction functions for updates
454  - tag.c: use ref transactions when doing updates
455  - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
456  - refs.c: make ref_transaction_begin take an err argument
457  - refs.c: update ref_transaction_delete to check for error and return status
458  - refs.c: change ref_transaction_create to do error checking and return status
459  (this branch is used by rs/ref-transaction and rs/ref-transaction-reflog.)
461  The second batch of the transactional ref update series.
464 * jc/reopen-lock-file (2014-07-14) 1 commit
465   (merged to 'next' on 2014-07-21 at 8277dc9)
466  + lockfile: allow reopening a closed but still locked file
468  Needed in the "commit -p" code path to update the cache tree in the
469  index.
472 * nd/multiple-work-trees (2014-07-17) 31 commits
473   (merged to 'next' on 2014-07-17 at a29d310)
474  + checkout: don't require a work tree when checking out into a new one
475  + git_path(): keep "info/sparse-checkout" per work-tree
476  + count-objects: report unused files in $GIT_DIR/repos/...
477  + gc: support prune --repos
478  + gc: factor out gc.pruneexpire parsing code
479  + gc: style change -- no SP before closing parenthesis
480  + prune: strategies for linked checkouts
481  + checkout: detach if the branch is already checked out elsewhere
482  + checkout: clean up half-prepared directories in --to mode
483  + checkout: support checking out into a new working directory
484  + use new wrapper write_file() for simple file writing
485  + wrapper.c: wrapper to open a file, fprintf then close
486  + setup.c: support multi-checkout repo setup
487  + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
488  + setup.c: convert check_repository_format_gently to use strbuf
489  + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
490  + setup.c: convert is_git_directory() to use strbuf
491  + git-stash: avoid hardcoding $GIT_DIR/logs/....
492  + *.sh: avoid hardcoding $GIT_DIR/hooks/...
493  + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
494  + $GIT_COMMON_DIR: a new environment variable
495  + commit: use SEQ_DIR instead of hardcoding "sequencer"
496  + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
497  + reflog: avoid constructing .lock path with git_path
498  + *.sh: respect $GIT_INDEX_FILE
499  + git_path(): be aware of file relocation in $GIT_DIR
500  + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
501  + path.c: rename vsnpath() to do_git_path()
502  + git_snpath(): retire and replace with strbuf_git_path()
503  + path.c: make get_pathname() call sites return const char *
504  + path.c: make get_pathname() return strbuf instead of static buffer
505  (this branch is used by nd/multiple-work-trees-1.)
507  A replacement for contrib/workdir/git-new-workdir that does not
508  rely on symbolic links and make sharing of objects and refs safer
509  by making the borrowee and borrowers aware of each other.
511  Will cook in 'next'.
514 * dt/cache-tree-repair (2014-07-14) 4 commits
515   (merged to 'next' on 2014-07-21 at e83db34)
516  + cache-tree: Write updated cache-tree after commit
517  + cache-tree: subdirectory tests
518  + test-dump-cache-tree: invalid trees are not errors
519  + cache-tree: create/update cache-tree on checkout
521  Add a few more places in "commit" and "checkout" that make sure
522  that the cache-tree is fully populated in the index.
524  Will cook in 'next'.
527 * cc/replace-graft (2014-07-21) 9 commits
528   (merged to 'next' on 2014-07-22 at 9b14090)
529  + replace: add test for --graft with a mergetag
530  + replace: check mergetags when using --graft
531  + replace: add test for --graft with signed commit
532  + replace: remove signature when using --graft
533  + contrib: add convert-grafts-to-replace-refs.sh
534  + Documentation: replace: add --graft option
535  + replace: add test for --graft
536  + replace: add --graft option
537  + replace: cleanup redirection style in tests
539  "git replace" learned a "--graft" option to rewrite parents of a
540  commit.
542  Will merge to 'master'.
545 * hv/submodule-config (2014-06-30) 4 commits
546   (merged to 'next' on 2014-07-17 at 5e0ce45)
547  + do not die on error of parsing fetchrecursesubmodules option
548  + use new config API for worktree configurations of submodules
549  + extract functions for submodule config set and lookup
550  + implement submodule config cache for lookup of submodule names
552  Will cook in 'next'.
555 * rs/ref-transaction (2014-07-17) 12 commits
556  - refs.c: fix handling of badly named refs
557  - refs.c: make write_ref_sha1 static
558  - fetch.c: change s_update_ref to use a ref transaction
559  - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
560  - refs.c: pass a skip list to name_conflict_fn
561  - refs.c: call lock_ref_sha1_basic directly from commit
562  - refs.c: move the check for valid refname to lock_ref_sha1_basic
563  - refs.c: pass NULL as *flags to read_ref_full
564  - refs.c: pass the ref log message to _create/delete/update instead of _commit
565  - refs.c: add an err argument to delete_ref_loose
566  - wrapper.c: add a new function unlink_or_msg
567  - wrapper.c: simplify warn_if_unremovable
568  (this branch is used by rs/ref-transaction-reflog; uses rs/ref-transaction-1.)
571 * jc/test-lazy-prereq (2014-06-13) 1 commit
572  - tests: drop GIT_*_TIMING_TESTS environment variable support
574  Test-script clean-up.
576  Will hold.
579 * mt/patch-id-stable (2014-06-10) 1 commit
580  - patch-id: change default to stable
582  Teaches "git patch-id" to compute the patch ID that does not change
583  when the files in a single patch is reordered. As this new algorithm
584  is backward incompatible, the last bit to flip it to be the default
585  is left out of 'master' for now.
587  Will hold.