What's cooking (2012/10 #03)
[alt-git.git] / whats-cooking.txt
blobf8bcd58066ba1bd611a2dfc25ba516a1393dd5a0
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Oct 2012, #03; Sun, 7)
4 X-master-at: dc01f880a53e56d4a5c6f30cb2d7b9412e17bfe7
5 X-next-at: 9fa34dc2edd1285517772f315bf1d7edbcfbfee6
7 What's cooking in git.git (Oct 2012, #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 I'll merge the regression fix jc/merge-bases-paint-fix to 'master'
15 and will tag 1.8.0-rc1 tomorrow.  It would be nice if we can have
16 pull requests for subsystem updates before then.
18 I'm planning to keep this cycle reasonably short and aim for tagging
19 the result as 1.8.0 at the end of 9th week, on October 21st, after
20 which I'd disappear for a few weeks.  http://tinyurl.com/gitCal is
21 where you can always find my rough tagging schedule at.
23 You can find the changes described here in the integration branches of the
24 repositories listed at
26     http://git-blame.blogspot.com/p/git-public-repositories.html
28 --------------------------------------------------
29 [New Topics]
31 * jc/doc-default-format (2012-10-07) 2 commits
32  - [SQAUSH] allow "cd Doc* && make DEFAULT_DOC_TARGET=..."
33  - Allow generating a non-default set of documentation
35  Will merge to 'next', but it is a bit too late for 1.8.0.
38 * jk/lua-hackery (2012-10-07) 6 commits
39  - pretty: fix up one-off format_commit_message calls
40  - Minimum compilation fixup
41  - Makefile: make "lua" a bit more configurable
42  - add a "lua" pretty format
43  - add basic lua infrastructure
44  - pretty: make some commit-parsing helpers more public
46  Interesting exercise. When we do this for real, we probably would want
47  to wrap a commit to make it more like an "object" with methods like
48  "parents", etc.
51 * nd/attr-match-optim (2012-10-05) 2 commits
52  - attr: avoid searching for basename on every match
53  - attr: avoid strlen() on every match
54  (this branch is used by nd/attr-match-optim-more.)
56  Will merge to 'next', but it is a bit too late for 1.8.0.
59 * nd/attr-match-optim-more (2012-10-05) 3 commits
60  - attr: more matching optimizations from .gitignore
61  - gitignore: make pattern parsing code a separate function
62  - Merge commit 'f9f6e2c' into nd/attr-match-optim-more
63  (this branch uses nd/attr-match-optim.)
65  Start laying the foundation to build the "wildmatch" after we can
66  agree on its desired semantics.
69 * nd/doc-ignore (2012-10-07) 1 commit
70  - gitignore.txt: suggestions how to get literal # or ! at the beginning
72  Will merge to 'next', but it may be a bit too late for 1.8.0.
75 --------------------------------------------------
76 [Stalled]
78 * rc/maint-complete-git-p4 (2012-09-24) 1 commit
79   (merged to 'next' on 2012-09-25 at 116e58f)
80  + Teach git-completion about git p4
82  Comment from Pete will need to be addressed in a follow-up patch.
85 * as/check-ignore (2012-09-27) 17 commits
86  - [SQUASH-FIX] 283d072 (Add git-check-ignore sub-command, 2012-09-20)
87  - [SQUASH-FIX] 283d072 (Add git-check-ignore sub-command, 2012-09-20)
88  - [REROLL NEEDED] minimum compilation fix
89  - Add git-check-ignore sub-command
90  - dir.c: provide free_directory() for reclaiming dir_struct memory
91  - pathspec.c: move reusable code from builtin/add.c
92  - dir.c: refactor treat_gitlinks()
93  - dir.c: keep track of where patterns came from
94  - dir.c: refactor is_path_excluded()
95  - dir.c: refactor is_excluded()
96  - dir.c: refactor is_excluded_from_list()
97  - dir.c: rename excluded() to is_excluded()
98  - dir.c: rename excluded_from_list() to is_excluded_from_list()
99  - dir.c: rename path_excluded() to is_path_excluded()
100  - dir.c: rename cryptic 'which' variable to more consistent name
101  - Improve documentation and comments regarding directory traversal API
102  - Update directory listing API doc to match code
104  Waiting for a reroll.
107 * as/test-tweaks (2012-09-20) 7 commits
108  - tests: paint unexpectedly fixed known breakages in bold red
109  - tests: test the test framework more thoroughly
110  - [SQUASH] t/t0000-basic.sh: quoting of TEST_DIRECTORY is screwed up
111  - tests: refactor mechanics of testing in a sub test-lib
112  - tests: paint skipped tests in bold blue
113  - tests: test number comes first in 'not ok $count - $message'
114  - tests: paint known breakages in bold yellow
116  Various minor tweaks to the test framework to paint its output
117  lines in colors that match what they mean better.
119  Has the "is this really blue?" issue Peff raised resolved???
122 * fa/vcs-svn (2012-10-07) 4 commits
123  - vcs-svn: remove repo_tree
124  - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
125  - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
126  - svndump: move struct definitions to .h
127  (this branch uses fa/remote-svn.)
129  A follow-up to a GSoC project, but seems not quite ready.
130  Will discard.
133 * jc/maint-name-rev (2012-09-17) 7 commits
134  - describe --contains: use "name-rev --algorithm=weight"
135  - name-rev --algorithm=weight: tests and documentation
136  - name-rev --algorithm=weight: cache the computed weight in notes
137  - name-rev --algorithm=weight: trivial optimization
138  - name-rev: --algorithm option
139  - name_rev: clarify the logic to assign a new tip-name to a commit
140  - name-rev: lose unnecessary typedef
142  "git name-rev" names the given revision based on a ref that can be
143  reached in the smallest number of steps from the rev, but that is
144  not useful when the caller wants to know which tag is the oldest one
145  that contains the rev.  This teaches a new mode to the command that
146  uses the oldest ref among those which contain the rev.
148  I am not sure if this is worth it; for one thing, even with the help
149  from notes-cache, it seems to make the "describe --contains" even
150  slower. Also the command will be unusably slow for a user who does
151  not have a write access (hence unable to create or update the
152  notes-cache).
154  Stalled mostly due to lack of responses.
157 * jc/xprm-generation (2012-09-14) 1 commit
158  - test-generation: compute generation numbers and clock skews
160  A toy to analyze how bad the clock skews are in histories of real
161  world projects.
163  Stalled mostly due to lack of responses.
166 * jc/blame-no-follow (2012-09-21) 2 commits
167  - blame: pay attention to --no-follow
168  - diff: accept --no-follow option
170  Teaches "--no-follow" option to "git blame" to disable its
171  whole-file rename detection.
173  Stalled mostly due to lack of responses.
176 * mk/maint-graph-infinity-loop (2012-09-25) 1 commit
177  - graph.c: infinite loop in git whatchanged --graph -m
179  The --graph code fell into infinite loop when asked to do what the
180  code did not expect ;-)
182  Anybody who worked on "--graph" wants to comment?
183  Stalled mostly due to lack of responses.
186 * ph/credential-refactor (2012-09-02) 5 commits
187  - wincred: port to generic credential helper
188  - Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
189  - osxkeychain: port to generic credential helper implementation
190  - gnome-keyring: port to generic helper implementation
191  - contrib: add generic credential helper
193  Attempts to refactor to share code among OSX keychain, Gnome keyring
194  and Win32 credential helpers.
197 * ms/contrib-thunderbird-updates (2012-08-31) 2 commits
198  - [SQUASH] minimum fixup
199  - Thunderbird: fix appp.sh format problems
201  Update helper to send out format-patch output using Thunderbird.
202  Seems to have design regression for silent users.
205 * jx/test-real-path (2012-08-27) 1 commit
206  - test: set the realpath of CWD as TRASH_DIRECTORY
208  Running tests with the "trash" directory elsewhere with the "--root"
209  option did not work well if the directory was specified by a symbolic
210  link pointing at it.
212  Seems broken as it makes $(pwd) and TRASH_DIRECTORY inconsistent.
213  Will discard.
216 * jc/maint-push-refs-all (2012-08-27) 2 commits
217  - get_fetch_map(): tighten checks on dest refs
218  - [BROKEN] fetch/push: allow refs/*:refs/*
220  Allows pushing and fetching everything including refs/stash.
221  This is broken (see the log message there).
223  Not ready.
226 * jc/add-delete-default (2012-08-13) 1 commit
227  - git add: notice removal of tracked paths by default
229  "git add dir/" updated modified files and added new files, but does
230  not notice removed files, which may be "Huh?" to some users.  They
231  can of course use "git add -A dir/", but why should they?
233  Resurrected from graveyard, as I thought it was a worthwhile thing
234  to do in the longer term.
236  Waiting for comments.
239 * tx/relative-in-the-future (2012-08-16) 2 commits
240  - date: show relative dates in the future
241  - date: refactor the relative date logic from presentation
243  Not my itch; rewritten an earlier submission by Tom Xue into
244  somewhat more maintainable form, though it breaks existing i18n.
246  Waiting for a voluteer to fix it up.
247  Otherwise may discard.
250 * mb/remote-default-nn-origin (2012-07-11) 6 commits
251  - Teach get_default_remote to respect remote.default.
252  - Test that plain "git fetch" uses remote.default when on a detached HEAD.
253  - Teach clone to set remote.default.
254  - Teach "git remote" about remote.default.
255  - Teach remote.c about the remote.default configuration setting.
256  - Rename remote.c's default_remote_name static variables.
258  When the user does not specify what remote to interact with, we
259  often attempt to use 'origin'.  This can now be customized via a
260  configuration variable.
262  Expecting a reroll.
264  "The first remote becomes the default" bit is better done as a
265  separate step.
268 * jc/split-blob (2012-04-03) 6 commits
269  - chunked-object: streaming checkout
270  - chunked-object: fallback checkout codepaths
271  - bulk-checkin: support chunked-object encoding
272  - bulk-checkin: allow the same data to be multiply hashed
273  - new representation types in the packstream
274  - packfile: use varint functions
276  Not ready.
278  I finished the streaming checkout codepath, but as explained in
279  127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
280  these are still early steps of a long and painful journey. At least
281  pack-objects and fsck need to learn the new encoding for the series
282  to be usable locally, and then index-pack/unpack-objects needs to
283  learn it to be used remotely.
285  Given that I heard a lot of noise that people want large files, and
286  that I was asked by somebody at GitTogether'11 privately for an
287  advice on how to pay developers (not me) to help adding necessary
288  support, I am somewhat dissapointed that the original patch series
289  that was sent long time ago still remains here without much comments
290  and updates from the developer community. I even made the interface
291  to the logic that decides where to split chunks easily replaceable,
292  and I deliberately made the logic in the original patch extremely
293  stupid to entice others, especially the "bup" fanbois, to come up
294  with a better logic, thinking that giving people an easy target to
295  shoot for, they may be encouraged to help out. The plan is not
296  working :-<.
298 --------------------------------------------------
299 [Cooking]
301 * jc/doc-long-options (2012-10-04) 1 commit
302  - gitcli: parse-options lets you omit tail of long options
304  The end-user facing documentation claimed to be an "exhaustive"
305  list of features of parse-options command line parser, but it
306  didn't mention anything about abbreviating long option names to
307  their unique prefixes. Mention it, warn against relying too much on
308  it (as uniqueness may disappear in future versions of Git), and
309  drop the claim to be exhaustive.
311  Will merge to 'next', but it is a bit too late for 1.8.0.
314 * jc/grep-pcre-loose-ends (2012-10-04) 6 commits
315  . log --grep: honor grep.patterntype etc. configuration variables
316  . log: pass rev_info to git_log_config()
317  - log --grep: accept --basic-regexp and --perl-regexp
318  - log --grep: use the same helper to set -E/-F options as "git grep"
319  - grep: move pattern-type bits support to top-level grep.[ch]
320  - grep: move configuration support to top-level grep.[ch]
322  "git log -F -E --grep='<ere>'" failed to use the given <ere>
323  pattern as extended regular expression, and instead looked for the
324  string literally.  The early part of this series is a fix for it.
326  The last two are very wrong and need to be redone by refactoring
327  the configuration handling of "grep.*" part.
330 * jc/merge-bases-paint-fix (2012-10-04) 1 commit
331   (merged to 'next' on 2012-10-07 at 9fa34dc)
332  + paint_down_to_common(): parse commit before relying on its timestamp
334  "git fmt-merge-msg" (actually an internal helper reduce_heads() it
335  uses) had a severe performance regression; an empty "git pull" took
336  forever to finish as the result.
338  Need to be merged before 1.8.0 final.
341 * jk/peel-ref (2012-10-04) 4 commits
342  - upload-pack: use peel_ref for ref advertisements
343  - peel_ref: check object type before loading
344  - peel_ref: do not return a null sha1
345  - peel_ref: use faster deref_tag_noverify
347  Speeds up "git upload-pack" (what is invoked by "git fetch" on the
348  other side of the connection) by reducing the cost to advertise the
349  branches and tags that are available in the repository.
351  Will merge to 'next', but it is a bit too late for 1.8.0.
354 * fa/remote-svn (2012-10-07) 16 commits
355   (merged to 'next' on 2012-10-07 at 7b90cf4)
356  + Add a test script for remote-svn
357  + remote-svn: add marks-file regeneration
358  + Add a svnrdump-simulator replaying a dump file for testing
359  + remote-svn: add incremental import
360  + remote-svn: Activate import/export-marks for fast-import
361  + Create a note for every imported commit containing svn metadata
362  + vcs-svn: add fast_export_note to create notes
363  + Allow reading svn dumps from files via file:// urls
364  + remote-svn, vcs-svn: Enable fetching to private refs
365  + When debug==1, start fast-import with "--stats" instead of "--quiet"
366  + Add documentation for the 'bidi-import' capability of remote-helpers
367  + Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
368  + Add argv_array_detach and argv_array_free_detached
369  + Add svndump_init_fd to allow reading dumps from arbitrary FDs
370  + Add git-remote-testsvn to Makefile
371  + Implement a remote helper for svn in C
372  (this branch is used by fa/vcs-svn.)
374  A GSoC project.
377 * bw/config-lift-variable-name-length-limit (2012-10-01) 1 commit
378  - Remove the hard coded length limit on variable names in config files
380  The configuration parser had an unnecessary hardcoded limit on
381  variable names that was not checked consistently. Lift the limit.
383  Will merge to 'next'.
386 * jc/maint-t1450-fsck-order-fix (2012-10-02) 1 commit
387   (merged to 'next' on 2012-10-02 at cc1a62e)
388  + t1450: the order the objects are checked is undefined
390  The fsck test assumed too much on what kind of error it will
391  detect. The only important thing is the inconsistency is detected
392  as an error.
394  Will merge to 'next'.
397 * jl/submodule-add-by-name (2012-09-30) 2 commits
398  - submodule add: Fail when .git/modules/<name> already exists unless forced
399  - Teach "git submodule add" the --name option
401  If you remove a submodule, in order to keep the repository so that
402  "git checkout" to an older commit in the superproject history can
403  resurrect the submodule, the real repository will stay in $GIT_DIR
404  of the superproject.  A later "git submodule add $path" to add a
405  different submodule at the same path will fail.  Diagnose this case
406  a bit better, and if the user really wants to add an unrelated
407  submodule at the same path, give the "--name" option to give it a
408  place in $GIT_DIR of the superproject that does not conflict with
409  the original submodule.
411  Will merge to 'next'.
414 * jm/diff-context-config (2012-10-02) 2 commits
415   (merged to 'next' on 2012-10-02 at e57700a)
416  + t4055: avoid use of sed 'a' command
417   (merged to 'next' on 2012-10-01 at 509a558)
418  + diff: diff.context configuration gives default to -U
420  Teaches a new configuration variable to "git diff" Porcelain and
421  its friends.
423  Will defer to the next cycle.
426 * mh/ceiling (2012-09-29) 9 commits
427  - t1504: stop resolving symlinks in GIT_CEILING_DIRECTORIES
428  - longest_ancestor_length(): resolve symlinks before comparing paths
429  - longest_ancestor_length(): use string_list_longest_prefix()
430  - longest_ancestor_length(): always add a slash to the end of prefixes
431  - longest_ancestor_length(): explicitly filter list before loop
432  - longest_ancestor_length(): use string_list_split()
433  - Introduce new function real_path_if_valid()
434  - real_path_internal(): add comment explaining use of cwd
435  - Introduce new static function real_path_internal()
437  Elements of GIT_CEILING_DIRECTORIES list may not match the real
438  pathname we obtain from getcwd(), leading the GIT_DIR discovery
439  logic to escape the ceilings the user thought to have specified.
441  The solution felt a bit unnecessarily convoluted to me.
442  Expecting a reroll.
445 * jl/submodule-rm (2012-09-29) 1 commit
446   (merged to 'next' on 2012-10-01 at 4e5c4fc)
447  + submodule: teach rm to remove submodules unless they contain a git directory
449  "git rm submodule" cannot blindly remove a submodule directory as
450  its working tree may have local changes, and worse yet, it may even
451  have its repository embedded in it.  Teach it some special cases
452  where it is safe to remove a submodule, specifically, when there is
453  no local changes in the submodule working tree, and its repository
454  is not embedded in its working tree but is elsewhere and uses the
455  gitfile mechanism to point at it.
457  Will defer to the next cycle.
460 * nd/pretty-placeholder-with-color-option (2012-09-30) 9 commits
461  - pretty: support %>> that steal trailing spaces
462  - pretty: support truncating in %>, %< and %><
463  - pretty: support padding placeholders, %< %> and %><
464  - pretty: two phase conversion for non utf-8 commits
465  - utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
466  - utf8.c: move display_mode_esc_sequence_len() for use by other functions
467  - pretty: support %C(auto[,N]) to turn on coloring on next placeholder(s)
468  - pretty: split parsing %C into a separate function
469  - pretty: share code between format_decoration and show_decorations
472 * jk/no-more-pre-exec-callback (2012-06-05) 1 commit
473  - pager: drop "wait for output to run less" hack
475  (Originally merged to 'next' on 2012-07-23)
477  Will defer to the next cycle.
479 --------------------------------------------------
480 [Discarded]
482 * nd/wildmatch (2012-09-27) 5 commits
483  . Support "**" in .gitignore and .gitattributes patterns using wildmatch()
484  . Integrate wildmatch to git
485  . compat/wildmatch: fix case-insensitive matching
486  . compat/wildmatch: remove static variable force_lower_case
487  . Import wildmatch from rsync
489  Allows pathname patterns in .gitignore and .gitattributes files
490  with double-asterisks "foo/**/bar" to match any number of directory
491  hiearchies.
493  It was pointed out that some symbols that do not have to be global
494  are left global. I think this reroll fixed most of them.