What's cooking (2013/08 #02)
[git/jrn.git] / whats-cooking.txt
blobac8c2d5c9bcfb357ffd2c6881579d92eff2feb9d
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Aug 2013, #02; Mon, 5)
4 X-master-at: fb5657082148297b61fbca7e64d51c1e7870309a
5 X-next-at: bd48715ffb07f749d234547613e0616af41e5079
7 What's cooking in git.git (Aug 2013, #02; Mon, 5)
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 first release candidate v1.8.4-rc1 has been tagged; only
15 regression fixes and l10n updates from now on.
17 You can find the changes described here in the integration branches
18 of the repositories listed at
20     http://git-blame.blogspot.com/p/git-public-repositories.html
22 --------------------------------------------------
23 [Graduated to "master"]
25 * rj/cygwin-clarify-use-of-cheating-lstat (2013-07-18) 1 commit
26   (merged to 'next' on 2013-08-01 at 3ebfe7c)
27  + cygwin: Remove the Win32 l/stat() implementation
29  Cygwin port added a "not quite correct but a lot faster and good
30  enough for many lstat() calls that are only used to see if the
31  working tree entity matches the index entry" lstat() emulation some
32  time ago, and it started biting us in places.  This removes it and
33  uses the standard lstat() that comes with Cygwin.
35  Recent topic that uses lstat on packed-refs file is broken when
36  this cheating lstat is used, and this is a simplest fix that is
37  also the cleanest direction to go in the long run.
39 --------------------------------------------------
40 [New Topics]
42 * es/blame-L-more (2013-08-05) 11 commits
43  - blame: reject empty ranges -L,+0 and -L,-0
44  - t8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0
45  - blame: reject empty ranges -LX,+0 and -LX,-0
46  - t8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0
47  - log: fix -L bounds checking bug
48  - t4211: retire soon-to-be unimplementable tests
49  - t4211: log: demonstrate -L bounds checking bug
50  - blame: fix -L bounds checking bug
51  - t8001/t8002: blame: add empty file & partial-line tests
52  - t8001/t8002: blame: demonstrate -L bounds checking bug
53  - t8001/t8002: blame: decompose overly-large test
55  More fixes to the code to parse the "-L" option in "log" and "blame".
57  Will merge to and cook in 'next'.
60 * jk/cat-file-batch-optim (2013-08-05) 1 commit
61  - cat-file: only split on whitespace when %(rest) is used
63  Rework the reverted change to `cat-file --batch-check`.
65  Will merge to and cook in 'next'.
68 * jn/post-receive-utf8 (2013-08-05) 3 commits
69  - hooks/post-receive-email: set declared encoding to utf-8
70  - hooks/post-receive-email: force log messages in UTF-8
71  - hooks/post-receive-email: use plumbing instead of git log/show
73  Update post-receive-email script to make sure the message contents
74  and pathnames are encoded consistently in UTF-8.
76  I have a feeling that it is a lost cause to solve the issue the
77  topic tries to address in general, because the patch text can have
78  payload in any encodings that are different from either the
79  pathnames or the log message.  Patches that touch paths that use an
80  encoding that conflicts with the encoding of the payload and/or the
81  log message could be transferred with core.quotepath set and patch
82  generated as all binary, but that would be pretty much useless.
85 * sb/parseopt-boolean-removal (2013-08-05) 9 commits
86  - revert: use the OPT_CMDMODE for parsing, reducing code
87  - checkout-index: Fix negations of even numbers of -n
88  - config parsing options: allow one flag multiple times
89  - hash-object: Replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP
90  - branch, commit, name-rev: ease up boolean conditions
91  - checkout: remove superfluous local variable
92  - log, format-patch: parsing uses OPT__QUIET
93  - Replace deprecated OPT_BOOLEAN by OPT_BOOL
94  - Remove deprecated OPTION_BOOLEAN for parsing arguments
95  (this branch uses jc/parseopt-command-modes.)
97  Convert most uses of OPT_BOOLEAN/OPTION_BOOLEAN that can use
98  OPT_BOOL/OPTION_BOOLEAN which have much saner semantics, and turn
99  remaining ones into OPT_SET_INT, OPT_COUNTUP, etc. as necessary;
100  there seems to be some misconversion that makes many tests fail,
101  though.
103 --------------------------------------------------
104 [Stalled]
106 * tf/gitweb-ss-tweak (2013-07-15) 4 commits
107  - gitweb: make search help link less ugly
108  - gitweb: omit the repository owner when it is unset
109  - gitweb: vertically centre contents of page footer
110  - gitweb: ensure OPML text fits inside its box
112  Comments?
115 * rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
116  - ### DONTMERGE: needs better explanation on what config they need
117  - pack-refs.c: Add missing call to git_config()
118  - show-ref.c: Add missing call to git_config()
120  The changes themselves are probably good, but it is unclear what
121  basic setting needs to be read for which exact operation.
123  Waiting for clarification.
124  $gmane/228294
127 * jh/shorten-refname (2013-05-07) 4 commits
128  - t1514: refname shortening is done after dereferencing symbolic refs
129  - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
130  - t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
131  - t1514: Add tests of shortening refnames in strict/loose mode
133  When remotes/origin/HEAD is not a symbolic ref, "rev-parse
134  --abbrev-ref remotes/origin/HEAD" ought to show "origin", not
135  "origin/HEAD", which is fixed with this series (if it is a symbolic
136  ref that points at remotes/origin/something, then it should show
137  "origin/something" and it already does).
139  Expecting a reroll, as an early part of a larger series.
140  $gmane/225137
143 * jk/list-objects-sans-blobs (2013-06-06) 4 commits
144  . archive: ignore blob objects when checking reachability
145  . list-objects: optimize "revs->blob_objects = 0" case
146  . upload-archive: restrict remote objects with reachability check
147  . clear parsed flag when we free tree buffers
149  Attempt to allow "archive --remote=$there $arbitrary_sha1" while
150  keeping the reachability safety.
152  Seems to break some tests in a trivial and obvious way.
155 * mg/more-textconv (2013-05-10) 7 commits
156  - grep: honor --textconv for the case rev:path
157  - grep: allow to use textconv filters
158  - t7008: demonstrate behavior of grep with textconv
159  - cat-file: do not die on --textconv without textconv filters
160  - show: honor --textconv for blobs
161  - diff_opt: track whether flags have been set explicitly
162  - t4030: demonstrate behavior of show with textconv
164  Make "git grep" and "git show" pay attention to --textconv when
165  dealing with blob objects.
167  I thought this was pretty well designed and executed, but it seems
168  there are some doubts on the list; kicked back to 'pu'.
171 * jc/format-patch (2013-04-22) 2 commits
172  - format-patch: --inline-single
173  - format-patch: rename "no_inline" field
175  A new option to send a single patch to the standard output to be
176  appended at the bottom of a message.  I personally have no need for
177  this, but it was easy enough to cobble together.  Tests, docs and
178  stripping out more MIMEy stuff are left as exercises to interested
179  parties.
181  Not ready for inclusion.
183  Will discard unless we hear from anybody who is interested in
184  tying its loose ends.
187 * jk/gitweb-utf8 (2013-04-08) 4 commits
188  - gitweb: Fix broken blob action parameters on blob/commitdiff pages
189  - gitweb: Don't append ';js=(0|1)' to external links
190  - gitweb: Make feed title valid utf8
191  - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
193  Various fixes to gitweb.
195  Drew Northup volunteered to take a look into this.
196  $gmane/226216
199 * jc/show-branch (2013-06-07) 5 commits
200  - show-branch: use commit slab to represent bitflags of arbitrary width
201  - show-branch.c: remove "all_mask"
202  - show-branch.c: abstract out "flags" operation
203  - show-branch.c: lift all_mask/all_revs to a global static
204  - show-branch.c: update comment style
206  Waiting for the final step to lift the hard-limit before sending it out.
208 --------------------------------------------------
209 [Cooking]
211 * mb/docs-favor-en-us (2013-08-01) 1 commit
212  - Provide some linguistic guidance for the documentation.
214  Will merge to and cook in 'next'.
217 * jc/parseopt-command-modes (2013-07-30) 2 commits
218  - tag: use OPT_CMDMODE
219  - parse-options: add OPT_CMDMODE()
220  (this branch is used by sb/parseopt-boolean-removal.)
222  Many commands use --dashed-option as a operation mode selector
223  (e.g. "git tag --delete") that the user can use at most one
224  (e.g. "git tag --delete --verify" is a nonsense) and you cannot
225  negate (e.g. "git tag --no-delete" is a nonsense).  Make it easier
226  for users of parse_options() to enforce these restrictions.
229 * tr/log-full-diff-keep-true-parents (2013-08-05) 2 commits
230  - log: use true parents for diff when walking reflogs
231  - log: use true parents for diff even when rewriting
233  Output from "git log --full-diff -- <pathspec>" looked strange,
234  because comparison was done with the previous ancestor that touched
235  the specified <pathspec>, causing the patches for paths outside the
236  pathspec to show more than the single commit has changed.
238  Tweak "git reflog -p" for the same reason using the same mechanism.
241 * bc/unuse-packfile (2013-08-02) 2 commits
242  - Don't close pack fd when free'ing pack windows
243  - sha1_file: introduce close_one_pack() to close packs on fd pressure
245  Will merge to and cook in 'next'.
248 * da/darwin (2013-08-05) 3 commits
249   (merged to 'next' on 2013-08-05 at 5c54cfa)
250  + OS X: Fix redeclaration of die warning
251  + Makefile: Fix APPLE_COMMON_CRYPTO with BLK_SHA1
252   (merged to 'next' on 2013-08-01 at d151a94)
253  + imap-send: use Apple's Security framework for base64 encoding
255  Will cook in 'next'.
258 * nd/sq-quote-buf (2013-07-30) 3 commits
259   (merged to 'next' on 2013-08-01 at dc7934a)
260  + quote: remove sq_quote_print()
261  + tar-tree: remove dependency on sq_quote_print()
262  + for-each-ref, quote: convert *_quote_print -> *_quote_buf
264  Code simplification as a preparatory step to something larger.
266  Will cook in 'next'.
269 * jc/url-match (2013-07-31) 6 commits
270  - config: "git config --get-urlmatch" parses section.<url>.key
271  - builtin/config: refactor collect_config()
272  - config: parse http.<url>.<variable> using urlmatch
273  - config: add generic callback wrapper to parse section.<url>.key
274  - config: add helper to normalize and match URLs
275  - http.c: fix parsing of http.sslCertPasswordProtected variable
277  Reroll of km/http-curl-config-per-url topic.  Peff raises many good
278  points about the tests for http.* variables.
280  Waiting for the discussion to conclude, hopefully with a replacement test.
283 * jl/submodule-mv (2013-07-30) 5 commits
284  - rm: delete .gitmodules entry of submodules removed from the work tree
285  - mv: update the path entry in .gitmodules for moved submodules
286  - submodule.c: add .gitmodules staging helper functions
287  - mv: move submodules using a gitfile
288  - mv: move submodules together with their work trees
289  (this branch uses nd/magic-pathspec.)
291  "git mv A B" when moving a submodule A does "the right thing",
292  inclusing relocating its working tree and adjusting the paths in
293  the .gitmodules file.
295  Waiting for a reroll.
298 * nd/clone-connectivity-shortcut (2013-07-23) 1 commit
299   (merged to 'next' on 2013-07-30 at 8d16721)
300  + smart http: use the same connectivity check on cloning
302  Will cook in 'next'.
305 * db/http-savecookies (2013-08-05) 2 commits
306   (merged to 'next' on 2013-08-05 at be6f3a3)
307  + t5551: Remove header from curl cookie file
308   (merged to 'next' on 2013-07-30 at d2ad6e5)
309  + http: add http.savecookies option to write out HTTP cookies
311  Will cook in 'next'.
314 * sb/fsck-opt-bool (2013-07-29) 1 commit
315   (merged to 'next' on 2013-07-30 at 8a9964c)
316  + fsck: Replace deprecated OPT_BOOLEAN by OPT_BOOL
318  Will cook in 'next'.
321 * rr/feed-real-path-to-editor (2013-07-29) 1 commit
322   (merged to 'next' on 2013-07-30 at 72c9bcb)
323  + editor: use canonicalized absolute path
325  Will cook in 'next'.
328 * rj/doc-rev-parse (2013-07-22) 2 commits
329   (merged to 'next' on 2013-07-22 at 8188667)
330  + rev-parse(1): logically group options
331  + rev-parse: remove restrictions on some options
333  Will cook in 'next'.
336 * jk/fast-import-empty-ls (2013-06-23) 4 commits
337   (merged to 'next' on 2013-07-22 at d26dab6)
338  + fast-import: allow moving the root tree
339  + fast-import: allow ls or filecopy of the root tree
340  + fast-import: set valid mode on root tree in "ls"
341  + t9300: document fast-import empty path issues
343  Will cook in 'next'.
346 * jc/diff-filter-negation (2013-07-19) 6 commits
347   (merged to 'next' on 2013-07-22 at 80d167d)
348  + diff: deprecate -q option to diff-files
349  + diff: allow lowercase letter to specify what change class to exclude
350  + diff: reject unknown change class given to --diff-filter
351  + diff: preparse --diff-filter string argument
352  + diff: factor out match_filter()
353  + diff: pass the whole diff_options to diffcore_apply_filter()
354  (this branch is used by jc/hold-diff-remove-q-synonym-for-no-deletion.)
356  Teach "git diff --diff-filter" to express "I do not want to see
357  these classes of changes" more directly by listing only the
358  unwanted ones in lowercase (e.g. "--diff-filter=d" will show
359  everything but deletion) and deprecate "diff-files -q" which did
360  the same thing as "--diff-filter=d".
362  Will cook in 'next'.
365 * nd/magic-pathspec (2013-07-23) 48 commits
366   (merged to 'next' on 2013-07-23 at 784c3a1)
367  + rm: do not set a variable twice without intermediate reading.
368   (merged to 'next' on 2013-07-22 at 39f7194)
369  + t6131 - skip tests if on case-insensitive file system
370  + parse_pathspec: accept :(icase)path syntax
371  + pathspec: support :(glob) syntax
372  + pathspec: make --literal-pathspecs disable pathspec magic
373  + pathspec: support :(literal) syntax for noglob pathspec
374  + kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
375  + parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
376  + parse_pathspec: make sure the prefix part is wildcard-free
377  + rename field "raw" to "_raw" in struct pathspec
378  + tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
379  + remove match_pathspec() in favor of match_pathspec_depth()
380  + remove init_pathspec() in favor of parse_pathspec()
381  + remove diff_tree_{setup,release}_paths
382  + convert common_prefix() to use struct pathspec
383  + convert add_files_to_cache to take struct pathspec
384  + convert {read,fill}_directory to take struct pathspec
385  + convert refresh_index to take struct pathspec
386  + convert report_path_error to take struct pathspec
387  + checkout: convert read_tree_some to take struct pathspec
388  + convert unmerge_cache to take struct pathspec
389  + convert run_add_interactive to use struct pathspec
390  + convert read_cache_preload() to take struct pathspec
391  + line-log: convert to use parse_pathspec
392  + reset: convert to use parse_pathspec
393  + add: convert to use parse_pathspec
394  + check-ignore: convert to use parse_pathspec
395  + archive: convert to use parse_pathspec
396  + ls-files: convert to use parse_pathspec
397  + rm: convert to use parse_pathspec
398  + checkout: convert to use parse_pathspec
399  + rerere: convert to use parse_pathspec
400  + status: convert to use parse_pathspec
401  + commit: convert to use parse_pathspec
402  + clean: convert to use parse_pathspec
403  + guard against new pathspec magic in pathspec matching code
404  + parse_pathspec: support prefixing original patterns
405  + parse_pathspec: support stripping/checking submodule paths
406  + parse_pathspec: support stripping submodule trailing slashes
407  + parse_pathspec: add special flag for max_depth feature
408  + convert some get_pathspec() calls to parse_pathspec()
409  + parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL} flags
410  + parse_pathspec: save original pathspec for reporting
411  + add parse_pathspec() that converts cmdline args to struct pathspec
412  + pathspec: add copy_pathspec
413  + pathspec: i18n-ize error strings in pathspec parsing code
414  + move struct pathspec and related functions to pathspec.[ch]
415  + clean: remove unused variable "seen"
416  (this branch is used by jl/submodule-mv.)
418  Use "struct pathspec" interface in more places, instead of array of
419  characters, the latter of which cannot express magic pathspecs
420  (e.g. ":(icase)makefile" that matches both Makefile and makefile).
422  Will cook in 'next'.
425 * jc/check-x-z (2013-07-11) 4 commits
426   (merged to 'next' on 2013-07-15 at 62751bc)
427  + check-attr -z: a single -z should apply to both input and output
428  + check-ignore -z: a single -z should apply to both input and output
429  + check-attr: the name of the character is NUL, not NULL
430  + check-ignore: the name of the character is NUL, not NULL
432  "git check-ignore -z" applied the NUL termination to both its input
433  (with --stdin) and its output, but "git check-attr -z" ignored the
434  option on the output side.
436  This is potentially a backward incompatible fix.  I am tempted to
437  merge this to and keep it in 'next' for a while to see if anybody
438  screams before deciding if we want to do anything to help existing
439  users (there may be none).
441  Will cook in 'next'.
444 * ms/fetch-prune-configuration (2013-07-18) 1 commit
445   (merged to 'next' on 2013-07-21 at 7ffb690)
446  + fetch: make --prune configurable
448  Allow fetch.prune and remote.*.prune configuration variables to be set,
449  and "git fetch" to behave as if "--prune" is given.
451  "git fetch" that honors remote.*.prune is fine, but I wonder if we
452  should somehow make "git push" aware of it as well.  Perhaps
453  remote.*.prune should not be just a boolean, but a 4-way "none",
454  "push", "fetch", "both"?
456  Will cook in 'next'.
459 * km/svn-1.8-serf-only (2013-07-18) 3 commits
460   (merged to 'next' on 2013-07-19 at ab8d034)
461  + Git.pm: revert _temp_cache use of temp_is_locked
462   (merged to 'next' on 2013-07-12 at 70e0b95)
463  + git-svn: allow git-svn fetching to work using serf
464  + Git.pm: add new temp_is_locked function
466  Subversion 1.8.0 that was recently released breaks older subversion
467  clients coming over http/https in various ways.
469  Will cook in 'next'.
472 * tr/merge-recursive-index-only (2013-07-07) 3 commits
473  - merge-recursive: -Xindex-only to leave worktree unchanged
474  - merge-recursive: untangle double meaning of o->call_depth
475  - merge-recursive: remove dead conditional in update_stages()
477  Will hold, until we get any user.
480 * jc/push-cas (2013-08-02) 9 commits
481   (merged to 'next' on 2013-08-05 at 34f4cf3)
482  + push: teach --force-with-lease to smart-http transport
483  + send-pack: fix parsing of --force-with-lease option
484   (merged to 'next' on 2013-08-01 at a7604ee)
485  + t5540/5541: smart-http does not support "--force-with-lease"
486   (merged to 'next' on 2013-07-23 at 72371b0)
487  + t5533: test "push --force-with-lease"
488  + push --force-with-lease: tie it all together
489  + push --force-with-lease: implement logic to populate old_sha1_expect[]
490  + remote.c: add command line option parser for "--force-with-lease"
491  + builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
492  + cache.h: move remote/connect API out of it
494  Allow a safer "rewind of the remote tip" push than blind "--force",
495  by requiring that the overwritten remote ref to be unchanged since
496  the new history to replace it was prepared.
498  The machinery is more or less ready.  The "--force" option is again
499  the big red button to override any safety, thanks to J6t's sanity
500  (the original round allowed --lockref to defeat --force).
502  The logic to choose the default implemented here is fragile
503  (e.g. "git fetch" after seeing a failure will update the
504  remote-tracking branch and will make the next "push" pass,
505  defeating the safety pretty easily).  It is suitable only for the
506  simplest workflows, and it may hurt users more than it helps them.
508  Will cook in 'next'.
511 * jc/pull-training-wheel (2013-07-19) 1 commit
512   (merged to 'next' on 2013-07-22 at 748180e)
513  + pull: require choice between rebase/merge on non-fast-forward pull
515  Make "git pull" (without arguments that say what branch to
516  integrate from where) refuse with "it does not fast forward; choose
517  between 'pull --merge' and 'pull --rebase'".
519  See
521  http://thread.gmane.org/gmane.comp.version-control.git/225146/focus=225326
522  http://thread.gmane.org/gmane.comp.version-control.git/225146/focus=229221
524  for full discussion.
526  Will cook in 'next'.
529 * jc/reflog-doc (2013-06-19) 1 commit
530  - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
532  Document rules to use GIT_REFLOG_ACTION variable in the scripted
533  Porcelain.  git-rebase--interactive locally violates this, but it
534  is a leaf user that does not call out to or dot-sources other
535  scripts, so fixing it is not all that urgent.
538 * jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
539  - git add: -u/-A now affects the entire working tree
541  Will cook in 'next' until Git 2.0.
544 * jc/core-checkstat-2.0 (2013-05-06) 1 commit
545  - core.statinfo: remove as promised in Git 2.0
547  Will cook in 'next' until Git 2.0.
550 * jc/push-2.0-default-to-simple (2013-06-18) 1 commit
551  - push: switch default from "matching" to "simple"
553  Will cook in 'next' until Git 2.0.
556 * jc/add-2.0-ignore-removal (2013-04-22) 1 commit
557  - git add <pathspec>... defaults to "-A"
559  Updated endgame for "git add <pathspec>" that defaults to "--all"
560  aka "--no-ignore-removal".
562  Will cook in 'next' until Git 2.0.
565 * jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
566  - diff: remove "diff-files -q" in a version of Git in a distant future
567  (this branch uses jc/diff-filter-negation.)
569  Will cook in 'next' until a distant future.
571 --------------------------------------------------
572 [Discarded]
574 * jh/remote-hg-fetch-fix (2013-07-25) 2 commits
575   (merged to 'next' on 2013-07-25 at 33161ad)
576  + Revert "remotes-hg: bugfix for fetching non local remotes"
577   (merged to 'next' on 2013-07-24 at 9c96641)
578  + remotes-hg: bugfix for fetching non local remotes
580  Reverted.
582  Waiting for the final patch to replace, after discussion settles.
585 * km/http-curl-config-per-url (2013-07-31) 7 commits
586   (merged to 'next' on 2013-07-31 at e88aad5)
587  + Revert km/http-curl-config-per-url in its entirety
588   (merged to 'next' on 2013-07-25 at 531e8cb)
589  + docs: update http.<url>.* options documentation
590   (merged to 'next' on 2013-07-23 at f84689b)
591  + config: allow http.<url>.* any user matching
592  + tests: add new test for the url_normalize function
593  + config: improve support for http.<url>.* settings
594  + config: add support for http.<url>.* settings
595  + http.c: fix parsing of http.sslCertPasswordProtected variable
597  Reverted to be replaced with a reroll (jc/url-match topic).