A few more items to TODO.
[git.git] / TODO
diff --git a/TODO b/TODO
index a1dd928..9f976cf 100644 (file)
--- a/TODO
+++ b/TODO
@@ -17,81 +17,74 @@ if ever -- only if somebody cares enough and submits a clean
 patch, perhaps ;-).
 
 
-Documentation
+Design issues
 -------------
 
-* Take the updated tutorial by Bruce Fields very seriously.  It
-  is a quite good initiative.
-
+* tree entries in index?  -- sorry, stalled
 
-Design issues
--------------
+* "intent to add" index entries?  -- together with the above
+  needs rethinking.
 
 * Plug-in file-level merges.  On the other hand, we may not even
   need this; just tell people to run "xxdiff -U" on the working
-  tree files.
-
-* Doing a merge in a separate directory.
-
-* Subprojects.  I think the "bind commit" approach has been
-  outlined at sufficiently detailed level.  Maybe find time to
-  actually start prototyping it?
-
-  <7vacdzkww3.fsf@assigned-by-dhcp.cox.net>
-
-* Make 'format-patch' take revision limiters similar to
-  rev-list.  For example:
+  tree files (or kompare).
 
-               A                  C
-       ....---x---o---o---x---o---o
-                          /
-                         /
-                        /
-       ....---x---o---o
-               B
 
-  we should be able to format commits 'o', without duplicates,
-  by:
+Technical (heavier)
+-------------------
 
-       $ git format-patch ^A ^B C
+* Libification.  There are many places "run once" mentality is
+  ingrained in the management of basic data structures, which
+  need to be fixed.  [Matthias Urlichs was already working on
+  this: <pan.2005.10.03.20.48.52.132570@smurf.noris.de>, but I
+  do not know what happened to his efforts]
 
-  Currently the closest approximation is
+* Lazy clones that can be controlled by the user, ranging from
+  totally on-demand a la CVS/SVN to "cache down to this old
+  commit so that I can make full use of git on at least recent
+  history".  This need a lot of work in making tools to exit
+  gracefully when they hit unavailable objects while offline.
 
-       $ git format-patch A..C B..C
 
-  which results in the last two commits including C formatted
-  twice.
+Technical (milder)
+------------------
 
+* git grep should be able to omit prefix when invoked from a
+  subdirectory.  Either make it an option or default with
+  --full-name like ls-files does.
 
-Technical (heavier)
--------------------
+* duplicated refspec given to "fetch-pack a a a" makes it emit
+  strange error message because it triggers the "match only
+  once" logic.  Maybe strip the dups on the input side
+  (Uwe Zeisberger
+  <20060608073857.GA5072@informatik.uni-freiburg.de>). 
 
-* Libification.  There are many places "run once" mentality is
-  ingrained in the management of basic data structures, which
-  need to be fixed.  [Matthias Urlichs is already working on
-  this: <pan.2005.10.03.20.48.52.132570@smurf.noris.de>]
+* map only parts of huge packfiles and LRU fragments of them.
+  People are starting to try git on projects with deep history
+  and/or many objects, e.g. Mozilla.
 
-* Maybe a pack optimizer.
+* upload-pack support for start fetching from any valid point on
+  the history, not just published refs. (Erik W. Biederman
+  <m164jc9ekx.fsf@ebiederm.dsl.xmission.com>)
 
-  Given a set of objects and a set of refs (probably a handful
-  branch heads and point release tags), find a set of packs to
-  allow reasonably minimum download for all of these classes of
-  people: (1) somebody cloning the repository from scratch, (2)
-  somebody who tends to follow the master branch head reasonably
-  closely, (3) somebody who tends to follow only the point
-  releases.
+* git-daemon side support for virtual hosting.  Client side
+  is ready in 1.4.0 (Jon Loeliger <1149610100.23938.75.camel@cashmere.sps.mot.com>).
 
-  This needs a matching smart on the dumb protocol downloader.
+* teach git-upload-pack not to ack-continue early when the
+  client has roots it does not know about but it already has
+  learned the fork points for all the requested heads
+  (Ralf Baechle <20060524131022.GA11449@linux-mips.org>).
 
-* Maybe an Emacs VC backend.
+* Per user .gitconfig across repositories -- ongoing.
 
-* Look at libified GNU diff CVS seems to use, or libxdiff.
-  [Daniel has his own diff tool almost ready to start
-  integrating and testing]
+* Encourage competition between annotate vs blame.  Maybe come
+  up with some nontrivial test cases.
 
+* Subprojects.  Try "gitlink" -- sorry, stalled.
 
-Technical (milder)
-------------------
+* Rebase and checkout -m should be able to use recursive
+  strategy as well.  These commands currently do not work across
+  renames.
 
 * Decide what to do about rebase applied to merged head.  One
   extreme is to allow rebase if "rev-list ours..theirs" gives
@@ -106,39 +99,16 @@ Technical (milder)
   when both branches happen to have obtained the same set of
   changes through different history.  Not recording such keeps
   the history simpler, and the next merge would soon create a
-  true merge commit anyway, but does not feel quite right.
+  true merge commit anyway, but this does not feel quite right.
 
   <20060114021800.4688.qmail@web31803.mail.mud.yahoo.com>
 
-* Perhaps a smarter HTTP anonymous download via CGI.
-
-* Prepare to enable "always use symbolic refs for HEAD" patch.
-  We need a timeline to force Porcelains to get ready.  All the
-  major ones should be ready now.
-
-* Prepare to enable "most of the things are installed in
-  GIT_EXEC_PATH not in bindir".  I do not plan to set bindir !=
-  gitexecdir myself in the main Makefile I ship, but distos
-  should be able to choose to do so.
-
-* Forbid/ignore pack names that do not conform to the convention
-  sha1_pack_name() assumes and reject in check_packed_git_idx()
-  [In "pu"]
-
-* Any Porcelain-ish we forgot or punted to make usable from
-  subdirectory?  I think the last pass caught everything and
-  what are remaining are whole-tree or whole repository
-  operations.
-
 * diff stopping at the first output; qgit wants to know if this
   tree has any A or D from the other tree and nothing else.
   Would help internal tree-diff in rev-list as well.
 
 * daemon --strict-symlink.
 
-* daemon --no-user-dir, to make ~user still work with
-  --base-path.  They ought to be independent.
-
 * daemon --base-path does not apply automatically to whitelist
   somehow feels wrong.  If somebody cares enough, accept
   patches.
@@ -146,30 +116,17 @@ Technical (milder)
 * Perhaps detect cloning request in upload-pack and cache the
   result for next cloning request until any of our refs change.
 
-* Perhaps accept patch to optionally allow '--fuzz' in
-  'git-apply'.  am/applymbox is _not_ the place to do it.
-
-* Allow 'git apply' to accept GNU diff 2.7 output that forgets
-  to say '\No newline' if both input ends with incomplete
-  lines.
-
-* Perhaps deal with "Files differ" (binary diff) in non C
-  locales.
-
 * Maybe grok PGP signed text/plain in applymbox as well.
 
-* 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].
-
 
 Technical (trivial)
 -------------------
 
-* s/naked/bare/g.
-
 * git-proxy should be spawned with sh -c 'command' $1 $2.
 
+* Maybe a true git-proxy command that reads the first request
+  pkt-line, and redirects the request to its real destination.
+
 * test scripts for the relative directory path stuff.
 
 * In a freshly created empty repository, `git fetch foo:bar`