2005-10-26 (prepare for 0.99.9)
[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 Tool Renames Plan
10 =================
11
12  - In 0.99.9, the backward compatible symbolic links in
13    $(bindir) will be removed.
14
15    git-ssh-push and git-ssh-pull pair is not going away if ever.
16    Each of these old-name commands continues to invoke its
17    old-name counterpart on the other end.
18
19
20 What to expect after 0.99.8
21 ===========================
22
23 This is written in a form of to-do list for me, so if I say
24 "accept patch", it means I do not currently plan to do that
25 myself.  People interested in seeing it materialize please take
26 a hint.  Also whatever I marked "Perhaps" do not have to happen
27 if ever -- only if somebody cares enough and submits a clean
28 patch, perhaps ;-).
29
30
31 Documentation
32 -------------
33
34 * Document the ref naming restrictions [DONE].
35
36 * David Ho's report suggests whatchanged documentation should
37   mention -m as "commonly used options".  Steal Linus'
38   response [DONE].
39
40 * Help Jon Loeliger to find place in the documentation to place
41   his drawing.
42
43 * Accept patches from people who actually have done CVS
44   migration and update the cvs-migration documentation.
45   Link the documentation from the main git.txt page.
46
47 * Talk about using rsync just once at the beginning when
48   initializing a remote repository so that local packs do not
49   need to be expanded.  I personally do not think we need tool
50   support for this (but see below about optimized cloning).
51
52 * Maybe update tutorial with a toy project that involves two or
53   three developers..
54
55 * Update tutorial to cover setting up repository hooks to do
56   common tasks.
57
58 * Do we still have missing docs?  If so accept patches to finish
59   them.
60
61 * Accept patches to talk about "Whoops, it broke.  What's
62   next?".
63
64 * Accept patches to make formatted tables in asciidoc to work
65   well in both html and man pages (see git-diff(1)).
66
67
68 Technical (heavier)
69 -------------------
70
71 * We might want to optimize cloning with GIT native transport
72   not to explode the pack, and store it in objects/pack instead.
73   We would need a tool to generate an idx file out of a pack
74   file for this.  Also this itself may turn out to be a bad
75   idea, making the set of packs in repositories everybody has
76   different from each other. [DONE; git-index-pack by Sergey,
77   tweaking clone by me]
78
79 * Git daemon, when deployed at kernel.org, might turn out to be
80   quite a burden, since it needs to generate customized packs
81   every time a new request comes in.  It may be worthwhile to
82   precompute some packs for popular sets of heads downloaders
83   have and serve that, even if that could give more than the
84   client asks for in some cases.  We will know about this soon
85   enough [DONE part to allow using precomputed pack, but not
86   dynamic caching part].
87
88 * Libification.  There are many places "run once" mentality is
89   ingrained in the management of basic data structures, which
90   need to be fixed.  [Matthias Urlichs is already working on
91   this: <pan.2005.10.03.20.48.52.132570@smurf.noris.de>; Post
92   1.0].
93
94 * Maybe a pack optimizer.
95
96   Given a set of objects and a set of refs (probably a handful
97   branch heads and point release tags), find a set of packs to
98   allow reasonably minimum download for all of these classes of
99   people: (1) somebody cloning the repository from scratch, (2)
100   somebody who tends to follow the master branch head reasonably
101   closely, (3) somebody who tends to follow only the point
102   releases.
103
104 * Maybe an Emacs VC backend.
105
106 * 'git split-projects'?  This requires updated 'git-rev-list' to
107   skip irrelevant commits.
108   Message-ID: <Pine.LNX.4.63.0509221617300.23242@iabervon.org>
109
110 * Look at libified GNU diff CVS seems to use, or libxdiff.
111   [Daniel has his own diff tool almost ready to start
112   integrating and testing; Post 1.0]
113
114 * Accept patches to fetch multiple objects by HTTP in parallel.
115   [DONE]
116
117 * Plug-in file-level merges [Post 1.0].
118
119 * Per-repository configuration mechanism [DONE by Linus].
120
121
122 Technical (milder)
123 ------------------
124
125 * Merlyn reports trouble with http fetch [Hopefully solved by
126   Nick's updates].
127
128 * Maybe look at Cogito and see if I can help Pasky to adjust to
129   the later core features?  Zack Brown's "cg-seek leaving empty
130   directories" problem is a good example of this.
131
132 * Perhaps detect cloning request in upload-pack and cache the
133   result for next cloning request until any of our refs change.
134
135 * Perhaps accept more "want"s in upload-pack and do something
136   intelligent about it [Ongoing, by Johannes].
137
138 * Perhaps send less "want"s from fetch-pack [DONE by JS].
139
140 * Look at svn importer Smurf has.  There is a small cvsimport
141   update in his tree as well [DONE].
142
143 * Decide the notation of "peeling the onion" operator, and
144   implement it in sha1_name.c.  Perhaps postfix "^{}" to mean
145   "peel and expect anything", "^{blob}" to mean "peel and barf
146   unless blob".  The current "^0" becomes shorthand for
147   "^{commit}". [DONE]
148
149 * Quote the URL so that libcurl's metecharacter mechanism would
150   not kick in [DONE].
151
152 * Review the Makefile variables and exporting rules for them,
153   while looking at prefix passing by Kai Ruemmler [DONE].
154
155 * Review the 'sparse object database' change by Linus and move
156   the first phase of it to the "master" branch [DONE].
157
158 * Decide on mmap().  I am inclined to just stick to mmap
159   replacement by Johannes Schindelin and do nothing else right
160   now, except perhaps drop the writing-back support [DONE].
161
162 * Revisit Santi's patch to move commit temorary files out of the
163   working tree toplevel [DONE].
164
165 * More generally, review the use of temporary files again.
166   Assuming writable $GIT_DIR is more acceptable, but the
167   working tree toplevel may not be in a rare usage pattern.
168
169 * Encourage concrete proposals to commit log message templates
170   we discussed some time ago.
171
172 * Accept patches to cause "read-tree -u" delete a directory when
173   it makes it empty [DONE].
174
175 * Perhaps accept patches to do undo/redo.
176
177 * Perhaps accept patch to optionally allow '--fuzz' in
178   'git-apply'.
179
180 * Allow 'git apply' to accept GNU diff 2.7 output that forgets
181   to say '\No newline' if both input ends with incomplete
182   lines.
183
184 * What to do with TABs and LFs in pathnames without breaking GNU
185   patch?  [DONE -- go with GNU patch extension proposed by Paul].
186
187 * Adjust apply.c to proposed GNU patch extension that quotes \n
188   and \t in C style, inside "". [DONE]
189
190 * Adjust diff.c to the same. [DONE]
191
192 * Maybe grok PGP signed text/plain in applymbox as well.
193
194 * Perhaps a tool to revert a single file to pre-modification
195   state?  People with BK background know this operation as
196   'clean'.  'git checkout [-f] ent [path...]' was suggested by
197   Matthias Urlichs which sounds a natural extention to what the
198   command currently does [DONE with a prodding by Linus].
199
200 * Enhance "git repack" to not always use --all; this would be
201   handy if the repository contains wagging heads like "pu" in
202   git.git repository.
203
204 * Make rebase restartable; instead of skipping what cannot be
205   automatically forward ported, leave the conflicts in the work
206   tree, have the user resolve it, and then restart from where it
207   left off [mechanism mostly done].
208
209 * Output full path in the "git-rev-list --objects" output, not
210   just the basename, and see the improved clustering results in
211   better packing [Tried, but did not work out well].
212
213 * Updated git-changes-script Jeff Garzik needs [Inquiry for
214   external spec sent out with a quick hack.  Will know if that
215   is what he needs hopefully soon].
216
217 * An mechanism to ignore filesystem mode bits altogether [DONE].
218
219
220 Technical (trivial)
221 -------------------
222
223 * Peter Hagervall's sparse fix [DONE].
224
225 * Alex Riesen reported that hooks are in effect in tests.
226   Should fix [DONE].
227
228 * Disallow [\001-\040\177] byte values from ref names.  Also we
229   need to disallow ':' (used in refspec), '^' and '~' (postfix
230   "peel the onion" operators), and '..' ("ref1..ref2" notation
231   becomes ambiguous otherwise) [DONE].
232
233 * Update fetch-pack and clone-pack to ignore funny refs from the
234   other end, while making sure peek-remote does not discard them.
235   [DONE]
236
237 * Update upload-pack to send tag^{}.  This would hopefully help
238   Pasky's automated tag tracking, and also Martin's findtags.
239   [DONE]
240
241 * Adjust update-index to quoted --index-info [DONE].
242
243 * Prepare apply.c changes for maint branch (0.99.8e) [DONE].
244
245 * Perhaps show ^{commit}, ^{tree} instead of ^{} from ls-remote? [NO]
246
247 * Re-adjust maint branch for the above if we did so. [NOT NEEDED]
248
249 * short SHA1 naming is not enforcing uniqueness.  Should fix [DONE].
250
251 * 'git repack' can be DOSed.  Should fix [DONE].
252
253 * Stop installing the old-name symlinks [IN 0.99.9].
254
255 * 'git merge-projects'?
256
257   Subject: Re: Merges without bases
258   References: <1125004228.4110.20.camel@localhost.localdomain>
259   Date: Thu, 25 Aug 2005 15:26:36 -0700
260   Message-ID: <7vvf1tps9v.fsf@assigned-by-dhcp.cox.net>
261
262 * 'git lost-and-found'?  Link dangling commits found by
263   fsck-objects under $GIT_DIR/refs/lost-found/.  Then
264   show-branch or gitk can be used to find any lost commit. [A
265   feeler patch sent out. Very underwhelming response X-<.]
266
267   Do not name it /lost+found/; that would probably confuse
268   things that mistake it a mount point (not our code but
269   somebody else's).
270
271 * Add simple globbing rules to git-show-branch so that I can
272   say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and
273   ko-rc are in refs/tags/).
274
275 * We would want test scripts for the relative directory path
276   stuff Linus has been working on.  So far, the following
277   commands should be usable with relative directory paths:
278
279     git-update-index
280     git-ls-files
281     git-diff-files
282     git-diff-index
283     git-diff-tree
284     git-rev-list
285     git-rev-parse
286
287 * In a freashly created empty repository, `git fetch foo:bar`
288   works OK, but `git checkout bar` afterwards does not (missing
289   `.git/HEAD`).
290
291 \f
292 Local Variables:
293 mode: text
294 End: