Split past issues of What's cooking and What's in
[git/spearce.git] / whats / cooking / 2008 / 07 / 04.txt
blobf96c579eeb4a5e8eb357e5d76da1e29979c5517d
1 What's cooking in git.git (Jul 2008, issue #04; Wed, 09)
2 --------------------------------------------------------
4 Here are the topics that have been cooking.  Commits prefixed
5 with '-' are only in 'pu' while commits prefixed with '+' are
6 in 'next'.
8 The topics list the commits in reverse chronological order.  The topics
9 meant to be applied to the maintenance series have "maint-" in their
10 names.
12 It already is beginning to become clear what 1.6.0 will look like.  What's
13 already in 'next' all are well intentioned (I do not guarantee they are
14 already bug-free --- that is what cooking them in 'next' is for) and are
15 good set of feature enhancements.  Bigger changes will be:
17  * Port for MinGW.
19  * With the default Makefile settings, most of the programs will be
20    installed outside your $PATH, except for "git", "gitk", "git-gui" and
21    some server side programs that need to be accessible for technical
22    reasons.  Invoking a git subcommand as "git-xyzzy" from the command
23    line has been deprecated since early 2006 (and officially announced in
24    1.5.4 release notes); use of them from your scripts after adding
25    output from "git --exec-path" to the $PATH will still be supported in
26    1.6.0, but users are again strongly encouraged to adjust their
27    scripts to use "git xyzzy" form, as we will stop installing
28    "git-xyzzy" hardlinks for built-in commands in later releases.
30  * git-merge will be rewritten in C.
32  * default pack and idx versions will be updated as scheduled for some
33    time ago.
35  * GIT_CONFIG, which was only documented as affecting "git config", but
36    actually affected all git commands, now only affects "git config".
37    GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
38    not different from GIT_CONFIG in a useful way, is removed.
40 ----------------------------------------------------------------
41 [New Topics]
43 * xx/merge-in-c-into-next (Wed Jul 9 13:51:46 2008 -0700) 4 commits
44  + Teach git-merge -X<option> again.
45  + Merge branch 'jc/merge-theirs' into xx/merge-in-c-into-next
46  + builtin-merge.c: use parse_options_step() "incremental parsing"
47    machinery
48  + Merge branch 'ph/parseopt-step-blame' into xx/merge-in-c-into-next
50 I've described what this is in a separate message.
52 * jc/branch-merged (Tue Jul 8 17:55:47 2008 -0700) 3 commits
53  + branch --merged/--no-merged: allow specifying arbitrary commit
54  + branch --contains: default to HEAD
55  + parse-options: add PARSE_OPT_LASTARG_DEFAULT flag
57 This builds on top of the parse-options enhancement series that
58 has been cooking in 'next' for some time.
60 * rs/imap (Wed Jul 9 22:29:02 2008 +0100) 5 commits
61  + Documentation: Improve documentation for git-imap-send(1)
62  + imap-send.c: more style fixes
63  + imap-send.c: style fixes
64  + git-imap-send: Support SSL
65  + git-imap-send: Allow the program to be run from subdirectories of
66    a git tree
68 * om/rerere-careful (Mon Jul 7 14:42:48 2008 +0200) 1 commit
69  + builtin-rerere: more carefully find conflict markers
71 ----------------------------------------------------------------
72 [Will merge to master soon]
74 * js/pick-root (Fri Jul 4 16:19:52 2008 +0100) 1 commit
75  + Allow cherry-picking root commits
77 * ab/bundle (Sat Jul 5 17:26:40 2008 -0400) 1 commit
78  + Teach git-bundle to read revision arguments from stdin like git-
79    rev-list.
81 * sg/stash-k-i (Tue Jul 8 00:40:56 2008 -0700) 2 commits
82  + Documentation: tweak use case in "git stash save --keep-index"
83  + stash: introduce 'stash save --keep-index' option
85 One weakness of our "partial commit" workflow support used to be that the
86 user can incrementally build what is to be committed in the index but that
87 state cannot be tested as a whole in the working tree.  This allows you to
88 temporarily stash the remaining changes in the working tree so that the
89 index state before running "stash save --keep-index" can be seen in the
90 working tree to be tested and then committed.
92 * am/stash-branch (Mon Jul 7 02:50:10 2008 +0530) 2 commits
93  + Add a test for "git stash branch"
94  + Implement "git stash branch <newbranch> <stash>"
96 Creates a new branch out of the stashed state, after returning from the
97 interrupt that forced you to create the stash in the first place.
99 * tr/add-i-e (Thu Jul 3 00:00:00 2008 +0200) 3 commits
100  + git-add--interactive: manual hunk editing mode
101  + git-add--interactive: remove hunk coalescing
102  + git-add--interactive: replace hunk recounting with apply --recount
104 Adds 'e/dit' action to interactive add command.
106 * jc/report-tracking (Sun Jul 6 02:54:56 2008 -0700) 5 commits
107  + branch -r -v: do not spit out garbage
108  + stat_tracking_info(): clear object flags used during counting
109  + git-branch -v: show the remote tracking statistics
110  + git-status: show the remote tracking statistics
111  + Refactor "tracking statistics" code used by "git checkout"
113 Makes the "your branch is ahead of the tracked one by N commits" logic and
114 messages available to other commands; status and branch are updated.
116 ----------------------------------------------------------------
117 [Actively Cooking]
119 * jc/rebase-orig-head (Tue Jul 8 00:12:22 2008 -0400) 2 commits
120  + Documentation: mention ORIG_HEAD in am, merge, and rebase
121  + Teach "am" and "rebase" to mark the original position with
122    ORIG_HEAD
124 * ph/parseopt-step-blame (Wed Jul 9 23:38:34 2008 +0200) 18 commits
125  + revisions: refactor handle_revision_opt into parse_revision_opt.
126  + git-shortlog: migrate to parse-options partially.
127  + git-blame: fix lapsus
128  + git-blame: migrate to incremental parse-option [2/2]
129  + git-blame: migrate to incremental parse-option [1/2]
130  + revisions: split handle_revision_opt() from setup_revisions()
131  + Merge branch 'jc/blame' (early part) into HEAD
132  + parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option.
133  + parse-opt: fake short strings for callers to believe in.
134  + parse-opt: do not print errors on unknown options, return -2
135    intead.
136  + parse-opt: create parse_options_step.
137  + parse-opt: Export a non NORETURN usage dumper.
138  + parse-opt: have parse_options_{start,end}.
139  + git-blame --reverse
140  + builtin-blame.c: allow more than 16 parents
141  + builtin-blame.c: move prepare_final() into a separate function.
142  + rev-list --children
143  + revision traversal: --children option
145 Became active again ;-) This probably is ready for 'master' already,
146 except for the last two which I only looked at the patch and have not
147 used heavily in production yet.
149 * jc/merge-theirs (Mon Jun 30 22:18:57 2008 -0700) 5 commits
150  + Make "subtree" part more orthogonal to the rest of merge-
151    recursive.
152  + Teach git-pull to pass -X<option> to git-merge
153  + Teach git-merge to pass -X<option> to the backend strategy module
154  + git-merge-recursive-{ours,theirs}
155  + git-merge-file --ours, --theirs
157 Punting a merge by discarding your own work in conflicting parts but still
158 salvaging the parts that are cleanly automerged.  It is likely that this
159 will result in nonsense mishmash, but somehow often people want this, so
160 here they are.  The interface to the backends is updated so that you can
161 say "git merge -Xours -Xsubtree=foo/bar/baz -s recursive other" now.
163 * mv/merge-in-c (Mon Jul 7 19:24:20 2008 +0200) 15 commits
164  + Build in merge
165  + Fix t7601-merge-pull-config.sh on AIX
166  + git-commit-tree: make it usable from other builtins
167  + Add new test case to ensure git-merge prepends the custom merge
168    message
169  + Add new test case to ensure git-merge reduces octopus parents when
170    possible
171  + Introduce reduce_heads()
172  + Introduce get_merge_bases_many()
173  + Add new test to ensure git-merge handles more than 25 refs.
174  + Introduce get_octopus_merge_bases() in commit.c
175  + git-fmt-merge-msg: make it usable from other builtins
176  + Move read_cache_unmerged() to read-cache.c
177  + Add new test to ensure git-merge handles pull.twohead and
178    pull.octopus
179  + Move parse-options's skip_prefix() to git-compat-util.h
180  + Move commit_list_count() to commit.c
181  + Move split_cmdline() to alias.c
183 ----------------------------------------------------------------
184 [Graduated to "master"]
186 * js/apply-root (Sun Jul 6 18:36:01 2008 -0700) 3 commits
187  + git-apply --directory: make --root more similar to GNU diff
188  + apply --root: thinkofix.
189  + Teach "git apply" to prepend a prefix with "--root=<root>"
191 * jc/reflog-expire (Sat Jun 28 22:24:49 2008 -0700) 2 commits
192  + Make default expiration period of reflog used for stash infinite
193  + Per-ref reflog expiry configuration
195 As 1.6.0 will be a good time to make backward incompatible changes, the
196 tip commit makes the default expiry period of stash 'never', unless you
197 configure them to expire explicitly using gc.refs/stash.* variables.
198 Needs consensus, but I am guessing that enough people would want stash
199 that does not expire.
201 * jk/pager-config (Thu Jul 3 07:46:57 2008 -0400) 1 commit
202  + Allow per-command pager config
204 ----------------------------------------------------------------
205 [On Hold]
207 * sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit
208  + merge: remove deprecated summary and diffstat options and config
209    variables
211 This was previously in "will be in master soon" category, but it turns out
212 that the synonyms to the ones this one deletes are fairly new invention
213 that happend in 1.5.6 timeframe, and we cannot do this just yet.  Perhaps
214 in 1.7.0.
216 * jc/dashless (Thu Jun 26 16:43:34 2008 -0700) 2 commits
217  + Revert "Make clients ask for "git program" over ssh and local
218    transport"
219  + Make clients ask for "git program" over ssh and local transport
221 This is the "botched" one.  Will be resurrected during 1.7.0 or 1.8.0
222 timeframe.
224 * jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit
225  - diff: enable "too large a rename" warning when -M/-C is explicitly
226    asked for
228 This would be the right thing to do for command line use, but gitk will be
229 hit due to tcl/tk's limitation, so I am holding this back for now.
231 ----------------------------------------------------------------
232 [Stalled/Needs more work]
234 * sb/sequencer (Tue Jul 1 04:38:34 2008 +0200) 4 commits
235  . Migrate git-am to use git-sequencer
236  . Add git-sequencer test suite (t3350)
237  . Add git-sequencer prototype documentation
238  . Add git-sequencer shell prototype
240 * jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
241  - [BROKEN wrt shallow clones] Ignore graft during object transfer
243 Cloning or fetching from a repository from grafts did not send objects
244 that are hidden by grafts, but the commits in the resulting repository do
245 need these to pass fsck.  This fixes object transfer to ignore grafts.
247 Another fix is needed to git-prune so that it ignores grafts but treats
248 commits that are mentioned in grafts as reachable.
250 * jc/blame (Wed Jun 4 22:58:40 2008 -0700) 7 commits
251  - blame: show "previous" information in --porcelain/--incremental
252    format
253  - git-blame: refactor code to emit "porcelain format" output
254  + git-blame --reverse
255  + builtin-blame.c: allow more than 16 parents
256  + builtin-blame.c: move prepare_final() into a separate function.
257  + rev-list --children
258  + revision traversal: --children option
260 The blame that finds where each line in the original lines moved to.  This
261 may help a GSoC project that wants to gather statistical overview of the
262 history.  The final presentation may need tweaking (see the log message of
263 the commit ""git-blame --reverse" on the series).
265 The tip two commits are for peeling to see what's behind the blamed
266 commit, which we should be able to separate out into an independent topic
267 from the rest.