What's cooking (2013/08 #01)
[git.git] / whats-cooking.txt
blob283f9bea92e08cae3e9f4179a5b19b783d568f6e
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Aug 2013, #01; Thu, 1)
4 X-master-at: 304852fc77847e649c746db95e9c4675c03ee567
5 X-next-at: d151a9437b346971b08e58455c2b1333b2139cdc
7 What's cooking in git.git (Aug 2013, #01; Thu, 1)
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 * jc/rm-submodule-error-message (2013-07-25) 1 commit
26  + builtin/rm.c: consolidate error reporting for removing submodules
29 * jx/clean-interactive (2013-07-24) 2 commits
30   (merged to 'next' on 2013-07-30 at b7fd474)
31  + git-clean: implement partial matching for selection
32   (merged to 'next' on 2013-07-24 at 1e63bb9)
33  + Documentation/git-clean: fix description for range
36 * lf/echo-n-is-not-portable (2013-07-29) 1 commit
37   (merged to 'next' on 2013-07-30 at e223ceb)
38  + Avoid using `echo -n` anywhere
41 * ma/hg-to-git (2013-07-23) 1 commit
42   (merged to 'next' on 2013-07-30 at 1dddc06)
43  + hg-to-git: --allow-empty-message in git commit
46 * ms/subtree-install-fix (2013-07-30) 1 commit
47  + contrib/subtree: Fix make install target
50 * ob/typofixes (2013-07-29) 1 commit
51   (merged to 'next' on 2013-07-30 at ec2c897)
52  + many small typofixes
54 --------------------------------------------------
55 [New Topics]
57 * mb/docs-favor-en-us (2013-08-01) 1 commit
58  - Provide some linguistic guidance for the documentation.
60  Will merge to and cook in 'next'.
63 * jc/parseopt-command-modes (2013-07-30) 2 commits
64  - tag: use OPT_CMDMODE
65  - parse-options: add OPT_CMDMODE()
67  Many commands use --dashed-option as a operation mode selector
68  (e.g. "git tag --delete") that the user can use at most one
69  (e.g. "git tag --delete --verify" is a nonsense) and you cannot
70  negate (e.g. "git tag --no-delete" is a nonsense).  Make it easier
71  for users of parse_options() to enforce these restrictions.
73 --------------------------------------------------
74 [Stalled]
76 * tf/gitweb-ss-tweak (2013-07-15) 4 commits
77  - gitweb: make search help link less ugly
78  - gitweb: omit the repository owner when it is unset
79  - gitweb: vertically centre contents of page footer
80  - gitweb: ensure OPML text fits inside its box
82  Comments?
85 * rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
86  - ### DONTMERGE: needs better explanation on what config they need
87  - pack-refs.c: Add missing call to git_config()
88  - show-ref.c: Add missing call to git_config()
90  The changes themselves are probably good, but it is unclear what
91  basic setting needs to be read for which exact operation.
93  Waiting for clarification.
94  $gmane/228294
97 * jh/shorten-refname (2013-05-07) 4 commits
98  - t1514: refname shortening is done after dereferencing symbolic refs
99  - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
100  - t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
101  - t1514: Add tests of shortening refnames in strict/loose mode
103  When remotes/origin/HEAD is not a symbolic ref, "rev-parse
104  --abbrev-ref remotes/origin/HEAD" ought to show "origin", not
105  "origin/HEAD", which is fixed with this series (if it is a symbolic
106  ref that points at remotes/origin/something, then it should show
107  "origin/something" and it already does).
109  Expecting a reroll, as an early part of a larger series.
110  $gmane/225137
113 * jk/list-objects-sans-blobs (2013-06-06) 4 commits
114  . archive: ignore blob objects when checking reachability
115  . list-objects: optimize "revs->blob_objects = 0" case
116  . upload-archive: restrict remote objects with reachability check
117  . clear parsed flag when we free tree buffers
119  Attempt to allow "archive --remote=$there $arbitrary_sha1" while
120  keeping the reachability safety.
122  Seems to break some tests in a trivial and obvious way.
125 * mg/more-textconv (2013-05-10) 7 commits
126  - grep: honor --textconv for the case rev:path
127  - grep: allow to use textconv filters
128  - t7008: demonstrate behavior of grep with textconv
129  - cat-file: do not die on --textconv without textconv filters
130  - show: honor --textconv for blobs
131  - diff_opt: track whether flags have been set explicitly
132  - t4030: demonstrate behavior of show with textconv
134  Make "git grep" and "git show" pay attention to --textconv when
135  dealing with blob objects.
137  I thought this was pretty well designed and executed, but it seems
138  there are some doubts on the list; kicked back to 'pu'.
141 * jc/format-patch (2013-04-22) 2 commits
142  - format-patch: --inline-single
143  - format-patch: rename "no_inline" field
145  A new option to send a single patch to the standard output to be
146  appended at the bottom of a message.  I personally have no need for
147  this, but it was easy enough to cobble together.  Tests, docs and
148  stripping out more MIMEy stuff are left as exercises to interested
149  parties.
151  Not ready for inclusion.
153  Will discard unless we hear from anybody who is interested in
154  tying its loose ends.
157 * jk/gitweb-utf8 (2013-04-08) 4 commits
158  - gitweb: Fix broken blob action parameters on blob/commitdiff pages
159  - gitweb: Don't append ';js=(0|1)' to external links
160  - gitweb: Make feed title valid utf8
161  - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
163  Various fixes to gitweb.
165  Drew Northup volunteered to take a look into this.
166  $gmane/226216
169 * jc/show-branch (2013-06-07) 5 commits
170  - show-branch: use commit slab to represent bitflags of arbitrary width
171  - show-branch.c: remove "all_mask"
172  - show-branch.c: abstract out "flags" operation
173  - show-branch.c: lift all_mask/all_revs to a global static
174  - show-branch.c: update comment style
176  Waiting for the final step to lift the hard-limit before sending it out.
178 --------------------------------------------------
179 [Cooking]
181 * tr/log-full-diff-keep-true-parents (2013-08-01) 1 commit
182  - log: use true parents for diff even when rewriting
184  Output from "git log --full-diff -- <pathspec>" looked strange,
185  because comparison was done with the previous ancestor that touched
186  the specified <pathspec>, causing the patches for paths outside the
187  pathspec to show more than the single commit has changed.
189  I am not sure if that is necessarily a problem, though.  Output
190  from "git log --full-diff -2 -- <pathspec>" without this change
191  will be applicable to some codebase, but after this change that
192  will no longer be true (you will get only tiny parts of the change
193  that were made by the two commits in question, while missing all
194  the other changes).
197 * bc/unuse-packfile (2013-08-01) 2 commits
198  - Don't close pack fd when free'ing pack windows
199  - sha1_file: introduce close_one_pack() to close packs on fd pressure
201  Will merge to and cook in 'next'.
204 * da/darwin (2013-07-30) 1 commit
205   (merged to 'next' on 2013-08-01 at d151a94)
206  + imap-send: use Apple's Security framework for base64 encoding
208  Will cook in 'next'.
211 * nd/sq-quote-buf (2013-07-30) 3 commits
212   (merged to 'next' on 2013-08-01 at dc7934a)
213  + quote: remove sq_quote_print()
214  + tar-tree: remove dependency on sq_quote_print()
215  + for-each-ref, quote: convert *_quote_print -> *_quote_buf
217  Code simplification as a preparatory step to something larger.
219  Will cook in 'next'.
222 * jc/url-match (2013-07-31) 6 commits
223  - config: "git config --get-urlmatch" parses section.<url>.key
224  - builtin/config: refactor collect_config()
225  - config: parse http.<url>.<variable> using urlmatch
226  - config: add generic callback wrapper to parse section.<url>.key
227  - config: add helper to normalize and match URLs
228  - http.c: fix parsing of http.sslCertPasswordProtected variable
230  Reroll of km/http-curl-config-per-url topic.  Peff raises many good
231  points about the tests for http.* variables.
233  Waiting for the discussion to conclude, hopefully with a replacement test.
236 * jl/submodule-mv (2013-07-30) 5 commits
237  - rm: delete .gitmodules entry of submodules removed from the work tree
238  - mv: update the path entry in .gitmodules for moved submodules
239  - submodule.c: add .gitmodules staging helper functions
240  - mv: move submodules using a gitfile
241  - mv: move submodules together with their work trees
242  (this branch uses nd/magic-pathspec.)
244  "git mv A B" when moving a submodule A does "the right thing",
245  inclusing relocating its working tree and adjusting the paths in
246  the .gitmodules file.
248  Waiting for a reroll.
251 * nd/clone-connectivity-shortcut (2013-07-23) 1 commit
252   (merged to 'next' on 2013-07-30 at 8d16721)
253  + smart http: use the same connectivity check on cloning
255  Will cook in 'next'.
258 * db/http-savecookies (2013-07-30) 1 commit
259   (merged to 'next' on 2013-07-30 at d2ad6e5)
260  + http: add http.savecookies option to write out HTTP cookies
262  Will cook in 'next'.
265 * sb/fsck-opt-bool (2013-07-29) 1 commit
266   (merged to 'next' on 2013-07-30 at 8a9964c)
267  + fsck: Replace deprecated OPT_BOOLEAN by OPT_BOOL
269  Will cook in 'next'.
272 * rr/feed-real-path-to-editor (2013-07-29) 1 commit
273   (merged to 'next' on 2013-07-30 at 72c9bcb)
274  + editor: use canonicalized absolute path
276  Will cook in 'next'.
279 * rj/doc-rev-parse (2013-07-22) 2 commits
280   (merged to 'next' on 2013-07-22 at 8188667)
281  + rev-parse(1): logically group options
282  + rev-parse: remove restrictions on some options
284  Will cook in 'next'.
287 * jk/fast-import-empty-ls (2013-06-23) 4 commits
288   (merged to 'next' on 2013-07-22 at d26dab6)
289  + fast-import: allow moving the root tree
290  + fast-import: allow ls or filecopy of the root tree
291  + fast-import: set valid mode on root tree in "ls"
292  + t9300: document fast-import empty path issues
294  Will cook in 'next'.
297 * jc/diff-filter-negation (2013-07-19) 6 commits
298   (merged to 'next' on 2013-07-22 at 80d167d)
299  + diff: deprecate -q option to diff-files
300  + diff: allow lowercase letter to specify what change class to exclude
301  + diff: reject unknown change class given to --diff-filter
302  + diff: preparse --diff-filter string argument
303  + diff: factor out match_filter()
304  + diff: pass the whole diff_options to diffcore_apply_filter()
305  (this branch is used by jc/hold-diff-remove-q-synonym-for-no-deletion.)
307  Teach "git diff --diff-filter" to express "I do not want to see
308  these classes of changes" more directly by listing only the
309  unwanted ones in lowercase (e.g. "--diff-filter=d" will show
310  everything but deletion) and deprecate "diff-files -q" which did
311  the same thing as "--diff-filter=d".
313  Will cook in 'next'.
316 * nd/magic-pathspec (2013-07-23) 48 commits
317   (merged to 'next' on 2013-07-23 at 784c3a1)
318  + rm: do not set a variable twice without intermediate reading.
319   (merged to 'next' on 2013-07-22 at 39f7194)
320  + t6131 - skip tests if on case-insensitive file system
321  + parse_pathspec: accept :(icase)path syntax
322  + pathspec: support :(glob) syntax
323  + pathspec: make --literal-pathspecs disable pathspec magic
324  + pathspec: support :(literal) syntax for noglob pathspec
325  + kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
326  + parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
327  + parse_pathspec: make sure the prefix part is wildcard-free
328  + rename field "raw" to "_raw" in struct pathspec
329  + tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
330  + remove match_pathspec() in favor of match_pathspec_depth()
331  + remove init_pathspec() in favor of parse_pathspec()
332  + remove diff_tree_{setup,release}_paths
333  + convert common_prefix() to use struct pathspec
334  + convert add_files_to_cache to take struct pathspec
335  + convert {read,fill}_directory to take struct pathspec
336  + convert refresh_index to take struct pathspec
337  + convert report_path_error to take struct pathspec
338  + checkout: convert read_tree_some to take struct pathspec
339  + convert unmerge_cache to take struct pathspec
340  + convert run_add_interactive to use struct pathspec
341  + convert read_cache_preload() to take struct pathspec
342  + line-log: convert to use parse_pathspec
343  + reset: convert to use parse_pathspec
344  + add: convert to use parse_pathspec
345  + check-ignore: convert to use parse_pathspec
346  + archive: convert to use parse_pathspec
347  + ls-files: convert to use parse_pathspec
348  + rm: convert to use parse_pathspec
349  + checkout: convert to use parse_pathspec
350  + rerere: convert to use parse_pathspec
351  + status: convert to use parse_pathspec
352  + commit: convert to use parse_pathspec
353  + clean: convert to use parse_pathspec
354  + guard against new pathspec magic in pathspec matching code
355  + parse_pathspec: support prefixing original patterns
356  + parse_pathspec: support stripping/checking submodule paths
357  + parse_pathspec: support stripping submodule trailing slashes
358  + parse_pathspec: add special flag for max_depth feature
359  + convert some get_pathspec() calls to parse_pathspec()
360  + parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL} flags
361  + parse_pathspec: save original pathspec for reporting
362  + add parse_pathspec() that converts cmdline args to struct pathspec
363  + pathspec: add copy_pathspec
364  + pathspec: i18n-ize error strings in pathspec parsing code
365  + move struct pathspec and related functions to pathspec.[ch]
366  + clean: remove unused variable "seen"
367  (this branch is used by jl/submodule-mv.)
369  Use "struct pathspec" interface in more places, instead of array of
370  characters, the latter of which cannot express magic pathspecs
371  (e.g. ":(icase)makefile" that matches both Makefile and makefile).
373  Will cook in 'next'.
376 * jc/check-x-z (2013-07-11) 4 commits
377   (merged to 'next' on 2013-07-15 at 62751bc)
378  + check-attr -z: a single -z should apply to both input and output
379  + check-ignore -z: a single -z should apply to both input and output
380  + check-attr: the name of the character is NUL, not NULL
381  + check-ignore: the name of the character is NUL, not NULL
383  "git check-ignore -z" applied the NUL termination to both its input
384  (with --stdin) and its output, but "git check-attr -z" ignored the
385  option on the output side.
387  This is potentially a backward incompatible fix.  I am tempted to
388  merge this to and keep it in 'next' for a while to see if anybody
389  screams before deciding if we want to do anything to help existing
390  users (there may be none).
392  Will cook in 'next'.
395 * ms/fetch-prune-configuration (2013-07-18) 1 commit
396   (merged to 'next' on 2013-07-21 at 7ffb690)
397  + fetch: make --prune configurable
399  Allow fetch.prune and remote.*.prune configuration variables to be set,
400  and "git fetch" to behave as if "--prune" is given.
402  "git fetch" that honors remote.*.prune is fine, but I wonder if we
403  should somehow make "git push" aware of it as well.  Perhaps
404  remote.*.prune should not be just a boolean, but a 4-way "none",
405  "push", "fetch", "both"?
407  Will cook in 'next'.
410 * km/svn-1.8-serf-only (2013-07-18) 3 commits
411   (merged to 'next' on 2013-07-19 at ab8d034)
412  + Git.pm: revert _temp_cache use of temp_is_locked
413   (merged to 'next' on 2013-07-12 at 70e0b95)
414  + git-svn: allow git-svn fetching to work using serf
415  + Git.pm: add new temp_is_locked function
417  Subversion 1.8.0 that was recently released breaks older subversion
418  clients coming over http/https in various ways.
420  Will cook in 'next'.
423 * tr/merge-recursive-index-only (2013-07-07) 3 commits
424  - merge-recursive: -Xindex-only to leave worktree unchanged
425  - merge-recursive: untangle double meaning of o->call_depth
426  - merge-recursive: remove dead conditional in update_stages()
428  Will hold, until we get any user.
431 * jc/push-cas (2013-08-01) 7 commits
432   (merged to 'next' on 2013-08-01 at a7604ee)
433  + t5540/5541: smart-http does not support "--force-with-lease"
434   (merged to 'next' on 2013-07-23 at 72371b0)
435  + t5533: test "push --force-with-lease"
436  + push --force-with-lease: tie it all together
437  + push --force-with-lease: implement logic to populate old_sha1_expect[]
438  + remote.c: add command line option parser for "--force-with-lease"
439  + builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
440  + cache.h: move remote/connect API out of it
442  Allow a safer "rewind of the remote tip" push than blind "--force",
443  by requiring that the overwritten remote ref to be unchanged since
444  the new history to replace it was prepared.
446  The machinery is more or less ready.  The "--force" option is again
447  the big red button to override any safety, thanks to J6t's sanity
448  (the original round allowed --lockref to defeat --force).
450  The logic to choose the default implemented here is fragile
451  (e.g. "git fetch" after seeing a failure will update the
452  remote-tracking branch and will make the next "push" pass,
453  defeating the safety pretty easily).  It is suitable only for the
454  simplest workflows, and it may hurt users more than it helps them.
456  Also, smart-http needs to be taught about this before we can move
457  it forward.
459  Will cook in 'next'.
462 * jc/pull-training-wheel (2013-07-19) 1 commit
463   (merged to 'next' on 2013-07-22 at 748180e)
464  + pull: require choice between rebase/merge on non-fast-forward pull
466  Make "git pull" (without arguments that say what branch to
467  integrate from where) refuse with "it does not fast forward; choose
468  between 'pull --merge' and 'pull --rebase'".
470  See
472  http://thread.gmane.org/gmane.comp.version-control.git/225146/focus=225326
473  http://thread.gmane.org/gmane.comp.version-control.git/225146/focus=229221
475  for full discussion.
477  Will cook in 'next'.
480 * rj/cygwin-clarify-use-of-cheating-lstat (2013-07-18) 1 commit
481   (merged to 'next' on 2013-08-01 at 3ebfe7c)
482  + cygwin: Remove the Win32 l/stat() implementation
484  Cygwin port added a "not quite correct but a lot faster and good
485  enough for many lstat() calls that are only used to see if the
486  working tree entity matches the index entry" lstat() emulation some
487  time ago, and it started biting us in places.  This removes it and
488  uses the standard lstat() that comes with Cygwin.
490  Recent topic that uses lstat on packed-refs file is broken when
491  this cheating lstat is used, and this is a simplest fix that is
492  also the cleanest direction to go in the long run.
494  Will merge to 'master'.
497 * jc/reflog-doc (2013-06-19) 1 commit
498  - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
500  Document rules to use GIT_REFLOG_ACTION variable in the scripted
501  Porcelain.  git-rebase--interactive locally violates this, but it
502  is a leaf user that does not call out to or dot-sources other
503  scripts, so fixing it is not all that urgent.
506 * jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
507  - git add: -u/-A now affects the entire working tree
509  Will cook in 'next' until Git 2.0.
512 * jc/core-checkstat-2.0 (2013-05-06) 1 commit
513  - core.statinfo: remove as promised in Git 2.0
515  Will cook in 'next' until Git 2.0.
518 * jc/push-2.0-default-to-simple (2013-06-18) 1 commit
519  - push: switch default from "matching" to "simple"
521  Will cook in 'next' until Git 2.0.
524 * jc/add-2.0-ignore-removal (2013-04-22) 1 commit
525  - git add <pathspec>... defaults to "-A"
527  Updated endgame for "git add <pathspec>" that defaults to "--all"
528  aka "--no-ignore-removal".
530  Will cook in 'next' until Git 2.0.
533 * jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
534  - diff: remove "diff-files -q" in a version of Git in a distant future
535  (this branch uses jc/diff-filter-negation.)
537  Will cook in 'next' until a distant future.
539 --------------------------------------------------
540 [Discarded]
542 * jh/remote-hg-fetch-fix (2013-07-25) 2 commits
543   (merged to 'next' on 2013-07-25 at 33161ad)
544  + Revert "remotes-hg: bugfix for fetching non local remotes"
545   (merged to 'next' on 2013-07-24 at 9c96641)
546  + remotes-hg: bugfix for fetching non local remotes
548  Reverted.
550  Waiting for the final patch to replace, after discussion settles.
553 * km/http-curl-config-per-url (2013-07-31) 7 commits
554   (merged to 'next' on 2013-07-31 at e88aad5)
555  + Revert km/http-curl-config-per-url in its entirety
556   (merged to 'next' on 2013-07-25 at 531e8cb)
557  + docs: update http.<url>.* options documentation
558   (merged to 'next' on 2013-07-23 at f84689b)
559  + config: allow http.<url>.* any user matching
560  + tests: add new test for the url_normalize function
561  + config: improve support for http.<url>.* settings
562  + config: add support for http.<url>.* settings
563  + http.c: fix parsing of http.sslCertPasswordProtected variable
565  Reverted to be replaced with a reroll (jc/url-match topic).