From 27442c64acd1f12e613a6a5c59c4d476df584160 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 2 Oct 2005 16:52:26 -0700 Subject: [PATCH] GIT 0.99.8 Signed-off-by: Junio C Hamano --- HAVEDONE | 106 ++++++++++++++-------------------------------------------- TODO | 114 ++++++++++++--------------------------------------------------- 2 files changed, 47 insertions(+), 173 deletions(-) diff --git a/HAVEDONE b/HAVEDONE index aeccb128..54455589 100644 --- a/HAVEDONE +++ b/HAVEDONE @@ -1,104 +1,48 @@ -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 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. diff --git a/TODO b/TODO index 86804478..20dfbd09 100644 --- a/TODO +++ b/TODO @@ -9,29 +9,17 @@ The GIT To-Do File 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 @@ -47,9 +35,6 @@ Documentation 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 @@ -58,8 +43,6 @@ Documentation * 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. @@ -75,20 +58,6 @@ Documentation 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 @@ -96,6 +65,14 @@ Technical (heavier) 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. @@ -114,37 +91,9 @@ Technical (heavier) 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. @@ -187,41 +136,22 @@ Technical (milder) 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 -- 2.11.0