Updates 2005-09-05
[git.git] / TODO
1 What to expect after 0.99.5
2 ===========================
3
4 This is written in a form of to-do list for me, so if I say
5 "accept patch", it means I do not currently plan to do that
6 myself.  People interested in seeing it materialize please take
7 a hint.
8
9
10 Documentation
11 -------------
12
13 * Accept patches from people who actually have done CVS
14   migration and update the cvs-migration documentation.
15   Link the documentation from the main git.txt page.
16
17 * Link howto docs from the git.txt page. [DONE]
18
19 * Update the SubmittingPatches document to add MUA specific
20   hints on how to disable unwanted MIME and flowed-text by
21   collecting past list postings [DONE].
22
23 * Accept patches from people who were hit by shiny blue bat to
24   update the SubmittingPatches [ONGOING].
25
26 * Talk about using rsync just once at the beginning when
27   initializing a remote repository so that local packs do not
28   need to be expanded.  I personally do not think we need tool
29   support for this (but see below about optimized cloning).
30
31 * Review the existing docs and see if the repository
32   organization needs to be clarified further [DONE].
33
34 * Update tutorial to cover shared repository style a bit more
35   [DONE].
36
37 * Maybe update tutorial with a toy project that involves two or
38   three developers..
39
40 * Document the hooks [DONE].
41
42 * Update tutorial to cover setting up repository hooks to do
43   common tasks.
44
45 * Get help to properly use asciidoc in tutorial [Heck, ended up
46   learning it myself, DONE].
47
48 * Maybe justify and demonstrate an Octopus in the tutorial
49   [STILL NEEDSWORK].
50
51 * Add Octopus to the glossary [Thanks Johannes, DONE].
52
53
54 Technical (heavier)
55 -------------------
56
57 * Tony Luck reported an unfortunate glitch in the 3-way merge.
58   Encourage discussions to come up with a not-so-expensive way
59   to catch the kind of ambiguities that led to his misery.
60   [Daniel's patch looks quite promising.]
61
62 * HPA has two projects, klibc and klibc-kbuild, that have large
63   set of overlapping files in different paths (i.e. one has many
64   renames from the other).  There currently is no way for git to
65   help keep these two trees in sync, merging criss-cross between
66   them.  The merge logic should be able to take advantage of
67   rename/copy detection smarts git-diff-* family has [Discussion
68   ongoing].
69
70 * We might want to optimize cloning with GIT native transport
71   not to explode the pack, and store it in objects/pack instead.
72   We would need a tool to generate an idx file out of a pack
73   file for this.  Also this itself may turn out to be a bad
74   idea, making the set of packs in repositories everybody has
75   different from each other.
76
77 * Maybe a pack optimizer.  I am not convinced that packing all
78   objects into a single pack and removing all the existing panck
79   is the right way to go, since that would work against people
80   who already have those packs.
81
82 * Maybe an Emacs VC backend.
83
84
85 Technical (milder)
86 ------------------
87
88 * When the branch head pointed by $GIT_DIR/HEAD changes while
89   the index file and working tree are looking the other way
90   (e.g. somebody pushed into your repository, or you ran "git
91   fetch" to update the ref your working tree is on), "git
92   checkout" without -f gets confused.  Figure out a good way to
93   handle this. [DONE]
94
95 * We still have the same issue with "git fetch".  Fetching into
96   the branch one is on _may_ need to do the same thing as
97   fetching into anonymous head and then do the resolve.  At
98   least it needs a warning. [DONE]
99
100 * "git commit -m" should work for initial commits and perhaps
101   merge commits as well.  Warning about merge is still a good
102   thing to do, while -m is useful in scripted non-interactive
103   use, so we need to be careful. [DONE]
104
105 * Encourage concrete proposals to commit log message templates
106   we discussed some time ago.
107
108 * Test apply.c patches from Robert Fitzsmons and have them
109   graduate to "master" branch [IN PROGRESS].
110
111 * Test read-tree reorganization patches from Daniel and have
112   them graduate to "master" branch [TESTED].
113
114 * Bug Ryan and work with him to update send-email easier to use.
115   [Ryan's patch pushed into "master".  Will see how well it is
116   accepted.]
117
118 * Look at portability fixes from Jason Riedy
119
120     http://www.cs.berkeley.edu/~ejr/gits/git.git#portable 
121
122   [Applied.  Burned by one of them and backed out, but otherwise
123   looks OK.]
124
125 * Accept patches to cause "read-tree -u" delete a directory when
126   it makes it empty.
127
128 * Perhaps accept patches to introduce the concept of "patch flow
129   expressed as ref mappings" Josef has been advocating about.
130
131 * Perhaps accept patches to do undo/redo.
132
133 * MIMEified applymbox to grok B and Q encodings in headers and
134   turn them into UTF-8; unwrap QP; explode multipart. [DONE]
135
136 * Maybe grok PGP signed text/plain in applymbox as well.
137
138 * Perhaps a tool to revert a single file to pre-modification
139   state?  git-cat-file blob `git-ls-files | grep foo` >foo or
140   git-cat-file blob `git-ls-tree HEAD foo` >foo?  What should
141   the command be called?  git-revert is taken so is
142   git-checkout.
143
144 * "git cherry-pick" that applies the patch an existing commit
145   introduces in its ancestry chain, possibly using the 3-way
146   merge machinery. [DONE]
147
148 * Update rebase using the cherry-pick command. [DONE]
149
150 * Redo "git revert" using 3-way merge machinery. [DONE]
151
152 * A tool to detect, show and prune already merged topic
153   branches.
154
155 * Set up an automated documentation rebuilding procedure at
156   kernel.org, using update hook mechanism. [DONE]
157
158 * Describe automated documentation rebuilding in a howto form
159   [DONE].
160
161 * Enhance "git repack" to not always use --all; this would be
162   handy if the repository contains wagging heads like "pu" in
163   git.git repository.
164
165 * Accept and apply "git repack --all" patch, except the part
166   that removes the existing packs. [DONE]
167
168 * Internally split the project into non-doc and doc parts; add
169   an extra root for the doc part and merge from it; move the
170   internal doc source to a separate repository, like the +Meta
171   repository; experiment if this results in a reasonable
172   workflow, and document it in howto form if it does.
173
174 * Add names to all nodes in show-branch [DONE].
175
176 * Option to limit rename detection for more than N paths.
177
178 * Tool renames. [Discussion almost concluded, scheduled to
179   happen 0.99.7 with backward compatibility links, removing them
180   in 0.99.8.]
181
182
183 Technical (trivial)
184 -------------------
185
186 * Look at and merge Debian fixes from Tommi [Done].
187
188 * Perhaps "git branch -d" to delete a branch.
189
190 * Remove "git clone-dumb-http" [DONE].
191
192 * We would want test scripts for the relative directory path
193   stuff Linus has been working on.  So far, the following
194   commands should be usable with relative directory paths:
195
196     update-cache
197     ls-files
198     diff-files
199     diff-cache
200     diff-tree
201     rev-list
202     rev-parse
203
204
205 Initial repository Gotchas
206 --------------------------
207
208 * `git fetch foo:bar` works OK, but `git checkout bar`
209   afterwards does not (missing `.git/HEAD`).
210   
211 * `git commit -s` did not add signoff for initial commit [DONE].
212
213 * `git status` does not work well when missing `.git/HEAD` [DONE].
214
215 * `git log` either; git-log-script uses die which does not exist
216   [DONE].
217
218 \f
219 Local Variables:
220 mode: text
221 End: