Update 2005-10-03 night
[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.8, we will still install the backward compatible
13    symbolic links in $(bindir).  These will however be removed
14    before 1.0 happens.
15
16    git-ssh-push and git-ssh-pull pair is not going away within
17    this timeframe, if ever.  Each of these old-name commands
18    continues to invoke its old-name counterpart on the other
19    end.
20
21
22 What to expect after 0.99.8
23 ===========================
24
25 This is written in a form of to-do list for me, so if I say
26 "accept patch", it means I do not currently plan to do that
27 myself.  People interested in seeing it materialize please take
28 a hint.  Also whatever I marked "Perhaps" do not have to happen
29 if ever -- only if somebody cares enough and submits a clean
30 patch, perhaps ;-).
31
32
33 Documentation
34 -------------
35
36 * Accept patches from people who actually have done CVS
37   migration and update the cvs-migration documentation.
38   Link the documentation from the main git.txt page.
39
40 * Talk about using rsync just once at the beginning when
41   initializing a remote repository so that local packs do not
42   need to be expanded.  I personally do not think we need tool
43   support for this (but see below about optimized cloning).
44
45 * Maybe update tutorial with a toy project that involves two or
46   three developers..
47
48 * Update tutorial to cover setting up repository hooks to do
49   common tasks.
50
51 * Accept patches to finish missing docs.
52
53 * Accept patches to talk about "Whoops, it broke.  What's
54   next?".
55
56 * Accept patches to make formatted tables in asciidoc to work
57   well in both html and man pages (see git-diff(1)).
58
59
60 Technical (heavier)
61 -------------------
62
63 * We might want to optimize cloning with GIT native transport
64   not to explode the pack, and store it in objects/pack instead.
65   We would need a tool to generate an idx file out of a pack
66   file for this.  Also this itself may turn out to be a bad
67   idea, making the set of packs in repositories everybody has
68   different from each other.
69
70 * Git daemon, when deployed at kernel.org, might turn out to be
71   quite a burden, since it needs to generate customized packs
72   every time a new request comes in.  It may be worthwhile to
73   precompute some packs for popular sets of heads downloaders
74   have and serve that, even if that could give more than the
75   client asks for in some cases.  We will know about this soon
76   enough.
77
78 * Libification.  There are many places "run once" mentality is
79   ingrained in the management of basic data structures, which
80   need to be fixed.  [Matthias Urlichs is already working on
81   this: <pan.2005.10.03.20.48.52.132570@smurf.noris.de>; Post
82   1.0].
83
84 * Maybe a pack optimizer.
85
86   Given a set of objects and a set of refs (probably a handful
87   branch heads and point release tags), find a set of packs to
88   allow reasonably minimum download for all of these classes of
89   people: (1) somebody cloning the repository from scratch, (2)
90   somebody who tends to follow the master branch head reasonably
91   closely, (3) somebody who tends to follow only the point
92   releases.
93
94 * Maybe an Emacs VC backend.
95
96 * 'git split-projects'?  This requires updated 'git-rev-list' to
97   skip irrelevant commits.
98   Message-ID: <Pine.LNX.4.63.0509221617300.23242@iabervon.org>
99
100 * Look at libified GNU diff CVS seems to use, or libxdiff.
101   [Daniel has his own diff tool almost ready to start
102   integrating and testing; Post 1.0]
103
104 * Accept patches to fetch multiple objects by HTTP in parallel.
105   [Preferably before 1.0]
106
107 * Plug-in file-level merges [Post 1.0].
108
109
110 Technical (milder)
111 ------------------
112
113 * Encourage concrete proposals to commit log message templates
114   we discussed some time ago.
115
116 * Accept patches to cause "read-tree -u" delete a directory when
117   it makes it empty.
118
119 * Perhaps accept patches to do undo/redo.
120
121 * Perhaps accept patch to optionally allow '--fuzz' in
122   'git-apply'.
123
124 * Allow 'git apply' to accept GNU diff 2.7 output that forgets
125   to say '\No newline' if both input ends with incomplete
126   lines.
127
128 * Maybe grok PGP signed text/plain in applymbox as well.
129
130 * Perhaps a tool to revert a single file to pre-modification
131   state?  People with BK background know this operation as
132   'clean'.  'git checkout [-f] ent [path...]' was suggested by
133   Matthias Urlichs which sounds a natural extention to what the
134   command currently does.
135
136 * Enhance "git repack" to not always use --all; this would be
137   handy if the repository contains wagging heads like "pu" in
138   git.git repository.
139
140 * Internally split the project into non-doc and doc parts; add
141   an extra root for the doc part and merge from it; move the
142   internal doc source to a separate repository, like the +Meta
143   repository; experiment if this results in a reasonable
144   workflow, and document it in howto form if it does.
145
146   The point is to make it possible to fork that part off to
147   somebody else; then I do not have to maintain Documentation
148   directory myself anymore, just like I simply slurp the latest
149   gitk from Paul and not worry about it ;-).
150
151
152 * Make rebase restartable; instead of skipping what cannot be
153   automatically forward ported, leave the conflicts in the work
154   tree, have the user resolve it, and then restart from where it
155   left off.
156
157 * Output full path in the "git-rev-list --objects" output, not
158   just the basename, and see the improved clustering results in
159   better packing [Tried, but did not work out well].
160
161 * Updated git-changes-script Jeff Garzik needs [Inquiry for
162   external spec sent out with a quick hack.  Will know if that
163   is what he needs soon enough].
164
165
166 Technical (trivial)
167 -------------------
168
169 * short SHA1 naming is not enforcing uniqueness.  Should fix [DONE].
170
171 * 'git repack' can be DOSed.  Should fix [DONE].
172
173 * Stop installing the old-name symlinks [POSTPONED, but before 1.0].
174
175 * 'git merge-projects'?
176
177   Subject: Re: Merges without bases
178   References: <1125004228.4110.20.camel@localhost.localdomain>
179   Date: Thu, 25 Aug 2005 15:26:36 -0700
180   Message-ID: <7vvf1tps9v.fsf@assigned-by-dhcp.cox.net>
181
182 * 'git lost-and-found'?  Link dangling commits found by
183   fsck-objects under $GIT_DIR/refs/lost-found/.  Then
184   show-branch or gitk can be used to find any lost commit. [A
185   feeler patch sent out. Very underwhelming response X-<.]
186
187   Do not name it /lost+found/; that would probably confuse
188   things that mistake it a mount point (not our code but
189   somebody else's).
190
191 * Add simple globbing rules to git-show-branch so that I can
192   say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and
193   ko-rc are in refs/tags/).
194
195 * We would want test scripts for the relative directory path
196   stuff Linus has been working on.  So far, the following
197   commands should be usable with relative directory paths:
198
199     git-update-index
200     git-ls-files
201     git-diff-files
202     git-diff-index
203     git-diff-tree
204     git-rev-list
205     git-rev-parse
206
207 * In a freashly created empty repository, `git fetch foo:bar`
208   works OK, but `git checkout bar` afterwards does not (missing
209   `.git/HEAD`).
210
211 \f
212 Local Variables:
213 mode: text
214 End: