From 11d56b155cc478fa4708d457d9c8e50bb0f39fe9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 18 Sep 2005 10:46:33 -0700 Subject: [PATCH] Really prepare for 0.99.7 Signed-off-by: Junio C Hamano --- HAVEDONE | 104 +++++++++++++++++++++++++++++++++++++++++++++++ TODO | 138 +++++++++++++++++++++++---------------------------------------- 2 files changed, 154 insertions(+), 88 deletions(-) create mode 100644 HAVEDONE diff --git a/HAVEDONE b/HAVEDONE new file mode 100644 index 00000000..aeccb128 --- /dev/null +++ b/HAVEDONE @@ -0,0 +1,104 @@ +Done in 0.99.7 +============== + +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*]. + +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. + +Importing from tla archives has been improved and documentated. + +'git branch' command acquired '-d' flag to delete a branch that +has already been merged into the current branch. + +'git bisect' command is easier to use by logging the earlier +good/bad choices and make it replayable. + +'git repack' has -a' flag to pack the whole repository into a +single pack. + +'git grep' is a new command to run grep on files 'git' knows +about. + + +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. + +* 'git daemon' port is registered with IANA. + +* Many documentation updates. + + +[Footnotes] +*1* http://www.kernel.org/pub/software/scm/git/docs/glossary.html + +*2* Ancient environment variable names: SHA1_FILE_DIRECTORIES +AUTHOR_DATE AUTHOR_EMAIL AUTHOR_NAME COMMIT_AUTHOR_EMAIL +COMMIT_AUTHOR_NAME SHA1_FILE_DIRECTORY + +*3* But not grafts. + diff --git a/TODO b/TODO index fe18dd31..6e5409c1 100644 --- a/TODO +++ b/TODO @@ -1,15 +1,13 @@ -What to expect after 0.99.6 -=========================== +The GIT To-Do File +================== -This is written in a form of to-do list for me, so if I say -"accept patch", it means I do not currently plan to do that -myself. People interested in seeing it materialize please take -a hint. The latest copy of this document is found at + 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 ------------------ +================= - All non-binary commands will lose -script suffix in $(bindir). The source to git-foo will be either git-foo.sh @@ -37,12 +35,10 @@ Tool Renames Plan - In 0.99.7, all renamed commands will have symbolic links in $(bindir) so that old names continue to work. These backward - compatible symlinks will not be present in documentation, - though. Especially, the main documentation, git(7) will talk - about the new names. Old environment names defined in - gitenv() will also be removed in this release. - - Tentatively we aim to do this on Sep 17th. + 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 do not install these backward compatible symbolic links in $(bindir) anymore. The Makefile will have @@ -54,6 +50,15 @@ Tool Renames Plan find this schedule too tight. +What to expect after 0.99.7 +=========================== + +This is written in a form of to-do list for me, so if I say +"accept patch", it means I do not currently plan to do that +myself. People interested in seeing it materialize please take +a hint. + + Documentation ------------- @@ -95,16 +100,6 @@ Technical (heavier) me, and Daniel outlined a smarter merge strategy for this. Try them out. -* To make it easier to experiment with different merge - strategies, make git-merge driver that will run merge backends - for the best merge [DONE]. - -* Sort out the mess objects/info/alternates introduces on the - client end. Both rsync and commit walkers are broken. - * describe current situation [DONE] - * http [Daniel started] - * rsync - * 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 @@ -112,6 +107,10 @@ Technical (heavier) idea, making the set of packs in repositories everybody has different from each other. +* 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. @@ -120,41 +119,18 @@ Technical (heavier) Technical (milder) ------------------ -* Define semantics for relative pathnames in objects/info/alternates. - Either relative to 'objects', or relative to the top of project tree - ;the latter is consistent with GIT_ALTERNATE_OBJECT_DIRECTORIES. - Perhaps would end up doing the former because we would want to be - consistent between a naked repository and a repository with working - tree [DONE]. - -* Tool renames. Give fixup patch for at least Cogito and StGIT - [DONE]. - -* Massage ssh-fetch and ssh-upload to be more backward - compatible. - -* Have Daniel's read-tree graduate from "pu" after plugging - leaks [DONE]. - -* Implement a merge backend using Daniel's read-tree [DONE]. - -* Rename 'git-merge-resolve' to 'git-merge-stupid' and - 'git-merge-multibase' to 'git-merge-resolve'; the former is - for historical curiosity and comparison purposes only and not - to be used in real applications so remove it from the default - strategies list [DONE]. - -* Accept Fredrik merge after renaming it (I want to name the - driver 'git merge'). Suggest where to place *.py stuff -- - probably in $(share)/git-core/ and add Makefile entry for - installation [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 INITIAL CUT]. * Encourage concrete proposals to commit log message templates we discussed some time ago. -* Bug Martin for archimport script documentation [DONE]. +* Accept patches for more portability. -* More portability [IN PROGRESS]. + * strcasestr() in mailinfo. We may need compat/strcasestr.c; + this is bugging OpenBSD folks. * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -167,6 +143,10 @@ Technical (milder) * 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 @@ -175,18 +155,6 @@ Technical (milder) the command be called? git-revert is taken so is git-checkout. -* A tool to detect, show and prune already merged topic - branches [DONE; 'branch -d' to prune; users can do gitk for - deciding]. - -* "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. - - Do not name it /lost+found/; that would probably confuse - things that mistake it a mount point (not our code but - somebody else's). - * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. @@ -197,15 +165,6 @@ Technical (milder) repository; experiment if this results in a reasonable workflow, and document it in howto form if it does. -* Option to limit rename detection for more than N paths. - -* diffcore-rename leak reintroduced because the 'fix' was - broken [DONE]. - -* Marking copy seems to be broken when A,B => B,C rename - happens; we incorrectly say B stays, which makes the new B - copy of old A, not rename [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 @@ -215,29 +174,32 @@ Technical (milder) just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. -* Allow 'git apply' to accept GNU diff 2.7 output that forgets - to say '\No newline' if both input ends with incomplete - lines. +* Remove obsolete commands [READY]. + +* Option to limit rename detection for more than N paths [READY]. + +* Option to show only status and name from diff [READY]. Technical (trivial) ------------------- -* Add simple globbing rules for git-show-branch so that I can - say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and - ko-rc are in refs/tags/). +* 'git add --recursive'? -* Deal with CDPATH [DONE]. +* 'git merge-projects'? -* Teach 'git format-patch' about 'git cherry' [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 + feeler patch sent out. Very underwhelming response X-<.] -* Make 'git bisect' easier to use by logging the earlier - good/bad choices and make it replayable [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). -* Perhaps "git branch -d" to delete a branch. We probably need - some way to say "delete this branch because everything in this - should be merged in the master branch" and refuse the removal - if it is not true [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 -- 2.11.0