GIT 0.99.8
[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.
29
30
31 Documentation
32 -------------
33
34 * Accept patches from people who actually have done CVS
35   migration and update the cvs-migration documentation.
36   Link the documentation from the main git.txt page.
37
38 * Talk about using rsync just once at the beginning when
39   initializing a remote repository so that local packs do not
40   need to be expanded.  I personally do not think we need tool
41   support for this (but see below about optimized cloning).
42
43 * Maybe update tutorial with a toy project that involves two or
44   three developers..
45
46 * Update tutorial to cover setting up repository hooks to do
47   common tasks.
48
49 * Accept patches to finish missing docs.
50
51 * Accept patches to talk about "Whoops, it broke.  What's
52   next?".
53
54 * Accept patches to make formatted tables in asciidoc to work
55   well in both html and man pages (see git-diff(1)).
56
57
58 Technical (heavier)
59 -------------------
60
61 * We might want to optimize cloning with GIT native transport
62   not to explode the pack, and store it in objects/pack instead.
63   We would need a tool to generate an idx file out of a pack
64   file for this.  Also this itself may turn out to be a bad
65   idea, making the set of packs in repositories everybody has
66   different from each other.
67
68 * Git daemon, when deployed at kernel.org, might turn out to be
69   quite a burden, since it needs to generate customized packs
70   every time a new request comes in.  It may be worthwhile to
71   precompute some packs for popular sets of heads downloaders
72   have and serve that, even if that could give more than the
73   client asks for in some cases.  We will know about this soon
74   enough.
75
76 * Libification.  There are many places "run once" mentality is
77   ingrained in the management of basic data structures, which
78   need to be fixed.
79
80 * Maybe a pack optimizer.
81
82 * Maybe an Emacs VC backend.
83
84 * 'git split-projects'?  This requires updated 'git-rev-list' to
85   skip irrelevant commits.
86   Message-ID: <Pine.LNX.4.63.0509221617300.23242@iabervon.org>
87
88 * Look at libified GNU diff CVS seems to use, or libxdiff.
89
90
91 Technical (milder)
92 ------------------
93
94 * Encourage concrete proposals to commit log message templates
95   we discussed some time ago.
96
97 * Accept patches to cause "read-tree -u" delete a directory when
98   it makes it empty.
99
100 * Perhaps accept patches to introduce the concept of "patch flow
101   expressed as ref mappings" Josef has been advocating about.
102
103 * Perhaps accept patches to do undo/redo.
104
105 * Perhaps accept patch to optionally allow '--fuzz' in
106   'git-apply'.
107
108 * Allow 'git apply' to accept GNU diff 2.7 output that forgets
109   to say '\No newline' if both input ends with incomplete
110   lines.
111
112 * Maybe grok PGP signed text/plain in applymbox as well.
113
114 * Perhaps a tool to revert a single file to pre-modification
115   state?  People with BK background know this operation as
116   'clean'.  'git checkout [-f] ent [path...]' was suggested by
117   Matthias Urlichs which sounds a natural extention to what the
118   command currently does.
119
120 * Enhance "git repack" to not always use --all; this would be
121   handy if the repository contains wagging heads like "pu" in
122   git.git repository.
123
124 * Internally split the project into non-doc and doc parts; add
125   an extra root for the doc part and merge from it; move the
126   internal doc source to a separate repository, like the +Meta
127   repository; experiment if this results in a reasonable
128   workflow, and document it in howto form if it does.
129
130 * Make rebase restartable; instead of skipping what cannot be
131   automatically forward ported, leave the conflicts in the work
132   tree, have the user resolve it, and then restart from where it
133   left off.
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 * Updated git-changes-script Jeff Garzik needs [Inquiry for
140   external spec sent out with a quick hack.  Will know if that
141   is what he needs soon enough].
142
143
144 Technical (trivial)
145 -------------------
146
147 * short SHA1 naming is not enforcing uniqueness.  Should fix.
148
149 * 'git repack' can be DOSed.  Should fix.
150
151 * Stop installing the old-name symlinks [POSTPONED].
152
153 * 'git merge-projects'?
154
155 * 'git lost-and-found'?  Link dangling commits found by
156   fsck-objects under $GIT_DIR/refs/lost-found/.  Then
157   show-branch or gitk can be used to find any lost commit. [A
158   feeler patch sent out. Very underwhelming response X-<.]
159
160   Do not name it /lost+found/; that would probably confuse
161   things that mistake it a mount point (not our code but
162   somebody else's).
163
164 * Add simple globbing rules to git-show-branch so that I can
165   say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and
166   ko-rc are in refs/tags/).
167
168 * We would want test scripts for the relative directory path
169   stuff Linus has been working on.  So far, the following
170   commands should be usable with relative directory paths:
171
172     git-update-index
173     git-ls-files
174     git-diff-files
175     git-diff-index
176     git-diff-tree
177     git-rev-list
178     git-rev-parse
179
180 * In a freashly created empty repository, `git fetch foo:bar`
181   works OK, but `git checkout bar` afterwards does not (missing
182   `.git/HEAD`).
183
184 \f
185 Local Variables:
186 mode: text
187 End: