1 To: git@vger.kernel.org
3 Subject: What's cooking in git.git (Jan 2014, #06; Wed, 29)
4 X-master-at: bd3e186d811a13d8687584856f345a767e3e4d67
5 X-next-at: 614c158afed5077691c76d341b6888596b24b9fd
7 What's cooking in git.git (Jan 2014, #06; Wed, 29)
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 The tip of 'master' is at 1.9-rc1; as far as new features are
15 concerned, this is pretty much it until the final.
17 On the maintenance track, we may have another 1.8.5.x maintenance
18 release before 1.9 final is tagged in 2-3 weeks.
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 --------------------------------------------------
28 * bc/gpg-sign-everywhere (2014-01-27) 9 commits
29 - pull: add the --gpg-sign option.
30 - rebase: add the --gpg-sign option
31 - rebase: parse options in stuck-long mode
32 - rebase: don't try to match -M option
33 - rebase: remove useless arguments check
34 - am: add the --gpg-sign option
35 - am: parse options in stuck-long mode
36 - git-sh-setup.sh: add variable to use the stuck-long mode
37 - cherry-pick, revert: add the --gpg-sign option
39 Teach "--gpg-sign" option to many commands that create commits.
41 Changes to some scripted Porcelains use unsafe variable
42 substitutions and need to be tightened.
47 * ds/rev-parse-required-args (2014-01-28) 1 commit
48 - rev-parse: check i before using argv[i] against argc
50 "git rev-parse --default" without the required option argument did
51 not diagnose it as an error.
56 * jk/config-path-include-fix (2014-01-28) 2 commits
57 - handle_path_include: don't look at NULL value
58 - expand_user_path: do not look at NULL path
60 include.path variable (or any variable that expects a path that can
61 use ~username expansion) in the configuration file is not a
62 boolean, but the code failed to check it.
67 * jk/repack-honor-pack-keep (2014-01-28) 1 commit
68 - repack: add `repack.honorpackkeep` config var
69 (this branch uses jk/pack-bitmap.)
71 Optionally allow "git repack" to include objects that exist in kept
72 packs in newly created packfiles.
74 Waiting for response to review comments.
77 * nd/submodule-pathspec-ending-with-slash (2014-01-27) 8 commits
78 - clean: use cache_name_is_other()
79 - clean: replace match_pathspec() with dir_path_match()
80 - Pass directory indicator to match_pathspec_item()
81 - match_pathspec: match pathspec "foo/" against directory "foo"
82 - dir.c: prepare match_pathspec_item for taking more flags
83 - Rename match_pathspec_depth() to match_pathspec()
84 - Convert some match_pathspec_depth() to dir_path_match()
85 - Convert some match_pathspec_depth() to ce_path_match()
87 Allow "git cmd path/", when the 'path' is where a submodule is
88 bound to the top-level working tree, to match 'path', despite the
89 extra and unnecessary trailing slash.
93 --------------------------------------------------
96 * jk/color-for-more-pagers (2014-01-17) 4 commits
97 - pager: disable colors for some known-bad configurations
98 - DONOTMERGE: needs matching change to git-sh-setup
99 - setup_pager: set MORE=R
100 - setup_pager: refactor LESS/LV environment setting
102 'more' implementation of BSD wants to be told with MORE=R
103 environment before it shows colored output, while 'more' on some
104 other platforms will die when seeing MORE=R environment.
106 It appears that we are coming to the consensus that trying to be
107 too intimately knowledgeable about quirks of various pager
108 implementations on different platforms is a losing proposition.
110 Waiting for a reroll.
113 * po/everyday-doc (2014-01-27) 1 commit
114 - Make 'git help everyday' work
116 This may make the said command to emit something, but the source is
117 not meant to be formatted into a manual pages to begin with, and
118 also its contents are a bit stale. It may be a good first step in
119 the right direction, but needs more work to at least get the
120 mark-up right before public consumption.
125 * jk/branch-at-publish-rebased (2014-01-17) 5 commits
126 - t1507 (rev-parse-upstream): fix typo in test title
127 - implement @{publish} shorthand
128 - branch_get: provide per-branch pushremote pointers
129 - branch_get: return early on error
130 - sha1_name: refactor upstream_mark
132 Give an easier access to the tracking branches from "other" side in
133 a triangular workflow by introducing B@{publish} that works in a
134 similar way to how B@{upstream} does.
139 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
140 - merge: drop unused arg from abort_commit method signature
141 - merge: make prepare_to_commit responsible for write_merge_state
142 - t7505: ensure cleanup after hook blocks merge
143 - t7505: add missing &&
145 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
146 run during "git merge". The log message stresses too much on one
147 hook, prepare-commit-msg, but it would equally apply to other hooks
148 like post-merge, I think.
150 Waiting for a reroll.
153 * jl/submodule-recursive-checkout (2013-12-26) 5 commits
154 - Teach checkout to recursively checkout submodules
155 - submodule: teach unpack_trees() to update submodules
156 - submodule: teach unpack_trees() to repopulate submodules
157 - submodule: teach unpack_trees() to remove submodule contents
158 - submodule: prepare for recursive checkout of submodules
163 * jc/graph-post-root-gap (2013-12-30) 3 commits
164 - WIP: document what we want at the end
165 - graph: remove unused code a bit
166 - graph: stuff the current commit into graph->columns[]
168 This was primarily a RFH ($gmane/239580).
171 * fc/transport-helper-fixes (2013-12-09) 6 commits
172 - remote-bzr: support the new 'force' option
173 - test-hg.sh: tests are now expected to pass
174 - transport-helper: check for 'forced update' message
175 - transport-helper: add 'force' to 'export' helpers
176 - transport-helper: don't update refs in dry-run
177 - transport-helper: mismerge fix
179 Updates transport-helper, fast-import and fast-export to allow the
180 ref mapping and ref deletion in a way similar to the natively
181 supported transports.
183 Reported to break t5541.
187 * fc/completion (2013-12-09) 1 commit
188 - completion: fix completion of certain aliases
190 SZEDER Gábor noticed that this breaks "git -c var=val alias" and
191 also suggested a better description of the change.
196 * mo/subtree-split-updates (2013-12-10) 3 commits
197 - subtree: add --edit option
198 - subtree: allow --squash and --message with push
199 - subtree: support split --rejoin --squash
204 * hv/submodule-ignore-fix (2013-12-06) 4 commits
205 - disable complete ignorance of submodules for index <-> HEAD diff
206 - always show committed submodules in summary after commit
207 - teach add -f option for ignored submodules
208 - fix 'git add' to skip submodules configured as ignored
210 Teach "git add" to be consistent with "git status" when changes to
211 submodules are set to be ignored, to avoid surprises after checking
212 with "git status" to see there isn't any change to be further added
213 and then see that "git add ." adds changes to them.
215 I think a reroll is coming, so this may need to be replaced, but I
216 needed some practice with heavy conflict resolution. It conflicts
217 with two changes to "git add" that have been scheduled for Git 2.0
218 quite badly, and I think I got the resolution right this time.
220 Waiting for a reroll.
223 * kb/fast-hashmap (2014-01-03) 19 commits
224 - hashmap.h: make sure map entries are tightly packed
225 (merged to 'next' on 2014-01-03 at dc85001)
226 + name-hash: retire unused index_name_exists()
227 + hashmap.h: Use 'unsigned int' for hash-codes everywhere
228 (merged to 'next' on 2013-12-16 at bff99b1)
229 + Drop unnecessary #includes from test-hashmap
230 + Add test-hashmap to .gitignore
231 (merged to 'next' on 2013-12-06 at f90be3d)
232 + read-cache.c: fix memory leaks caused by removed cache entries
233 + builtin/update-index.c: cleanup update_one
234 + fix 'git update-index --verbose --again' output
235 + remove old hash.[ch] implementation
236 + name-hash.c: remove cache entries instead of marking them CE_UNHASHED
237 + name-hash.c: use new hash map implementation for cache entries
238 + name-hash.c: remove unreferenced directory entries
239 + name-hash.c: use new hash map implementation for directories
240 + diffcore-rename.c: use new hash map implementation
241 + diffcore-rename.c: simplify finding exact renames
242 + diffcore-rename.c: move code around to prepare for the next patch
243 + buitin/describe.c: use new hash map implementation
244 + add a hashtable implementation that supports O(1) removal
245 + submodule: don't access the .gitmodules cache entry after removing it
247 Improvements to our hash table to get it to meet the needs of the
248 msysgit fscache project, with some nice performance improvements.
250 The tip one does not seem to have reached concensus (yet).
255 * jc/create-directories-microopt (2013-11-11) 1 commit
256 - checkout: most of the time we have good leading directories
258 Of unknown value until tested on non-Linux platforms (especially
264 * jt/commit-fixes-footer (2013-10-30) 1 commit
265 - commit: Add -f, --fixes <commit> option to add Fixes: line
267 There is an ongoing discussion around this topic; in general I am
268 fairly negative on a new feature that is too narrow and prefer a
269 more generic solution that can be tailored for specific needs, as
270 many people stated in the thread.
272 cc/interpret-trailers could be such a generic solution (although
273 there don't seem to be much concensus yet).
278 * np/pack-v4 (2013-09-18) 90 commits
279 . packv4-parse.c: add tree offset caching
280 . t1050: replace one instance of show-index with verify-pack
281 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
282 . unpack-objects: decode v4 trees
283 . unpack-objects: allow to save processed bytes to a buffer
286 Nico and Duy advancing the eternal vaporware pack-v4. This is here
287 primarily for wider distribution of the preview edition.
289 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
290 this topic conflicts with.
293 * mf/graph-show-root (2013-10-25) 1 commit
294 . graph.c: mark root commit differently
296 In a repository with multiple-roots, "log --graph", especially with
297 "--oneline", does not give the reader enough visual cue to see
298 where one line of history ended and a separate history began.
300 This is the version that marks the roots 'x' when they would have
301 been marked as '*'; Keshav Kini suggested an alternative of giving
302 an extra blank line after every root, which I tend to think is a
303 better approach to the problem.
308 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
309 - perf-lib: add test_perf_cleanup target
310 - perf-lib: split starting the test from the execution
312 Add test_perf_cleanup shell function to the perf suite, that allows
313 the script writers to define a test with a clean-up action.
318 * yt/shortened-rename (2013-10-18) 2 commits
319 - SQUASH??? style fixes and s/omit/shorten/ where appropriate
320 - diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible
322 Attempts to give more weight on the fact that a filepair represents
323 a rename than showing substring of the actual path when diffstat
324 lines are not wide enough.
326 I am not sure if that is solving a right problem, though.
329 * rv/send-email-cache-generated-mid (2013-08-21) 2 commits
330 - git-send-email: Cache generated message-ids, use them when prompting
331 - git-send-email: add optional 'choices' parameter to the ask sub
336 * rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
337 - ### DONTMERGE: needs better explanation on what config they need
338 - pack-refs.c: Add missing call to git_config()
339 - show-ref.c: Add missing call to git_config()
341 The changes themselves are probably good, but it is unclear what
342 basic setting needs to be read for which exact operation.
344 Waiting for clarification.
348 * jc/format-patch (2013-04-22) 2 commits
349 - format-patch: --inline-single
350 - format-patch: rename "no_inline" field
352 A new option to send a single patch to the standard output to be
353 appended at the bottom of a message. I personally have no need for
354 this, but it was easy enough to cobble together. Tests, docs and
355 stripping out more MIMEy stuff are left as exercises to interested
359 * jk/gitweb-utf8 (2013-04-08) 4 commits
360 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
361 - gitweb: Don't append ';js=(0|1)' to external links
362 - gitweb: Make feed title valid utf8
363 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
365 Various fixes to gitweb.
367 Drew Northup volunteered to take a look into this.
371 * jc/show-branch (2013-06-07) 5 commits
372 - show-branch: use commit slab to represent bitflags of arbitrary width
373 - show-branch.c: remove "all_mask"
374 - show-branch.c: abstract out "flags" operation
375 - show-branch.c: lift all_mask/all_revs to a global static
376 - show-branch.c: update comment style
378 Waiting for the final step to lift the hard-limit before sending it out.
380 --------------------------------------------------
383 * lt/request-pull (2014-01-23) 3 commits
384 - pull-request: test updates
385 - Make request-pull able to take a refspec of form local:remote
386 - Make 'git request-pull' more strict about matching
388 Waiting for the updates to settle.
391 * bk/refresh-missing-ok-in-merge-recursive (2014-01-27) 4 commits
392 (merged to 'next' on 2014-01-29 at 614c158)
393 + merge-recursive.c: Tolerate missing files while refreshing index
394 + read-cache.c: Extend make_cache_entry refresh flag with options
395 + read-cache.c: Refactor --ignore-missing implementation
396 + t3030-merge-recursive: Test known breakage with empty work tree
398 Allows "merge-recursive" to work in an empty (temporary) working
399 tree again when there are renames involved, correcting an old
400 regression in 1.7.7 era.
405 * nd/diff-quiet-stat-dirty (2014-01-29) 3 commits
406 - diff: turn skip_stat_unmatch on selectively
407 - diff: do not quit early on stat-dirty files
408 - Move diffcore_skip_stat_unmatch core logic out for reuse later
410 Will merge to 'next'.
413 * cc/interpret-trailers (2014-01-27) 17 commits
414 - Documentation: add documentation for 'git interpret-trailers'
415 - trailer: add tests for commands using env variables
416 - trailer: set author and committer env variables
417 - trailer: add tests for trailer command
418 - trailer: execute command from 'trailer.<name>.command'
419 - strbuf: add strbuf_replace()
420 - trailer: add new_trailer_item() function
421 - trailer: if no input file is passed, read from stdin
422 - trailer: add tests for "git interpret-trailers"
423 - trailer: add interpret-trailers command
424 - trailer: put all the processing together and print
425 - trailer: parse trailers from input file
426 - strbuf: add strbuf_isspace()
427 - trailer: process command line trailer arguments
428 - trailer: read and process config information
429 - trailer: process trailers from file and arguments
430 - Add data structures and basic functions for commit trailers
432 Waiting for a reroll.
435 * dk/blame-janitorial (2014-01-22) 2 commits
436 (merged to 'next' on 2014-01-29 at 0b7ea97)
437 + Eliminate same_suspect function in builtin/blame.c
438 + builtin/blame.c: struct blame_entry does not need a prev link
445 * ks/diff-c-with-diff-order (2014-01-29) 5 commits
446 - combine_diff: simplify intersect_paths() further
447 - combine-diff: combine_diff_path.len is not needed anymore
448 - combine-diff: optimize combine_diff_path sets intersection
449 - diff test: add tests for combine-diff with orderfile
450 - diffcore-order: export generic ordering interface
452 Teach combine-diff to honour the path-output-order imposed by
455 Will merge to 'next'.
458 * bl/blame-full-history (2014-01-14) 1 commit
459 - blame: new option --prefer-first to better handle merged cherry-picks
461 By disabling the tree-same optimization (which is consistent with
462 the default behaviour of "git log"-family of commands), make "git
463 blame" sometimes produce different result from the original code.
465 Because the "git blame" output can give result for each line from
466 only one lineage of the history, however, this can be only useful
467 when you are lucky---unlike "--full-history" of "git log"-family,
468 where we can show commits from both lineages of histories with an
469 equal weight. See $gmane/240392 for more detailed discussion.
474 * da/pull-ff-configuration (2014-01-15) 2 commits
475 (merged to 'next' on 2014-01-22 at 2686b09)
476 + pull: add --ff-only to the help text
477 + pull: add pull.ff configuration
479 "git pull" learned to pay attention to pull.ff configuration
485 * wk/submodule-on-branch (2014-01-27) 4 commits
486 - Documentation: Describe 'submodule update --remote' use case
487 - submodule: Explicit local branch creation in module_clone
488 - submodule: Document module_clone arguments in comments
489 - submodule: Make 'checkout' update_module explicit
491 Makes sure 'submodule update' modes that do not detach HEADs can
492 be used more pleasantly by checking out a concrete branch when
493 cloning them to prime the well.
495 This round seems to be almost ready; further discussions are of
496 course very much welcomed.
499 * jk/warn-on-object-refname-ambiguity (2014-01-09) 6 commits
500 - get_sha1: drop object/refname ambiguity flag
501 - get_sha1: speed up ambiguous 40-hex test
502 - FIXUP: teach DO_FOR_EACH_NO_RECURSE to prime_ref_dir()
503 - refs: teach for_each_ref a flag to avoid recursion
504 - cat-file: fix a minor memory leak in batch_objects
505 - cat-file: refactor error handling of batch_objects
510 * ap/remote-hg-skip-null-bookmarks (2014-01-02) 1 commit
511 - remote-hg: do not fail on invalid bookmarks
513 Reported to break tests ($gmane/240005)
517 * jk/pack-bitmap (2014-01-23) 25 commits
518 (merged to 'next' on 2014-01-27 at 0b1dcb5)
519 + ewah: support platforms that require aligned reads
520 + read-cache: use get_be32 instead of hand-rolled ntoh_l
521 + block-sha1: factor out get_be and put_be wrappers
522 (merged to 'next' on 2014-01-16 at ddac2d2)
523 + do not discard revindex when re-preparing packfiles
524 (merged to 'next' on 2014-01-10 at bdbe0a4)
525 + pack-bitmap: implement optional name_hash cache
526 + t/perf: add tests for pack bitmaps
527 + t: add basic bitmap functionality tests
528 + count-objects: recognize .bitmap in garbage-checking
529 + repack: consider bitmaps when performing repacks
530 + repack: handle optional files created by pack-objects
531 + repack: turn exts array into array-of-struct
532 + repack: stop using magic number for ARRAY_SIZE(exts)
533 + pack-objects: implement bitmap writing
534 + rev-list: add bitmap mode to speed up object lists
535 + pack-objects: use bitmaps when packing objects
536 + pack-objects: split add_object_entry
537 + pack-bitmap: add support for bitmap indexes
538 + documentation: add documentation for the bitmap format
539 + ewah: compressed bitmap implementation
540 + compat: add endianness helpers
541 + sha1_file: export `git_open_noatime`
542 + revision: allow setting custom limiter function
543 + pack-objects: factor out name_hash
544 + pack-objects: refactor the packing list
545 + revindex: export new APIs
546 (this branch is used by jk/repack-honor-pack-keep.)
548 Borrows the bitmap index into packfiles from JGit to speed up
549 enumeration of objects involved in a commit range without having to
550 fully traverse the history.
555 * nv/commit-gpgsign-config (2013-12-17) 3 commits
556 (merged to 'next' on 2014-01-03 at 9780cbb)
557 + test the commit.gpgsign config option
558 + commit-tree: add and document --no-gpg-sign
559 + Add the commit.gpgsign option to sign all commits
561 Introduce commit.gpgsign configuration variable to force every
562 commit to be GPG signed. The variable cannot be overriden from the
563 command line of some of the commands that create commits except for
564 "git commit" and "git commit-tree", but I am not convinced that it
565 is a good idea to sprinkle support for --no-gpg-sign everywhere.
570 * cc/starts-n-ends-with-endgame (2013-12-05) 1 commit
571 (merged to 'next' on 2014-01-07 at 4cdf8d0)
572 + strbuf: remove prefixcmp() and suffixcmp()
574 Endgame for the cc/starts-n-ends-with topic; this needs to be
575 evil-merged with other topics that introduce new uses of
576 prefix/suffix-cmp functions.
578 Will cook in 'next' until Git 2.0.
581 * gj/push-more-verbose-advice (2013-11-13) 1 commit
582 (merged to 'next' on 2013-12-06 at 574b18a)
583 + push: switch default from "matching" to "simple"
585 Originally merged to 'next' on 2013-11-21
587 Explain 'simple' and 'matching' in "git push" advice message; the
588 topmost patch is a rebase of jc/push-2.0-default-to-simple on top
591 Will cook in 'next' until Git 2.0.
594 * tr/merge-recursive-index-only (2013-10-28) 3 commits
595 - merge-recursive: -Xindex-only to leave worktree unchanged
596 - merge-recursive: internal flag to avoid touching the worktree
597 - merge-recursive: remove dead conditional in update_stages()
602 * jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
603 (merged to 'next' on 2013-12-06 at ead2ec8)
604 + git add: -u/-A now affects the entire working tree
606 Will cook in 'next' until Git 2.0.
609 * jc/core-checkstat-2.0 (2013-05-06) 1 commit
610 (merged to 'next' on 2013-12-06 at ae18007)
611 + core.statinfo: remove as promised in Git 2.0
613 Will cook in 'next' until Git 2.0.
616 * jc/push-2.0-default-to-simple (2013-06-18) 1 commit
617 (merged to 'next' on 2013-12-06 at 6fad61c)
618 + push: switch default from "matching" to "simple"
620 Will cook in 'next' until Git 2.0.
623 * jc/add-2.0-ignore-removal (2013-04-22) 1 commit
624 (merged to 'next' on 2013-12-06 at fbaa75a)
625 + git add <pathspec>... defaults to "-A"
627 Updated endgame for "git add <pathspec>" that defaults to "--all"
628 aka "--no-ignore-removal".
630 Will cook in 'next' until Git 2.0.
633 * jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
634 (merged to 'next' on 2013-12-06 at 083d67c)
635 + diff: remove "diff-files -q" in a version of Git in a distant future
637 Will cook in 'next' until a distant future.
639 --------------------------------------------------
642 * jk/branch-at-publish (2014-01-23) 6 commits
643 . t1507 (rev-parse-upstream): fix typo in test title
644 . implement @{publish} shorthand
645 . branch_get: provide per-branch pushremote pointers
646 . branch_get: return early on error
647 . interpret_branch_name: factor out upstream handling
648 . sha1_name: refactor upstream_mark
650 Rebased to be jk/branch-at-publish-rebased to share the same change
651 with the jk/interpret-branch-name-fix topic.
654 * jn/git-gui-chmod+x (2013-11-25) 1 commit
655 . git-gui: chmod +x po2msg, windows/git-gui.sh
657 Now in 'master' from the upstream git-gui repository.
660 * jn/gitk-chmod+x (2013-11-25) 1 commit
661 . gitk: chmod +x po2msg
663 Now in 'master' from the upstream gitk repository.
666 * jc/parse-options-humint (2014-01-22) 1 commit
667 . parse-options: refactor human-friendly-integer parser out of pack-objects
669 Teach parse-options machinery to optionally parse numbers with a
670 unit suffix, e.g. 8g, 4m, 128k.