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 * Take the updated tutorial by Bruce Fields very seriously. It
24 is a quite good initiative.
30 * Plug-in file-level merges. On the other hand, we may not even
31 need this; just tell people to run "xxdiff -U" on the working
34 * Doing a merge in a separate directory.
36 * Subprojects. I think the "bind commit" approach has been
37 outlined at sufficiently detailed level. Maybe find time to
38 actually start prototyping it?
40 <7vacdzkww3.fsf@assigned-by-dhcp.cox.net>
46 * Libification. There are many places "run once" mentality is
47 ingrained in the management of basic data structures, which
48 need to be fixed. [Matthias Urlichs is already working on
49 this: <pan.2005.10.03.20.48.52.132570@smurf.noris.de>]
51 * Maybe a pack optimizer.
53 Given a set of objects and a set of refs (probably a handful
54 branch heads and point release tags), find a set of packs to
55 allow reasonably minimum download for all of these classes of
56 people: (1) somebody cloning the repository from scratch, (2)
57 somebody who tends to follow the master branch head reasonably
58 closely, (3) somebody who tends to follow only the point
61 This needs a matching smart on the dumb protocol downloader.
63 * Maybe an Emacs VC backend.
65 * Look at libified GNU diff CVS seems to use, or libxdiff.
66 [Daniel has his own diff tool almost ready to start
67 integrating and testing]
73 * Decide what to do about rebase applied to merged head. One
74 extreme is to allow rebase if "rev-list ours..theirs" gives
75 anything. This loosens the current merge-base based approach.
76 The other extreme is to refuse rebase if "rev-list
77 theirs..ours" contains any merge commit, which was discussed
80 <43CC695E.2020506@codeweavers.com>
82 * Decide what the right thing to do upon an empty merge commit,
83 when both branches happen to have obtained the same set of
84 changes through different history. Not recording such keeps
85 the history simpler, and the next merge would soon create a
86 true merge commit anyway, but does not feel quite right.
88 <20060114021800.4688.qmail@web31803.mail.mud.yahoo.com>
90 * Perhaps a smarter HTTP anonymous download via CGI.
92 * Prepare to enable "always use symbolic refs for HEAD" patch.
93 We need a timeline to force Porcelains to get ready. All the
94 major ones should be ready now.
96 * Prepare to enable "most of the things are installed in
97 GIT_EXEC_PATH not in bindir". I do not plan to set bindir !=
98 gitexecdir myself in the main Makefile I ship, but distos
99 should be able to choose to do so.
101 * Forbid/ignore pack names that do not conform to the convention
102 sha1_pack_name() assumes and reject in check_packed_git_idx()
105 * Any Porcelain-ish we forgot or punted to make usable from
106 subdirectory? I think the last pass caught everything and
107 what are remaining are whole-tree or whole repository
110 * diff stopping at the first output; qgit wants to know if this
111 tree has any A or D from the other tree and nothing else.
112 Would help internal tree-diff in rev-list as well.
114 * daemon --strict-symlink.
116 * daemon --no-user-dir, to make ~user still work with
117 --base-path. They ought to be independent.
119 * daemon --base-path does not apply automatically to whitelist
120 somehow feels wrong. If somebody cares enough, accept
123 * Perhaps detect cloning request in upload-pack and cache the
124 result for next cloning request until any of our refs change.
126 * Perhaps accept patch to optionally allow '--fuzz' in
127 'git-apply'. am/applymbox is _not_ the place to do it.
129 * Allow 'git apply' to accept GNU diff 2.7 output that forgets
130 to say '\No newline' if both input ends with incomplete
133 * Perhaps deal with "Files differ" (binary diff) in non C
136 * Maybe grok PGP signed text/plain in applymbox as well.
138 * Output full path in the "git-rev-list --objects" output, not
139 just the basename, and see the improved clustering results in
140 better packing [Tried, but did not work out well].
148 * git-proxy should be spawned with sh -c 'command' $1 $2.
150 * test scripts for the relative directory path stuff.
152 * In a freshly created empty repository, `git fetch foo:bar`
153 works OK, but `git checkout bar` afterwards does not (missing