What's cooking (2013/04 #03)
[git.git] / whats-cooking.txt
blobd80d1aaaf278ebaa44d1301389674ec984d1a5f9
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Apr 2013, #03; Sun, 7)
4 X-master-at: 52a3e011c779456e63b6274af0024eeb92dd7888
5 X-next-at: b213c0d2377aff930c500c0ac0d580a34e76686d
7 What's cooking in git.git (Apr 2013, #03; Sun, 7)
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 A handful of topics that have been stalled for quite a while have
15 been discarded; for those that are not superseded by something else,
16 interested parties can still resubmit a reroll, but without any
17 advances, we do not get any benefit from carrying them in my tree.
19 You can find the changes described here in the integration branches
20 of the repositories listed at
22     http://git-blame.blogspot.com/p/git-public-repositories.html
24 --------------------------------------------------
25 [Graduated to "master"]
27 * cn/commit-amend-doc (2013-04-05) 1 commit
28   (merged to 'next' on 2013-04-05 at 4c42e59)
29  + Documentation/git-commit: reword the --amend explanation
30  (this branch is used by jc/detached-head-doc.)
33 * fc/remote-helpers-test-updates (2013-04-04) 4 commits
34   (merged to 'next' on 2013-04-04 at 0612744)
35  + remote-hg: fix hg-git test-case
36  + remote-bzr: remove stale check code for tests
37  + remote-helpers: fix the run of all tests
38  + remote-bzr: avoid echo -n
39  (this branch is used by fc/transport-helper-waitpid.)
42 * jk/bisect-prn-unsigned (2013-04-03) 1 commit
43   (merged to 'next' on 2013-04-04 at 2c4df36)
44  + bisect: avoid signed integer overflow
47 * jk/diffcore-break-divzero (2013-04-03) 1 commit
48   (merged to 'next' on 2013-04-04 at b7632e0)
49  + diffcore-break: don't divide by zero
52 * jk/filter-branch-come-back-to-original (2013-04-02) 1 commit
53   (merged to 'next' on 2013-04-04 at 621684a)
54  + filter-branch: return to original dir after filtering
56  When used with "-d temporary-directory" option, "git filter-branch"
57  failed to come back to the original working tree to perform the
58  final clean-up procedure.
61 * jk/rm-removed-paths (2013-04-04) 3 commits
62   (merged to 'next' on 2013-04-05 at ce9a926)
63  + t3600: document failure of rm across symbolic links
64  + t3600: test behavior of reverse-d/f conflict
65  + rm: do not complain about d/f conflicts during deletion
67  A handful of test cases and a corner case bugfix for "git rm".
70 * jk/set-upstream-error-cases (2013-04-02) 5 commits
71   (merged to 'next' on 2013-04-04 at b58c26b)
72  + branch: give advice when tracking start-point is missing
73  + branch: mention start_name in set-upstream error messages
74  + branch: improve error message for missing --set-upstream-to ref
75  + branch: factor out "upstream is not a branch" error messages
76  + t3200: test --set-upstream-to with bogus refs
78  The handing by "git branch --set-upstream-to" against various forms
79  of errorneous inputs was suboptimal and has been improved.
82 * mg/texinfo-5 (2013-04-03) 1 commit
83   (merged to 'next' on 2013-04-04 at bd84440)
84  + Documentation: Strip texinfo anchors to avoid duplicates
86  Strip @anchor elements in the texinfo output of the documentation,
87  as a single document created by concatenating our entire manual set
88  will produce many duplicates that makes newer texinfo unhappy.
91 * mm/status-during-revert (2013-04-02) 2 commits
92   (merged to 'next' on 2013-04-04 at 1282528)
93  + status: show commit sha1 in "You are currently reverting" message
94  + status: show 'revert' state and status hint
96  "git status" learned to report that you are in the middle of a
97  revert session, just like it does for a cherry-pick and a bisect
98  session.
101 * rr/triangle (2013-04-02) 6 commits
102   (merged to 'next' on 2013-04-04 at 2d2c8ee)
103  + remote.c: introduce branch.<name>.pushremote
104  + remote.c: introduce remote.pushdefault
105  + remote.c: introduce a way to have different remotes for fetch/push
106  + t5516 (fetch-push): drop implicit arguments from helper functions
107  + t5516 (fetch-push): update test description
108  + remote.c: simplify a bit of code using git_config_string()
110  Support "pull from one place, push to another place" workflow
111  better by introducing remote.pushdefault (overrides the "origin"
112  thing) and branch.*.pushremote (overrides the branch.*.remote).
115 * tb/shared-perm (2013-04-05) 2 commits
116   (merged to 'next' on 2013-04-05 at 2481155)
117  + path.c: optimize adjust_shared_perm()
118  + path.c: simplify adjust_shared_perm()
120  Simplifies adjust_shared_perm() implementation.
122 --------------------------------------------------
123 [New Topics]
125 * fc/send-email-annotate (2013-04-07) 6 commits
126  - format-patch: trivial cleanups
127  - format-patch: add format.coverLetter configuration variable
128  - log: update to OPT_BOOL
129  - format-patch: refactor branch name calculation
130  - format-patch: improve head calculation for cover-letter
131  - send-email: make annotate configurable
134 * jk/http-error-messages (2013-04-06) 9 commits
135  - http: drop http_error function
136  - remote-curl: die directly with http error messages
137  - http: re-word http error message
138  - http: simplify http_error helper function
139  - remote-curl: consistently report repo url for http errors
140  - remote-curl: always show friendlier 404 message
141  - remote-curl: let servers override http 404 advice
142  - remote-curl: show server content on http errors
143  - http: add HTTP_KEEP_ERROR option
146 * jk/show-branch-strbuf (2013-04-06) 1 commit
147  - show-branch: use strbuf instead of static buffer
150 * lf/bundle-with-tip-wo-message (2013-04-07) 1 commit
151  - bundle: Accept prerequisites without commit messages
154 * rt/commentchar-fmt-merge-msg (2013-04-07) 2 commits
155  - fmt-merge-msg: use core.commentchar in tag signatures completely
156  - fmt-merge-msg: respect core.commentchar in people credits
158 --------------------------------------------------
159 [Stalled]
161 * jc/format-patch (2013-02-21) 2 commits
162  - format-patch: --inline-single
163  - format-patch: rename "no_inline" field
165  A new option to send a single patch to the standard output to be
166  appended at the bottom of a message.  I personally have no need for
167  this, but it was easy enough to cobble together.  Tests, docs and
168  stripping out more MIMEy stuff are left as exercises to interested
169  parties.
171  Not ready for inclusion.
173 --------------------------------------------------
174 [Cooking]
176 * fc/remote-hg (2013-04-04) 13 commits
177  - remote-hg: push to the appropriate branch
178  - remote-hg: update tags globally
179  - remote-hg: force remote push
180  - remote-hg: update remote bookmarks
181  - remote-hg: refactor export
182  - remote-hg: split bookmark handling
183  - remote-hg: redirect buggy mercurial output
184  - remote-hg: trivial test cleanups
185  - remote-hg: make sure fake bookmarks are updated
186  - remote-hg: fix for files with spaces
187  - remote-hg: properly report errors on bookmark pushes
188  - remote-hg: add missing config variable in doc
189  - remote-hg: trivial cleanups
191  The "forced push" may need to become optional behaviour.
192  Also the tip one was found faulty.
194  Expecting a reroll.
197 * fc/transport-helper-waitpid (2013-04-07) 3 commits
198  - SQUASH???
199  - transport-helper: check if remote helper is alive
200  - [EXPLAIN BETTER] run-command: add new check_command helper
202  Waiting for a response to summarize what this topic is about here.
205 * js/rerere-forget-protect-against-NUL (2013-04-04) 2 commits
206   (merged to 'next' on 2013-04-05 at 426d4e2)
207  + rerere forget: do not segfault if not all stages are present
208  + rerere forget: grok files containing NUL
210  A few bugfixes to "git rerere" working on corner case merge
211  conflicts.
213  Will merge to 'master'.
216 * mc/count-objects-kibibytes (2013-04-03) 1 commit
217   (merged to 'next' on 2013-04-05 at f4e50e8)
218  + count-objects: output "KiB" instead of "kilobytes"
220  The command reports the total diskspace used to store loose objects
221  in kibibytes, but it was labelled as "kilobytes".  The number now
222  is shown with "KiB", e.g. "6750 objects, 50928 KiB".
224  If you have scripts that decide when to run "git repack" by parsing
225  the output from "git count-objects", this release may break them.
226  Sorry about that.  One of the scripts shipped by git-core itself
227  also had to be adjusted.  You may want to consider updating such
228  scripts to always call "git gc --auto" to let it decide when to
229  repack for you.
231  Will merge to 'master'.
234 * po/help-guides (2013-04-03) 5 commits
235   (merged to 'next' on 2013-04-04 at 3d99b28)
236  + doc: include --guide option description for "git help"
237  + help: mention -a and -g option, and 'git help <concept>' usage.
238  + builtin/help.c: add list_common_guides_help() function
239  + builtin/help.c: add --guide option
240  + builtin/help.c: split "-a" processing into two
242  "git help" learned "-g" option to show the list of guides just like
243  list of commands are given with "-a".
245  Will merge to 'master'.
248 * jk/http-dumb-namespaces (2013-04-04) 1 commit
249  - http-backend: respect GIT_NAMESPACE with dumb clients
251  Allow smart-capable HTTP servers to be restricted via the
252  GIT_NAMESPACE mechanism when talking with commit-walker clients
253  (they already do so when talking with smart HTTP clients).
256 * jl/submodule-mv (2013-04-03) 3 commits
257  - Teach mv to update the path entry in .gitmodules for moved submodules
258  - Teach mv to move submodules using a gitfile
259  - Teach mv to move submodules together with their work trees
261  "git mv A B" when moving a submodule A does "the right thing",
262  inclusing relocating its working tree and adjusting the paths in
263  the .gitmodules file.
265  Seems to break tests in 'pu' but it may be a mismerge with
266  nd/magic-pathspecs topic.
269 * sr/log-SG-no-textconv (2013-04-05) 6 commits
270   (merged to 'next' on 2013-04-05 at 7f06945)
271  + diffcore-pickaxe: unify code for log -S/-G
272  + diffcore-pickaxe: fix leaks in "log -S<block>" and "log -G<pattern>"
273  + diffcore-pickaxe: port optimization from has_changes() to diff_grep()
274  + diffcore-pickaxe: respect --no-textconv
275  + diffcore-pickaxe: remove fill_one()
276  + diffcore-pickaxe: remove unnecessary call to get_textconv()
278  "git log -S/-G" started paying attention to textconv filter, but
279  there was no way to disable this.  Make it honor --no-textconv
280  option.
282  Will merge to 'master'.
285 * tr/perl-keep-stderr-open (2013-04-04) 2 commits
286   (merged to 'next' on 2013-04-07 at 04f737a)
287  + t9700: do not close STDERR
288  + perl: redirect stderr to /dev/null instead of closing
290  Closing (not redirecting to /dev/null) the standard error stream is
291  not a very smart thing to do.  Later open may return file
292  descriptor #2 for unrelated purpose, and error reporting code may
293  write into them.
296 * jc/detached-head-doc (2013-04-05) 1 commit
297  - glossary: extend "detached HEAD" description
299  Will merge to 'next'.
302 * jk/diff-algo-finishing-touches (2013-04-05) 2 commits
303  - diff: allow unstuck arguments with --diff-algorithm
304  - git-merge(1): document diff-algorithm option to merge-recursive
306  "git diff --diff-algorithm algo" is also understood as "git diff
307  --diff-algorithm=algo". 
309  Will merge to 'next'.
312 * jk/diff-graph-submodule-summary (2013-04-05) 1 commit
313  - submodule: print graph output next to submodule log
315  Make "git diff --graph" work better with submodule log output.
317  Will merge to 'next'.
320 * nd/pretty-formats (2013-04-01) 12 commits
321  - pretty: support %>> that steal trailing spaces
322  - pretty: support truncating in %>, %< and %><
323  - pretty: support padding placeholders, %< %> and %><
324  - pretty: add %C(auto) for auto-coloring on the next placeholder
325  - pretty: two phase conversion for non utf-8 commits
326  - utf8: keep NULs in reencode_string()
327  - pretty: get the correct encoding for --pretty:format=%e
328  - pretty: save commit encoding from logmsg_reencode if the caller needs it
329  - utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
330  - utf8.c: move display_mode_esc_sequence_len() for use by other functions
331  - pretty: share code between format_decoration and show_decorations
332  - pretty-formats.txt: wrap long lines
334  A mixed bag of a bugfix and two fun enhancements on pretty formats
335  placeholder.
337  Expecting a reroll.
340 * jk/merge-tree-added-identically (2013-03-27) 1 commit
341  - merge-tree: fix "same file added in subdir"
343  We would most likely want to change things the other way around.
345  Expecting a reroll.
348 * ap/combine-diff-coalesce-lost (2013-03-25) 1 commit
349   (merged to 'next' on 2013-03-29 at f6a05ca)
350  + combine-diff: coalesce lost lines optimally
352  Attempts to minimize "diff -c/--cc" output by coalescing the same
353  lines removed from the parents better, but with an O(n^2)
354  complexity.
356  Will cook in 'next' to see if people with real-world usage scream.
359 * kb/status-ignored-optim (2013-03-19) 8 commits
360   (merged to 'next' on 2013-04-01 at 0c12ed9)
361  + dir.c: git-status: avoid is_excluded checks for tracked files
362  + dir.c: replace is_path_excluded with now equivalent is_excluded API
363  + dir.c: unify is_excluded and is_path_excluded APIs
364  + dir.c: move prep_exclude and factor out parts of last_exclude_matching
365  + dir.c: git-status --ignored: don't list empty directories as ignored
366  + dir.c: git-status --ignored: don't list empty ignored directories
367  + dir.c: git-status --ignored: don't list files in ignored directories
368  + dir.c: git-status --ignored: don't drop ignored directories
370  "git status --ignored" had many corner case bugs.  Also the command
371  has been optimized by taking advantage of the fact that paths that
372  are already known to the index do not have to be checked against
373  the .gitignore mechanism most of the time.
375  Will cook in 'next'.
377  This codepath is used not only by status but also in add and clean,
378  so a bug in it can result in lost data.  Extra sets of eyeballs are
379  very much appreciated.
382 * jn/add-2.0-u-A-sans-pathspec (2013-04-03) 6 commits
383  - git add: -u/-A now affects the entire working tree
384   (merged to 'next' on 2013-04-05 at eae93ef)
385  + add -A: only show pathless 'add -A' warning when changes exist outside cwd
386  + add -u: only show pathless 'add -u' warning when changes exist outside cwd
387  + add: make warn_pathless_add() a no-op after first call
388  + add: add a blank line at the end of pathless 'add [-u|-A]' warning
389  + add: make pathless 'add [-u|-A]' warning a file-global function
391  "git add -u/-A" without any pathspec traditionally limited its
392  operation to the current directory when run from a subdirectory,
393  but in Git 2.0, they will affect the entire working tree.  Start
394  training users to explicitly say "." or ":/" to smooth out the
395  transition hump with the earlier parts of this series, and flip the
396  default as the final step.
398  Will cook in 'next' until Git 2.0.
401 * tr/packed-object-info-wo-recursion (2013-03-27) 3 commits
402   (merged to 'next' on 2013-03-29 at b1c3858)
403  + sha1_file: remove recursion in unpack_entry
404  + Refactor parts of in_delta_base_cache/cache_or_unpack_entry
405  + sha1_file: remove recursion in packed_object_info
407  Attempts to reduce the stack footprint of sha1_object_info()
408  and unpack_entry() codepaths.
410  Will cook in 'next'.
413 * nd/magic-pathspecs (2013-03-31) 45 commits
414  - Rename field "raw" to "_raw" in struct pathspec
415  - pathspec: support :(glob) syntax
416  - pathspec: make --literal-pathspecs disable pathspec magic
417  - pathspec: support :(literal) syntax for noglob pathspec
418  - Kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
419  - parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
420  - parse_pathspec: make sure the prefix part is wildcard-free
421  - tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
422  - Remove match_pathspec() in favor of match_pathspec_depth()
423  - Remove init_pathspec() in favor of parse_pathspec()
424  - Remove diff_tree_{setup,release}_paths
425  - Convert common_prefix() to use struct pathspec
426  - Convert add_files_to_cache to take struct pathspec
427  - Convert {read,fill}_directory to take struct pathspec
428  - Convert refresh_index to take struct pathspec
429  - Convert report_path_error to take struct pathspec
430  - checkout: convert read_tree_some to take struct pathspec
431  - Convert unmerge_cache to take struct pathspec
432  - Convert run_add_interactive to use struct pathspec
433  - Convert read_cache_preload() to take struct pathspec
434  - reset: convert to use parse_pathspec
435  - add: convert to use parse_pathspec
436  - check-ignore: convert to use parse_pathspec
437  - archive: convert to use parse_pathspec
438  - ls-files: convert to use parse_pathspec
439  - rm: convert to use parse_pathspec
440  - checkout: convert to use parse_pathspec
441  - rerere: convert to use parse_pathspec
442  - status: convert to use parse_pathspec
443  - commit: convert to use parse_pathspec
444  - clean: convert to use parse_pathspec
445  - Guard against new pathspec magic in pathspec matching code
446  - parse_pathspec: support prefixing original patterns
447  - parse_pathspec: support stripping/checking submodule paths
448  - parse_pathspec: support stripping submodule trailing slashes
449  - parse_pathspec: a special flag for max_depth feature
450  - Convert some get_pathspec() calls to parse_pathspec()
451  - parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL}
452  - parse_pathspec: save original pathspec for reporting
453  - Add parse_pathspec() that converts cmdline args to struct pathspec
454  - pathspec: add copy_pathspec
455  - pathspec: i18n-ize error strings in pathspec parsing code
456  - Move struct pathspec and related functions to pathspec.[ch]
457  - clean: remove unused variable "seen"
458  - setup.c: check that the pathspec magic ends with ")"
460  Migrate the rest of codebase to use "struct pathspec" more.
462  Will merge to 'next' after all the dust settles.
465 * jc/add-2.0-delete-default (2013-03-08) 3 commits
466  - git add <pathspec>... defaults to "-A"
467   (merged to 'next' on 2013-04-05 at 199442e)
468  + git add: start preparing for "git add <pathspec>..." to default to "-A"
469  + builtin/add.c: simplify boolean variables
471  In Git 2.0, "git add pathspec" will mean "git add -A pathspec".  If
472  you did this in a working tree that tracks dir/lost and dir/another:
474  $ rm dir/lost
475  $ edit dir/another
476  $ git add dir
478  The last step will not only notices and records updated
479  dir/another, but also notices and records the removal of dir/lost
480  in the index.
482  Start training the users for this change to say --no-all when they
483  want to ignore the removal to smooth the transition hump.
485  Will cook in 'next' until Git 2.0.
488 * tr/line-log (2013-04-05) 7 commits
489   (merged to 'next' on 2013-04-05 at 5afb00c)
490  + log -L: fix overlapping input ranges
491  + log -L: check range set invariants when we look it up
492   (merged to 'next' on 2013-04-01 at 5be920c)
493  + Speed up log -L... -M
494  + log -L: :pattern:file syntax to find by funcname
495  + Implement line-history search (git log -L)
496  + Export rewrite_parents() for 'log -L'
497  + Refactor parse_loc
499  Will merge down to 'master'
500  with warts and all, hoping they get fixed eventually in-tree.
503 * jc/push-2.0-default-to-simple (2013-04-03) 13 commits
504  - push: switch default from "matching" to "simple"
505   (merged to 'next' on 2013-04-05 at 1b42c19)
506  + t5570: do not assume the "matching" push is the default
507  + t5551: do not assume the "matching" push is the default
508  + t5550: do not assume the "matching" push is the default
509  + t9401: do not assume the "matching" push is the default
510  + t9400: do not assume the "matching" push is the default
511  + t7406: do not assume the "matching" push is the default
512  + t5531: do not assume the "matching" push is the default
513  + t5519: do not assume the "matching" push is the default
514  + t5517: do not assume the "matching" push is the default
515  + t5516: do not assume the "matching" push is the default
516  + t5505: do not assume the "matching" push is the default
517  + t5404: do not assume the "matching" push is the default
519  Update the test suite that still assumed the push.default will
520  forever be 'matching'.  In Git 2.0, that will no longer be the
521  case.
523  Will cook in 'next' until Git 2.0.