4 The latest copy of this document is found at
6 http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO
9 What to expect from now on
10 ==========================
12 This is written in a form of to-do list for me, so if I say
13 "accept patch", it means I do not currently plan to do that
14 myself. People interested in seeing it materialize please take
15 a hint. Also whatever I marked "Perhaps" do not have to happen
16 if ever -- only if somebody cares enough and submits a clean
23 * No pending issues at the moment. "Revamp Tutorial" initiative
24 by Bruce Fields ongoing and things are looking better.
30 * Make "git branch -d foo" while on foo branch suggest "maybe
31 you want to go back to 'master'?"
33 * Error message from "git checkout -b bar v2.6.10" should assume
34 v2.6.10 is an attempt to switch to a new branch based on
35 mistyped tag, not an attempt to revert path v2.6.10 from the
36 HEAD commit with extra "make and switch to this branch"
39 * "git commit [-i|-o] paths..." with misspelled paths would be
40 silently ignored. Add a flag to ls-files to catch unmatched
41 pathspec to prevent this.
47 * Rehash "git commit" with various parameters to be more
48 intuitive without breaking traditinal users too much. We need
49 to phase this in, especially if we are going to change "git
50 commit" to imply the current "git commit -a" behaviour.
52 * "intent to add" index entries.
54 * Plug-in file-level merges. On the other hand, we may not even
55 need this; just tell people to run "xxdiff -U" on the working
58 * Doing a merge in a separate directory.
60 * Make 'format-patch' take revision limiters similar to
61 rev-list. For example:
64 ....---x---o---o---x---o---o
71 we should be able to format commits 'o', without duplicates,
74 $ git format-patch ^A ^B C
76 Currently the closest approximation is
78 $ git format-patch A..C B..C
80 which results in the last two commits including C formatted
87 * Libification. There are many places "run once" mentality is
88 ingrained in the management of basic data structures, which
89 need to be fixed. [Matthias Urlichs is already working on
90 this: <pan.2005.10.03.20.48.52.132570@smurf.noris.de>]
92 * Maybe a pack optimizer.
94 Given a set of objects and a set of refs (probably a handful
95 branch heads and point release tags), find a set of packs to
96 allow reasonably minimum download for all of these classes of
97 people: (1) somebody cloning the repository from scratch, (2)
98 somebody who tends to follow the master branch head reasonably
99 closely, (3) somebody who tends to follow only the point
102 This needs a matching smart on the dumb protocol downloader.
104 * Maybe an Emacs VC backend.
106 * Look at libified GNU diff CVS seems to use, or libxdiff.
107 [Daniel has his own diff tool almost ready to start
108 integrating and testing]
114 * "git status -v" to give commit preview.
116 * Subprojects. I think the "bind commit" approach has been
117 outlined at sufficiently detailed level. Maybe find time to
118 actually start prototyping it?
120 <7vacdzkww3.fsf@assigned-by-dhcp.cox.net>
124 * Mark entries as "assume unchanged" in the index.
126 <Pine.LNX.4.64.0601311807470.7301@g5.osdl.org>
128 A config item '[core] trust_stat = false' would cause to:
130 - "update-index" with or without --add would mark the path
131 valid after registering. Should we make the working tree
132 file read-only at this point?
134 - checkout-index -u would mark the path and makes the working
137 - read-tree without -u would mark the path invalid.
139 - update-index --refresh should *not* mark up-to-date paths valid.
141 Impacts to various commands:
143 - update-index --refresh would ignore them.
145 - diff-files would say unchanged.
147 - diff-index without --cached acts the same way as diff-index
150 * Decide what to do about rebase applied to merged head. One
151 extreme is to allow rebase if "rev-list ours..theirs" gives
152 anything. This loosens the current merge-base based approach.
153 The other extreme is to refuse rebase if "rev-list
154 theirs..ours" contains any merge commit, which was discussed
157 <43CC695E.2020506@codeweavers.com>
159 * Decide what the right thing to do upon an empty merge commit,
160 when both branches happen to have obtained the same set of
161 changes through different history. Not recording such keeps
162 the history simpler, and the next merge would soon create a
163 true merge commit anyway, but this does not feel quite right.
165 <20060114021800.4688.qmail@web31803.mail.mud.yahoo.com>
167 * Perhaps a smarter HTTP anonymous download via CGI.
169 * diff stopping at the first output; qgit wants to know if this
170 tree has any A or D from the other tree and nothing else.
171 Would help internal tree-diff in rev-list as well.
173 * daemon --strict-symlink.
175 * daemon --base-path does not apply automatically to whitelist
176 somehow feels wrong. If somebody cares enough, accept
179 * Perhaps detect cloning request in upload-pack and cache the
180 result for next cloning request until any of our refs change.
182 * Perhaps accept patch to optionally allow '--fuzz' in
183 'git-apply'. am/applymbox is _not_ the place to do it.
185 * Allow 'git apply' to accept GNU diff 2.7 output that forgets
186 to say '\No newline' if both input ends with incomplete
189 * Perhaps deal with "Files differ" (binary diff) in non C
192 * Maybe grok PGP signed text/plain in applymbox as well.
194 * Output full path in the "git-rev-list --objects" output, not
195 just the basename, and see the improved clustering results in
196 better packing [Tried, but did not work out well].
202 * git-proxy should be spawned with sh -c 'command' $1 $2.
204 * test scripts for the relative directory path stuff.
206 * In a freshly created empty repository, `git fetch foo:bar`
207 works OK, but `git checkout bar` afterwards does not (missing