What's cooking (2013/09 #06)
[alt-git.git] / whats-cooking.txt
blob08e9410af4ae2a7aed17c0584062670601ceb2dc
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Sep 2013, #06; Fri, 20)
4 X-master-at: 128a96c98442524c7f2eeef4757b1e48445f24ce
5 X-next-at: 0d6e0ce2a5090eb3c05a624d1ad584a1153fcc52
7 What's cooking in git.git (Sep 2013, #06; Fri, 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 The fifth batch of topics are in 'master'.  We are about to pass 350
15 non-merge commits since the last release, which means we are about
16 halfway there for the next one.  Among ~60 contributors who have
17 commits in the 'master' branch since v1.8.4, ~10 are new faces.
19 I'll be offline starting next week for a few weeks; in order to
20 improve the "bus factor", I asked Jonathan Nieder to fill in for me
21 as an interim maintainer, with Peff as a back-up.
23 You can find the changes described here in the integration branches
24 of the repositories listed at
26     http://git-blame.blogspot.com/p/git-public-repositories.html
28 --------------------------------------------------
29 [Graduated to "master"]
31 * bc/http-backend-allow-405 (2013-09-12) 1 commit
32   (merged to 'next' on 2013-09-12 at bc1719f)
33  + http-backend: provide Allow header for 405
35  When the webserver responds with "405 Method Not Allowed", it
36  should tell the client what methods are allowed with the "Allow"
37  header.
40 * bk/refs-multi-update (2013-09-11) 8 commits
41   (merged to 'next' on 2013-09-13 at e6d21af)
42  + update-ref: add test cases covering --stdin signature
43  + update-ref: support multiple simultaneous updates
44  + refs: add update_refs for multiple simultaneous updates
45  + refs: add function to repack without multiple refs
46  + refs: factor delete_ref loose ref step into a helper
47  + refs: factor update_ref steps into helpers
48  + refs: report ref type from lock_any_ref_for_update
49  + reset: rename update_refs to reset_refs
51  Give "update-refs" a "--stdin" option to read multiple update
52  requests and perform them in an all-or-none fashion.
55 * dw/check-ignore-sans-index (2013-09-12) 1 commit
56   (merged to 'next' on 2013-09-13 at 8daec3c)
57  + check-ignore: Add option to ignore index contents
59  "git check-ignore" follows the same rule as "git add" and "git
60  status" in that the ignore/exclude mechanism does not take effect
61  on paths that are already tracked.  With "--no-index" option, it
62  can be used to diagnose which paths that should have been ignored
63  have been mistakenly added to the index.
66 * fc/at-head (2013-09-12) 2 commits
67   (merged to 'next' on 2013-09-13 at d3800c2)
68  + Add new @ shortcut for HEAD
69  + sha1-name: pass len argument to interpret_branch_name()
71  Attempt to resurrect "Type @ for HEAD"; the bottom one seems to be
72  a genuine code improvement, but identifying cases where "@" means
73  HEAD were harder than it should have been.  I think the result of
74  squashing the tip one in covers all the necessary cases.
77 * hu/cherry-pick-previous-branch (2013-09-09) 1 commit
78   (merged to 'next' on 2013-09-12 at 36e4d9b)
79  + cherry-pick: allow "-" as abbreviation of '@{-1}'
81  Just like "git checkout -" knows to check out and "git merge -"
82  knows to merge the branch you were previously on, teach "git
83  cherry-pick" to understand "-" as the previous branch.
86 * jh/checkout-auto-tracking (2013-09-17) 6 commits
87   (merged to 'next' on 2013-09-17 at 6748f49)
88  + t3200: fix failure on case-insensitive filesystems
89   (merged to 'next' on 2013-09-13 at 2aa1553)
90  + branch.c: Relax unnecessary requirement on upstream's remote ref name
91  + t3200: Add test demonstrating minor regression in 41c21f2
92  + Refer to branch.<name>.remote/merge when documenting --track
93  + t3200: Minor fix when preparing for tracking failure
94  + t2024: Fix &&-chaining and a couple of typos
96  Fix a minor regression in v1.8.3.2 and later that made it
97  impossible to base your local work on anything but a local branch
98  of the upstream repository you are tracking from.
101 * jk/upload-pack-keepalive (2013-09-09) 2 commits
102   (merged to 'next' on 2013-09-17 at d3141ac)
103  + upload-pack: bump keepalive default to 5 seconds
104  + upload-pack: send keepalive packets during pack computation
106  When running "fetch -q", a long silence while the sender side
107  computes the set of objects to send can be mistaken by proxies as
108  dropped connection.
111 * jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
112   (merged to 'next' on 2013-09-12 at b5c37f4)
113  + status: always show tracking branch even no change
114  + branch: report invalid tracking branch as gone
116  "git branch -v -v" (and "git status") did not distinguish among a
117  branch that does not build on any other branch, a branch that is in
118  sync with the branch it builds on, and a branch that is configured
119  to build on some other branch that no longer exists.
122 * mm/commit-template-squelch-advice-messages (2013-09-12) 3 commits
123   (merged to 'next' on 2013-09-13 at 410d207)
124  + commit: disable status hints when writing to COMMIT_EDITMSG
125  + wt-status: turn advice_status_hints into a field of wt_status
126  + commit: factor status configuration is a helper function
128  From the commit log template, remove irrelevant "advice" messages
129  that are shared with "git status" output.
132 * mm/rebase-continue-freebsd-WB (2013-09-09) 1 commit
133   (merged to 'next' on 2013-09-13 at 82e8b91)
134  + rebase: fix run_specific_rebase's use of "return" on FreeBSD
136  Work around a bug in FreeBSD shell that caused a regression to "git
137  rebase" in v1.8.4.  May need to be later applied to 'maint'.
140 * mm/status-without-comment-char (2013-09-17) 7 commits
141   (merged to 'next' on 2013-09-17 at d93e7c1)
142  + t7508: avoid non-portable sed expression
143   (merged to 'next' on 2013-09-12 at 89161b8)
144  + status: add missing blank line after list of "other" files
145  + tests: don't set status.displayCommentPrefix file-wide
146  + status: disable display of '#' comment prefix by default
147  + submodule summary: ignore --for-status option
148  + wt-status: use argv_array API
149  + builtin/stripspace.c: fix broken indentation
151  Allow "git status" to omit the prefix to make its output a comment
152  in a commit log editor, which is not necessary for human
153  consumption.
155  We may want to tighten the output to omit unnecessary trailing
156  blank lines, but that does not have to be in the scope of this
157  series.
160 * nd/fetch-into-shallow (2013-08-28) 7 commits
161   (merged to 'next' on 2013-09-09 at 87a3b99)
162  + Add testcase for needless objects during a shallow fetch
163  + list-objects: mark more commits as edges in mark_edges_uninteresting
164  + list-objects: reduce one argument in mark_edges_uninteresting
165  + upload-pack: delegate rev walking in shallow fetch to pack-objects
166  + shallow: add setup_temporary_shallow()
167  + shallow: only add shallow graft points to new shallow file
168  + move setup_alternate_shallow and write_shallow_commits to shallow.c
170  When there is no sufficient overlap between old and new history
171  during a fetch into a shallow repository, we unnecessarily sent
172  objects the sending side knows the receiving end has.
175 * np/lookup-object-hashing (2013-09-11) 1 commit
176   (merged to 'next' on 2013-09-12 at d835ef6)
177  + lookup_object: remove hashtable_index() and optimize hash_obj()
179  Micro optimize hash function used in the object hash table.
182 * nr/git-cd-to-a-directory (2013-09-19) 2 commits
183   (merged to 'next' on 2013-09-19 at e9394e8)
184  + t0056: "git -C" test updates
185   (merged to 'next' on 2013-09-13 at 2b07af9)
186  + git: run in a directory given with -C option
188  Just like "make -C <directory>", make "git -C <directory> ..." to
189  go there before doing anything else.
192 * rh/peeling-tag-to-tag (2013-09-03) 2 commits
193   (merged to 'next' on 2013-09-12 at 3a1d906)
194  + peel_onion: do not assume length of x_type globals
195  + peel_onion(): add support for <rev>^{tag}
197  Make "foo^{tag}" to peel a tag to itself, i.e. no-op., and fail if
198  "foo" is not a tag.
200 --------------------------------------------------
201 [New Topics]
203 * jc/revision-range-unpeel (2013-09-20) 2 commits
204  - (possible fixup) jc/revision-range-unpeel - peel only when necessary
205  - revision: do not peel tags used in range notation
207  "git rev-list --objects ^v1.0^ v1.0" gave v1.0 tag itself in the
208  output, but "git rev-list --objects v1.0^..v1.0" did not.
210  Need to decide either squashing the top fixup in, or dropping it
211  and then merge to 'next'.
214 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
215  - perf-lib: add test_perf_cleanup target
216  - perf-lib: split starting the test from the execution
218  Add test_perf_cleanup shell function to the perf suite, that allows
219  the script writers to define a test with a clean-up action.
221  Will hold, until we get any user.
224 * jc/push-cas (2013-09-20) 1 commit
225   (merged to 'next' on 2013-09-20 at 5e1e7cc)
226  + t5541: mark passing c-a-s test as success
228  A trivial fix to a test.
230  Will merge to 'master'.
233 * jk/format-patch-from (2013-09-20) 1 commit
234   (merged to 'next' on 2013-09-20 at 0506530)
235  + format-patch: print in-body "From" only when needed
237  "format-patch --from=<whom>" forgot to omit unnecessary in-body
238  from line, i.e. when <whom> is the same as the real author.
240  Will merge to 'master'.
242 --------------------------------------------------
243 [Stalled]
245 * tr/merge-recursive-index-only (2013-07-07) 3 commits
246  - merge-recursive: -Xindex-only to leave worktree unchanged
247  - merge-recursive: untangle double meaning of o->call_depth
248  - merge-recursive: remove dead conditional in update_stages()
250  Will hold, until we get any user.
253 * jc/ref-excludes (2013-09-03) 2 commits
254  - document --exclude option
255  - revision: introduce --exclude=<glob> to tame wildcards
257  People often wished a way to tell "git log --branches" (and "git
258  log --remotes --not --branches") to exclude some local branches
259  from the expansion of "--branches" (similarly for "--tags", "--all"
260  and "--glob=<pattern>").  Now they have one.
262  Needs a matching change to rev-parse.
265 * rv/send-email-cache-generated-mid (2013-08-21) 2 commits
266  - git-send-email: Cache generated message-ids, use them when prompting
267  - git-send-email: add optional 'choices' parameter to the ask sub
270 * rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
271  - ### DONTMERGE: needs better explanation on what config they need
272  - pack-refs.c: Add missing call to git_config()
273  - show-ref.c: Add missing call to git_config()
275  The changes themselves are probably good, but it is unclear what
276  basic setting needs to be read for which exact operation.
278  Waiting for clarification.
279  $gmane/228294
282 * jh/shorten-refname (2013-05-07) 4 commits
283  - t1514: refname shortening is done after dereferencing symbolic refs
284  - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
285  - t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
286  - t1514: Add tests of shortening refnames in strict/loose mode
288  When remotes/origin/HEAD is not a symbolic ref, "rev-parse
289  --abbrev-ref remotes/origin/HEAD" ought to show "origin", not
290  "origin/HEAD", which is fixed with this series (if it is a symbolic
291  ref that points at remotes/origin/something, then it should show
292  "origin/something" and it already does).
294  Expecting a reroll, as an early part of a larger series.
295  $gmane/225137
298 * mg/more-textconv (2013-05-10) 7 commits
299  - grep: honor --textconv for the case rev:path
300  - grep: allow to use textconv filters
301  - t7008: demonstrate behavior of grep with textconv
302  - cat-file: do not die on --textconv without textconv filters
303  - show: honor --textconv for blobs
304  - diff_opt: track whether flags have been set explicitly
305  - t4030: demonstrate behavior of show with textconv
307  Make "git grep" and "git show" pay attention to --textconv when
308  dealing with blob objects.
310  I thought this was pretty well designed and executed, but it seems
311  there are some doubts on the list; kicked back to 'pu'.
314 * jc/format-patch (2013-04-22) 2 commits
315  - format-patch: --inline-single
316  - format-patch: rename "no_inline" field
318  A new option to send a single patch to the standard output to be
319  appended at the bottom of a message.  I personally have no need for
320  this, but it was easy enough to cobble together.  Tests, docs and
321  stripping out more MIMEy stuff are left as exercises to interested
322  parties.
324  Not ready for inclusion.
326  Will discard unless we hear from anybody who is interested in
327  tying its loose ends.
330 * jk/gitweb-utf8 (2013-04-08) 4 commits
331  - gitweb: Fix broken blob action parameters on blob/commitdiff pages
332  - gitweb: Don't append ';js=(0|1)' to external links
333  - gitweb: Make feed title valid utf8
334  - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
336  Various fixes to gitweb.
338  Drew Northup volunteered to take a look into this.
339  $gmane/226216
342 * jc/show-branch (2013-06-07) 5 commits
343  - show-branch: use commit slab to represent bitflags of arbitrary width
344  - show-branch.c: remove "all_mask"
345  - show-branch.c: abstract out "flags" operation
346  - show-branch.c: lift all_mask/all_revs to a global static
347  - show-branch.c: update comment style
349  Waiting for the final step to lift the hard-limit before sending it out.
351 --------------------------------------------------
352 [Cooking]
354 * es/name-hash-no-trailing-slash-in-dirs (2013-09-17) 4 commits
355   (merged to 'next' on 2013-09-20 at 9633d9a)
356  + dir: revert work-around for retired dangerous behavior
357  + name-hash: stop storing trailing '/' on paths in index_state.dir_hash
358  + employ new explicit "exists in index?" API
359  + name-hash: refactor polymorphic index_name_exists()
361  Clean up the internal of the name-hash mechanism used to work
362  around case insensitivity on some filesystems to cleanly fix a
363  long-standing API glitch where the caller of cache_name_exists()
364  that ask about a directory with a counted string was required to
365  have '/' at one location past the end of the string.
367  Will merge to 'master'.
370 * po/dot-url (2013-09-13) 2 commits
371   (merged to 'next' on 2013-09-20 at 6a12786)
372  + config doc: update dot-repository notes
373  + doc: command line interface (cli) dot-repository dwimmery
375  Explain how '.' can be used to refer to the "current repository"
376  in the documentation.
378  Will merge to 'master'.
381 * es/contacts-in-subdir (2013-09-17) 1 commit
382   (merged to 'next' on 2013-09-20 at d67164f)
383  + contacts: fix to work in subdirectories
385  Allow the contacts (in contrib/) script to run from inside a
386  subdirectory.
388  Will merge to 'master'.
391 * jc/upload-pack-send-symref (2013-09-17) 7 commits
392  - clone: test the new HEAD detection logic
393  - connect: annotate refs with their symref information in get_remote_head()
394  - connect.c: make parse_feature_value() static
395  - upload-pack: send non-HEAD symbolic refs
396  - upload-pack: send symbolic ref information as capability
397  - upload-pack.c: do not pass confusing cb_data to mark_our_ref()
398  - t5505: fix "set-head --auto with ambiguous HEAD" test
400  One long-standing flaw in the pack transfer protocol used by "git
401  clone" was that there was no way to tell the other end which branch
402  "HEAD" points at, and the receiving end needed to guess.  A new
403  capability has been defined in the pack protocol to convey this
404  information so that cloning from a repository with more than one
405  branches pointing at the same commit where the HEAD is at now
406  reliably sets the initial branch in the resulting repository.
408  Will merge to 'next'.
411 * jk/clone-progress-to-stderr (2013-09-18) 3 commits
412  - clone: always set transport options
413  - clone: treat "checking connectivity" like other progress
414  - clone: send diagnostic messages to stderr
416  Some progress and diagnostic messages from "git clone" were
417  incorrectly sent to the standard output stream, not to the standard
418  error stream.
420  Will merge to 'next'.
423 * nd/fetch-pack-error-reporting-fix (2013-09-18) 1 commit
424   (merged to 'next' on 2013-09-20 at fefa04f)
425  + fetch-pack.c: show correct command name that fails
427  When "fetch-pack" detected an error from spawned "index-pack" or
428  "unpack-objects", it did not report the failed program name
429  correctly when a shallow repository is involved.
431  Will merge to 'master'.
434 * sg/complete-untracked-filter (2013-09-19) 1 commit
435   (merged to 'next' on 2013-09-20 at 798d0b9)
436  + completion: improve untracked directory filtering for filename completion
438  Will merge to 'master'.
441 * jc/strcasecmp-pure-inline (2013-09-12) 1 commit
442   (merged to 'next' on 2013-09-20 at 7142d08)
443  + mailmap: work around implementations with pure inline strcasecmp
445  Work around MinGW <string.h> header that does not declare strcasecmp
446  whose address cannot be taken.
448  Will merge to 'master'.
451 * jk/shortlog-tolerate-broken-commit (2013-09-18) 1 commit
452   (merged to 'next' on 2013-09-20 at 9c85c02)
453  + shortlog: ignore commits with missing authors
455  Will merge to 'master'.
458 * jx/relative-path-regression-fix (2013-09-20) 3 commits
459  - Use simpler relative_path when set_git_dir
460  - relative_path should honor dos-driver-prefix
461  - test: use unambigous leading path (/foo) for mingw
463  Waiting for the review to settle.
466 * nd/unpack-entry-optim-in-pack-objects (2013-09-13) 1 commit
467   (merged to 'next' on 2013-09-17 at 00f7335)
468  + pack-objects: no crc check when the cached version is used
470  The codepath to use data from packfiles that is only exercised in
471  pack-objects unnecessarily checked crc checksum of the pack data,
472  even when it ends up using in-core copy that it got by reading from
473  the pack (at which point the checksum was validated).
475  Will merge to 'master'.
478 * jc/checkout-detach-doc (2013-09-11) 1 commit
479   (merged to 'next' on 2013-09-17 at 438cf13)
480  + checkout: update synopsys and documentation on detaching HEAD
482  "git checkout [--detach] <commit>" was listed poorly in the
483  synopsis section of its documentation.
485  Will merge to 'master'.
488 * jk/trailing-slash-in-pathspec (2013-09-13) 2 commits
489   (merged to 'next' on 2013-09-17 at 18fe277)
490  + reset: handle submodule with trailing slash
491  + rm: re-use parse_pathspec's trailing-slash removal
493  Code refactoring.
495  Will merge to 'master'.
498 * kb/msvc-compile (2013-09-11) 5 commits
499   (merged to 'next' on 2013-09-17 at a9bcbb5)
500  + Windows: do not redefine _WIN32_WINNT
501  + MinGW: Fix stat definitions to work with MinGW runtime version 4.0
502  + MSVC: fix stat definition hell
503  + MSVC: fix compile errors due to macro redefinitions
504  + MSVC: fix compile errors due to missing libintl.h
506  Build updates for Windows port.
508  Will merge to 'master'.
511 * lc/filter-branch-too-many-refs (2013-09-12) 1 commit
512   (merged to 'next' on 2013-09-17 at 31cd01a)
513  + Allow git-filter-branch to process large repositories with lots of branches.
515  "git filter-branch" in a repository with many refs blew limit of
516  command line length.
518  Will merge to 'master'.
521 * np/pack-v4 (2013-09-18) 90 commits
522  - packv4-parse.c: add tree offset caching
523  - t1050: replace one instance of show-index with verify-pack
524  - index-pack, pack-objects: allow creating .idx v2 with .pack v4
525  - unpack-objects: decode v4 trees
526  - unpack-objects: allow to save processed bytes to a buffer
527  - ...
529  Nico and Duy advancing the eternal vaporware pack-v4.  This is here
530  primarily for wider distribution of the preview edition.
533 * cc/replace-with-the-same-type (2013-09-09) 8 commits
534   (merged to 'next' on 2013-09-17 at 34b5bb7)
535  + Doc: 'replace' merge and non-merge commits
536  + t6050-replace: use some long option names
537  + replace: allow long option names
538  + Documentation/replace: add Creating Replacement Objects section
539  + t6050-replace: add test to clean up all the replace refs
540  + t6050-replace: test that objects are of the same type
541  + Documentation/replace: state that objects must be of the same type
542  + replace: forbid replacing an object with one of a different type
544  Using the replace mechanism to swap an object with another object
545  of a different type can introduce inconsistency (e.g. a tree
546  expects an object name to refer to a blob, but the blob object can
547  be mistakenly or maliciously replaced with an object with a
548  different type). Attempt to forbid such.
550  Will merge to 'master'.
553 * bc/submodule-status-ignored (2013-09-11) 3 commits
554   (merged to 'next' on 2013-09-11 at 9f66712)
555  + Improve documentation concerning the status.submodulesummary setting
556   (merged to 'next' on 2013-09-10 at a417960)
557  + submodule: don't print status output with ignore=all
558  + submodule: fix confusing variable name
560  Will merge to 'master'.
563 * sb/repack-in-c (2013-09-17) 3 commits
564  - repack: improve warnings about failure of renaming and removing files
565  - repack: retain the return value of pack-objects
566  - repack: rewrite the shell script in C
568  Rerolled, and I think it is in a reasonably good shape.
570  Will merge to 'next'.
573 * jc/reflog-doc (2013-06-19) 1 commit
574  - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
576  Document rules to use GIT_REFLOG_ACTION variable in the scripted
577  Porcelain.  git-rebase--interactive locally violates this, but it
578  is a leaf user that does not call out to or dot-sources other
579  scripts, so fixing it is not all that urgent.
581  Will merge to 'next'.
584 * jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
585  - git add: -u/-A now affects the entire working tree
587  Will cook in 'next' until Git 2.0.
590 * jc/core-checkstat-2.0 (2013-05-06) 1 commit
591  - core.statinfo: remove as promised in Git 2.0
593  Will cook in 'next' until Git 2.0.
596 * jc/push-2.0-default-to-simple (2013-06-18) 1 commit
597  - push: switch default from "matching" to "simple"
599  Will cook in 'next' until Git 2.0.
602 * jc/add-2.0-ignore-removal (2013-04-22) 1 commit
603  - git add <pathspec>... defaults to "-A"
605  Updated endgame for "git add <pathspec>" that defaults to "--all"
606  aka "--no-ignore-removal".
608  Will cook in 'next' until Git 2.0.
611 * jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
612  - diff: remove "diff-files -q" in a version of Git in a distant future
614  Will cook in 'next' until a distant future.
616 --------------------------------------------------
617 [Discarded]
619 * jc/pull-training-wheel (2013-07-19) 1 commit
620   (merged to 'next' on 2013-08-28 at c39bd15)
621  + pull: require choice between rebase/merge on non-fast-forward pull
623  Make "git pull" (without arguments that say what branch to
624  integrate from where) refuse with "it does not fast forward; choose
625  between 'pull --merge' and 'pull --rebase'".
627  This topic has been reverted from 'next'.  Will wait for the
628  conclusion of the discussion to seek a more user-friendly
629  alternative; it is likely that it will be based on the simpler
630  approach Felipe posted earlier.