1 To: git@vger.kernel.org
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
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
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 --------------------------------------------------
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
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 --------------------------------------------------
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
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
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
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.
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}".
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
250 . move LESS/LV pager environment to Makefile
251 . Makefile: teach scripts to include make variables
253 . Makefile: auto-build C strings from make variables
254 . Makefile: drop *_SQ variables
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
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.
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.
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 --------------------------------------------------
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
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
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
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.
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.
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
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
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.
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.