-Done in 0.99.7
+Done in 0.99.8
==============
-Organization
-~~~~~~~~~~~~
-
-Some commands and most scripts are renamed for consistency.
-
- - We have an official standard terminology list [*1*]. To
- match this, commands that operate on index files now have
- 'index' instead of 'cache' in their names, and ones that
- download are called 'fetch' instead of 'pull'.
-
- - We used to install most of the commands that happen to be
- implemented as scripts as 'git-*-script', which was
- cumbersome to remember and type unless you always used 'git'
- wrapper. They lost '-script' suffix from their names.
-
-For now, we install synonyms as symbolic links so that old
-names continue to work, but they are planned to be removed in
-0.99.8 (or later if there are enough objections on the list --
-so far I have heard none).
-
-Also ancient environment variables [*2*] are not supported
-anymore.
-
-
New Features and Commands
~~~~~~~~~~~~~~~~~~~~~~~~~
-Downloaders that are not fully git aware have been taught about
-the mechanism to borrow objects from other repositories via
-objects/info/alternates the server side may be using. 'git
-fetch' and 'git pull' commands over rsync and http transport
-should be able to handle such repositories [*3*].
+* 'git pull' now uses 'git-merge' instead of 'git-resolve', so you can
+ specify alternative merge strategy to use on its command line.
-People found interesting cases where the 'stupid' three-way
-merge mechanism does the wrong thing without noticing. We have
-two new merge algorithms by Daniel and Fredrik that attempt to
-do better in such cases. A new 'git merge' command has been
-introduced to make it easier to experiment with and choose among
-different merge strategies. Note that 'git pull' still uses the
-traditional three-way merge after downloading, but it is
-expected to be switched to use 'git merge' sometime in the
-future.
+* 'git pull -s recursive' has been taught about renaming merges,
+ which may deal with HPA's klibc vs klibc-kbuild situation better.
-Importing from tla archives has been improved and documentated.
+* Symbolic refs -- instead of using symlinks to express .git/HEAD,
+ you can have a regular file that stores a single line
+ 'ref: refs/heads/master' in it.
-'git branch' command acquired '-d' flag to delete a branch that
-has already been merged into the current branch.
+ git-update-ref is the preferred way to write into .git/HEAD,
+ not "echo >.git/HEAD". git-symbolic-ref is the preferred way
+ to check which underlying ref a symbolic ref .git/HEAD refers
+ to, not "readlink .git/HEAD".
-'git bisect' command is easier to use by logging the earlier
-good/bad choices and make it replayable.
+* A couple of new diff options (-l<num> and --name-status).
-'git repack' has -a' flag to pack the whole repository into a
-single pack.
+* Commit walker over http acquired more SSL options.
-'git grep' is a new command to run grep on files 'git' knows
-about.
+* 'git clone' checks out the working tree by default.
Fixes
~~~~~
-* 'git-diff-*' commands used to mark copy/rename incorrectly
- when an (A,B) => (B,C) rename was made. We said the new B is
- a copy of old A, not a rename of old A.
-
-* When the user exported CDPATH into environment, 'cd' took
- scripts to unexpected places. Unset it upfront to guard us.
-
-* 'git format-patch' knows about 'git cherry' and skips patches
- already merged upstream.
-
-* hopefully plugged memory leak in diffcore-rename properly.
-
-* commit walkers incorrectly assumed having a commit means we
- have the whole history leading up to it -- which is not true
- if the previous download was interrupted. As a safety
- measure, we now only trust the commits that are pointed by the
- existing refs.
-
-* 'git rev-list' uses a lot less memory.
-
-* The build should be a bit friendlier to Solaris and Darwin now.
-
-* 'git ssh-{push,pull}' are friendlier to tcsh.
-
-* http transport is nicer to caching proxies.
+* Removed unused commands (diff-helper, rev-tree, and export).
-* 'git daemon' port is registered with IANA.
+* Platforms with only Python 2.3 installed can use recursive merge
+ strategy.
-* Many documentation updates.
+* Octopus documented.
+* Merge is more careful noticing potentially ambiguous situation.
-[Footnotes]
-*1* http://www.kernel.org/pub/software/scm/git/docs/glossary.html
+* Git pull does not blindly do Octopus when Pull: lines in remotes
+ file specifies more than one remote branches.
-*2* Ancient environment variable names: SHA1_FILE_DIRECTORIES
-AUTHOR_DATE AUTHOR_EMAIL AUTHOR_NAME COMMIT_AUTHOR_EMAIL
-COMMIT_AUTHOR_NAME SHA1_FILE_DIRECTORY
+* Commit walker got safer to use after interrupted downloads.
-*3* But not grafts.
+* Commit walker over http can resume partial downloads.
+* More portability fixes for BSD and Solaris.
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 still install the backward compatible
+ symbolic links in $(bindir). These will however be removed
+ before 1.0 happens.
- - 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.
+ 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.
- 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
+What to expect after 0.99.8
===========================
This is written in a form of to-do list for me, so if I say
migration and update the cvs-migration documentation.
Link the documentation from the main git.txt page.
-* Accept patches from people who were hit by shiny blue bat to
- 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
* Maybe update tutorial with a toy project that involves two or
three developers..
-* Document octopus [Linus prodded me again; DONE].
-
* Update tutorial to cover setting up repository hooks to do
common tasks.
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.
- [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. 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.
We would need a tool to generate an idx file out of a pack
idea, making the set of packs in repositories everybody has
different from each other.
+* Git daemon, when deployed at kernel.org, might turn out to be
+ quite a burden, since it needs to generate customized packs
+ every time a new request comes in. It may be worthwhile to
+ precompute some packs for popular sets of heads downloaders
+ have and serve that, even if that could give more than the
+ client asks for in some cases. We will know about this soon
+ enough.
+
* Libification. There are many places "run once" mentality is
ingrained in the management of basic data structures, which
need to be fixed.
Technical (milder)
------------------
-* Use 'git-update-ref' in the scripts [DONE].
-
-* Use symbolic refs in .git/HEAD. Should we do that everywhere
- while honoring the symlinked HEAD in the existing repositories
- for backward compatibility, or just only when 'ln -s' fails?
- [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 [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.
-* Accept patches for more portability.
-
- * strcasestr() in mailinfo. We may need compat/strcasestr.c;
- this is bugging OpenBSD folks [DONE, thanks to Linus and
- others].
-
- * Solaris portability [ONGOING, thanks to Patrick Mauritz,
- Peter Eriksen and Sean from sympatico].
-
* Accept patches to cause "read-tree -u" delete a directory when
it makes it empty.
just the basename, and see the improved clustering results in
better packing [Tried, but did not work out well].
-* Remove obsolete commands [DONE].
-
-* Option to limit rename detection for more than N paths [DONE].
-
-* Option to show only status and name from diff [DONE].
-
-* What to name the 'master' version between 0.99.7 and 0.99.8
- and still not break binary distribution folks? 0.99.7z?
- Pasky gave me a good one: 0.99.7.GIT [DONE]
-
-* Listing more than one head on the Pull: line of .git/remotes/
- allows you to make Octopus -- is it useful? Probabaly not.
- Either adopt "only the first head is used for the merge by
- default if taken from .git/remotes/ file", or "list heads to
- merge on a separate Merge: line" proposal. I already have the
- code to do the former, so... [DONE, open for improvement
- patches but not just suggestions nor complaints.]
+* Updated git-changes-script Jeff Garzik needs [Inquiry for
+ external spec sent out with a quick hack. Will know if that
+ is what he needs soon enough].
Technical (trivial)
-------------------
-* Usher SSL enhancements to http-fetch from Nick Hengeveld into
- a shape acceptable by everybody [DONE].
+* short SHA1 naming is not enforcing uniqueness. Should fix.
-* Require tk 2.4 in the spec file [DONE].
+* 'git repack' can be DOSed. Should fix.
-* show-branch naming heads is buggy [DONE].
-
-* Stop installing the old-name symlinks [DONE].
+* Stop installing the old-name symlinks [POSTPONED].
* 'git merge-projects'?
-* 'git clone' does not check things out [DONE].
-
* '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