Make: There is no gitdir.
[git.git] / TODO
1 The GIT To-Do File
2 ==================
3
4   The latest copy of this document is found at 
5
6     http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO
7
8
9 What to expect until and after 1.0
10 ==================================
11
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
17 patch, perhaps ;-).
18
19 Only handful things remain until 1.0.
20
21
22 Documentation
23 -------------
24
25 * Accept patches from people who actually have done CVS
26   migration and update the cvs-migration documentation.
27   Link the documentation from the main git.txt page.
28
29 * Talk about using rsync just once at the beginning when
30   initializing a remote repository so that local packs do not
31   need to be expanded.  I personally do not think we need tool
32   support for this (but see below about optimized cloning).
33
34 * Maybe update tutorial with a toy project that involves two or
35   three developers.
36
37 * Update tutorial to cover setting up repository hooks to do
38   common tasks.
39
40 * Do we still have missing docs?  If so accept patches to finish
41   them.
42
43 * Accept patches to talk about "Whoops, it broke.  What's
44   next?" [ONGOING].
45
46 * Accept patches to make formatted tables in asciidoc to work
47   well in both html and man pages (see git-diff(1)).
48
49 * Work around multiple synopses lines in manual pages
50   (e.g. git-bisect).
51
52
53 Technical (heavier)
54 -------------------
55
56 * Libification.  There are many places "run once" mentality is
57   ingrained in the management of basic data structures, which
58   need to be fixed.  [Matthias Urlichs is already working on
59   this: <pan.2005.10.03.20.48.52.132570@smurf.noris.de>; Post
60   1.0].
61
62 * Maybe a pack optimizer.
63
64   Given a set of objects and a set of refs (probably a handful
65   branch heads and point release tags), find a set of packs to
66   allow reasonably minimum download for all of these classes of
67   people: (1) somebody cloning the repository from scratch, (2)
68   somebody who tends to follow the master branch head reasonably
69   closely, (3) somebody who tends to follow only the point
70   releases.
71
72   This needs a matching smart on the dumb protocol downloader.
73   [Definitely post 1.0].
74
75 * Maybe an Emacs VC backend.
76
77 * Look at libified GNU diff CVS seems to use, or libxdiff.
78   [Daniel has his own diff tool almost ready to start
79   integrating and testing; Post 1.0]
80
81 * Plug-in file-level merges [Post 1.0].  On the other hand, we
82   may not even need this; just tell people to run "xxdiff -U" on
83   the working tree files.
84
85 * Ref namespace management.  Perhaps use refs/local/ suggestion
86   by Linus. [Does not seem to be high on people's priority list,
87   and not interested myself.  People can resurrect this
88   discussion if they want.]
89
90
91 Technical (milder)
92 ------------------
93
94 * strip leading directory from ls-tree output, to match ls-files
95   output.
96
97   I am of two minds about this one.  diff output must always be
98   -p1 format no matter where the command was started, and
99   ls-tree might be easier to use if it matched diff, not
100   ls-files.
101
102 * diff stopping at the first output; qgit wants to know if this
103   tree has any A or D from the other tree and nothing else.
104   Would help internal tree-diff in rev-list as well [can be post
105   1.0].
106
107 * merge-recursive needs to register conflicting paths as higher
108   stage entries in the index.  For that, it first needs to
109   construct three trees whose paths are already renamed, and
110   call 3-way read-tree.  Alternatively, update-index needs to
111   give it a way to construct higher stages [can be post 1.0, but
112   nicer to have in 1.0].
113
114 * daemon --strict-symlink [can be post 1.0].
115
116 * Binary package split.  Plan laid out and discussion mostly
117   done. [RPM side done; Debian side thrown over the wall.]
118
119 * Perhaps detect cloning request in upload-pack and cache the
120   result for next cloning request until any of our refs change.
121
122 * Perhaps accept patch to optionally allow '--fuzz' in
123   'git-apply'.
124
125 * Allow 'git apply' to accept GNU diff 2.7 output that forgets
126   to say '\No newline' if both input ends with incomplete
127   lines.
128
129 * Maybe grok PGP signed text/plain in applymbox as well.
130
131 * Enhance "git repack" to not always use --all; this would be
132   handy if the repository contains wagging heads like "pu" in
133   git.git repository.
134
135 * Output full path in the "git-rev-list --objects" output, not
136   just the basename, and see the improved clustering results in
137   better packing [Tried, but did not work out well].
138
139
140 Technical (trivial)
141 -------------------
142
143 * We would want test scripts for the relative directory path
144   stuff Linus has been working on.  Most of the C-level
145   commands should be usable with relative directory paths.
146
147 * In a freashly created empty repository, `git fetch foo:bar`
148   works OK, but `git checkout bar` afterwards does not (missing
149   `.git/HEAD`).
150
151 \f
152 Local Variables:
153 mode: text
154 End: