Update post 0.99.7
[git.git] / TODO
diff --git a/TODO b/TODO
index 1892280..cb73bc9 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,37 @@
-What to expect after 0.99.5
+The GIT To-Do File
+==================
+
+  The latest copy of this document is found at 
+
+    http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO
+
+
+Tool Renames Plan
+=================
+
+ - In 0.99.7, all renamed commands have symbolic links in
+   $(bindir) so that old names continue to work.  These backward
+   compatible names will not appear in documentation.  The main
+   documentation, git(7) will talk about the new names but would
+   mention their old names as historical notes.  Old environment
+   names defined in gitenv() will also be removed in this release.
+
+ - In 0.99.8, we will not install these backward compatible
+   symbolic links in $(bindir) anymore.  The Makefile will have
+   a target to remove old symlinks from $(DESTDIR)$(bindir) you
+   can run manually to help you clean things up.
+
+   As a notable exception, git-ssh-push and git-ssh-pull pair is
+   not going away within this timeframe, if ever.  Each of these
+   old-name commands continues to invoke its old-name
+   counterpart on the other end.  Updating to 0.99.8 on one end
+   of the connection does not requier the other end to update at
+   the same time.
+
+   The timeframe for this is around Oct 1st.
+
+
+What to expect after 0.99.7
 ===========================
 
 This is written in a form of to-do list for me, so if I say
@@ -14,41 +47,29 @@ Documentation
   migration and update the cvs-migration documentation.
   Link the documentation from the main git.txt page.
 
-* Link howto docs from the git.txt page. [DONE]
-
-* Update the SubmittingPatches document to add MUA specific
-  hints on how to disable unwanted MIME and flowed-text by
-  collecting past list postings [DONE].
-
 * Accept patches from people who were hit by shiny blue bat to
-  update the SubmittingPatches [ONGOING].
+  update the SubmittingPatches.
 
 * Talk about using rsync just once at the beginning when
   initializing a remote repository so that local packs do not
   need to be expanded.  I personally do not think we need tool
-  support for this (but see below).
-
-* Review the existing docs and see if the repository
-  organization needs to be clarified further [DONE].
-
-* Update tutorial to cover shared repository style a bit more
-  [DONE].
+  support for this (but see below about optimized cloning).
 
 * Maybe update tutorial with a toy project that involves two or
   three developers..
 
-* Document the hooks [DONE].
+* Document octopus [Linus prodded me again; DONE].
 
 * Update tutorial to cover setting up repository hooks to do
   common tasks.
 
-* Get help to properly use asciidoc in tutorial [Heck, ended up
-  learning it myself, DONE].
+* Accept patches to finish missing docs.
 
-* Maybe justify and demonstrate an Octopus in the tutorial
-  [STILL NEEDSWORK].
+* Accept patches to talk about "Whoops, it broke.  What's
+  next?".
 
-* Add Octopus to the glossary [Thanks Johannes, DONE].
+* Accept patches to make formatted tables in asciidoc to work
+  well in both html and man pages (see git-diff(1)).
 
 
 Technical (heavier)
@@ -57,14 +78,16 @@ Technical (heavier)
 * Tony Luck reported an unfortunate glitch in the 3-way merge.
   Encourage discussions to come up with a not-so-expensive way
   to catch the kind of ambiguities that led to his misery.
-  [STARTED TESTING PATCH FROM DANIEL]
+  [Deathmatch between Daniel's and Fredrik's ongoing.]
 
 * HPA has two projects, klibc and klibc-kbuild, that have large
   set of overlapping files in different paths (i.e. one has many
   renames from the other).  There currently is no way for git to
   help keep these two trees in sync, merging criss-cross between
   them.  The merge logic should be able to take advantage of
-  rename/copy detection smarts git-diff-* family has.
+  rename/copy detection smarts git-diff-* family has.  Linus,
+  me, and Daniel outlined a smarter merge strategy for this.
+  Try them out.
 
 * We might want to optimize cloning with GIT native transport
   not to explode the pack, and store it in objects/pack instead.
@@ -73,49 +96,40 @@ Technical (heavier)
   idea, making the set of packs in repositories everybody has
   different from each other.
 
-* Maybe a pack optimizer.  I am not convinced that packing all
-  objects into a single pack and removing all the existing panck
-  is the right way to go, since that would work against people
-  who already have those packs.
+* Libification.  There are many places "run once" mentality is
+  ingrained in the management of basic data structures, which
+  need to be fixed.
+
+* Maybe a pack optimizer.
 
 * Maybe an Emacs VC backend.
 
+* 'git split-projects'?  This requires updated 'git-rev-list' to
+  skip irrelevant commits.
+
 
 Technical (milder)
 ------------------
 
-* When the branch head pointed by $GIT_DIR/HEAD changes while
-  the index file and working tree are looking the other way
-  (e.g. somebody pushed into your repository, or you ran "git
-  fetch" to update the ref your working tree is on), "git
-  checkout" without -f gets confused.  Figure out a good way to
-  handle this. [DONE]
-
-* We still have the same issue with "git fetch".  Fetching into
-  the branch one is on _may_ need to do the same thing as
-  fetching into anonymous head and then do the resolve.  At
-  least it needs a warning. [DONE]
+* Revisit 'git-merge'.  It probably was a mistake to "loop to
+  choose the best one", since what is best is not ill defined to
+  begin with.  This would make it a lot straightforward to
+  loosen the tree cleanliness requirements to the acceptable
+  level.
 
-* "git commit -m" should work for initial commits and perhaps
-  merge commits as well.  Warning about merge is still a good
-  thing to do, while -m is useful in scripted non-interactive
-  use, so we need to be careful. [DONE]
+* The recent commit walker safety patch may be too cautious and
+  appears to take forever when cloning.  This may even be
+  infinitely looping in the code lifted from the old rev-list --
+  needs to be taken a look at [DONE -- and redone very nicely by
+  Sergey].
 
 * Encourage concrete proposals to commit log message templates
   we discussed some time ago.
 
-* Test apply.c patches from Robert Fitzsmons and have them
-  graduate to "master" branch.
-
-* Bug Ryan and work with him to update send-email easier to use.
-  [Resurrected it for Debian build.]
-
-* Look at portability fixes from Jason Riedy
-
-    http://www.cs.berkeley.edu/~ejr/gits/git.git#portable 
+* Accept patches for more portability.
 
-  [Applied.  Burned by one of them and backed out, but otherwise
-  looks OK.]
+  * strcasestr() in mailinfo.  We may need compat/strcasestr.c;
+    this is bugging OpenBSD folks [DONE].
 
 * Accept patches to cause "read-tree -u" delete a directory when
   it makes it empty.
@@ -125,86 +139,84 @@ Technical (milder)
 
 * Perhaps accept patches to do undo/redo.
 
-* MIMEified applymbox to grok B and Q encodings in headers and
-  turn them into UTF-8; unwrap QP; explode multipart.
-  [DONE. waiting for a bug to happen ;-) ]
+* Perhaps accept patch to optionally allow '--fuzz' in
+  'git-apply'.
+
+* Allow 'git apply' to accept GNU diff 2.7 output that forgets
+  to say '\No newline' if both input ends with incomplete
+  lines.
 
 * Maybe grok PGP signed text/plain in applymbox as well.
 
 * Perhaps a tool to revert a single file to pre-modification
-  state?  git-cat-file blob `git-ls-files | grep foo` >foo or
-  git-cat-file blob `git-ls-tree HEAD foo` >foo?  What should
-  the command be called?  git-revert is taken so is
-  git-checkout.
-
-* "git cherry-pick" that applies the patch an existing commit
-  introduces in its ancestry chain, possibly using the 3-way
-  merge machinery. [DONE]
-
-* Update rebase using the cherry-pick command. [DONE]
-
-* Redo "git revert" using 3-way merge machinery. [DONE]
-
-* A tool to detect, show and prune already merged topic
-  branches.
-
-* Set up an automated documentation rebuilding procedure at
-  kernel.org, using update hook mechanism. [DONE]
-
-* Describe automated documentation rebuilding in a howto form
-  [DONE].
+  state?  People with BK background know this operation as
+  'clean'.  'git checkout [-f] ent [path...]' was suggested by
+  Matthias Urlichs which sounds a natural extention to what the
+  command currently does.
 
 * Enhance "git repack" to not always use --all; this would be
   handy if the repository contains wagging heads like "pu" in
   git.git repository.
 
-* Accept and apply "git repack --all" patch, except the part
-  that removes the existing packs. [DONE]
-
 * Internally split the project into non-doc and doc parts; add
   an extra root for the doc part and merge from it; move the
   internal doc source to a separate repository, like the +Meta
   repository; experiment if this results in a reasonable
   workflow, and document it in howto form if it does.
 
-* Add names to all nodes in show-branch [DONE].
+* Make rebase restartable; instead of skipping what cannot be
+  automatically forward ported, leave the conflicts in the work
+  tree, have the user resolve it, and then restart from where it
+  left off.
 
-* Option to limit rename detection for more than N paths.
+* Output full path in the "git-rev-list --objects" output, not
+  just the basename, and see the improved clustering results in
+  better packing [Tried, but did not work out well].
 
+* Remove obsolete commands [DONE].
 
-Technical (trivial)
--------------------
+* Option to limit rename detection for more than N paths [READY].
 
-* Look at and merge Debian fixes from Tommi [Done].
+* Option to show only status and name from diff [READY].
 
-* Perhaps "git branch -d" to delete a branch.
 
-* Remove "git clone-dumb-http".
+Technical (trivial)
+-------------------
 
-* We would want test scripts for the relative directory path
-  stuff Linus has been working on.  So far, the following
-  commands should be usable with relative directory paths:
+* Stop installing the old-name symlinks.
 
-    update-cache
-    ls-files
-    diff-files
-    diff-cache
-    diff-tree
-    rev-list
+* 'git add --recursive' [DONE]
 
+* 'git merge-projects'?
 
-Initial repository Gotchas
---------------------------
+* 'git lost-and-found'?  Link dangling commits found by
+  fsck-objects under $GIT_DIR/refs/lost-found/.  Then
+  show-branch or gitk can be used to find any lost commit. [A
+  feeler patch sent out. Very underwhelming response X-<.]
 
-* `git fetch foo:bar` works OK, but `git checkout bar`
-  afterwards does not (missing `.git/HEAD`)
-  
-* `git commit -s` did not add signoff for initial commit [DONE].
+  Do not name it /lost+found/; that would probably confuse
+  things that mistake it a mount point (not our code but
+  somebody else's).
 
-* `git status` does not work well when missing `.git/HEAD` [DONE].
+* Add simple globbing rules to git-show-branch so that I can
+  say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and
+  ko-rc are in refs/tags/).
+
+* We would want test scripts for the relative directory path
+  stuff Linus has been working on.  So far, the following
+  commands should be usable with relative directory paths:
 
-* `git log` either; git-log-script uses die which does not exist
-  [DONE].
+    git-update-index
+    git-ls-files
+    git-diff-files
+    git-diff-index
+    git-diff-tree
+    git-rev-list
+    git-rev-parse
+
+* In a freashly created empty repository, `git fetch foo:bar`
+  works OK, but `git checkout bar` afterwards does not (missing
+  `.git/HEAD`).
 
 \f
 Local Variables: