-Done in 0.99.8
+Done in 0.99.9
==============
+Ports
+~~~~~
+
+* Cygwin port [HPA].
+
+* OpenBSD build [Merlyn and others].
+
+
+Fixes
+~~~~~
+
+* clone request over git native protocol from a repository with
+ too many refs did not work; this has been fixed.
+
+* git-daemon got safer for kernel.org use [HPA].
+
+* Extended SHA1 parser was not enforcing uniqueness for
+ abbreviated SHA1; this has been fixed.
+
+* http transport does not barf on funny characters in URL.
+
+* The ref naming restrictions have been formalized and the
+ coreish refuses to create funny refs; we still need to audit
+ importers. See git-check-ref-format(1).
+
+
New Features and Commands
~~~~~~~~~~~~~~~~~~~~~~~~~
-* 'git pull' now uses 'git-merge' instead of 'git-resolve', so you can
- specify alternative merge strategy to use on its command line.
+* .git/config file as a per-repository configuration mechanism,
+ and some commands understand it [Linus]. See
+ git(7).
-* 'git pull -s recursive' has been taught about renaming merges,
- which may deal with HPA's klibc vs klibc-kbuild situation better.
+* The core.filemode configuration item can be used to make us a
+ bit more FAT friendly. See git(7).
-* 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.
+* The extended SHA1 notation acquired Peel-the-onion operator
+ ^{type} and ^{}. See git-rev-parse(1).
- 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".
+* SVN importer [Matthias]. See git-svnimport(1).
-* A couple of new diff options (-l<num> and --name-status).
+* .git/objects/[0-9a-f]{2} directories are created on demand,
+ and removed when becomes empty after prune-packed [Linus].
-* Commit walker over http acquired more SSL options.
+* Filenames output from various commands without -z option are
+ quoted when they embed funny characters (TAB and LF) using
+ C-style quoting within double-quotes, to match the proposed
+ GNU diff/patch notation [me, but many people contributed in
+ the discussion].
-* 'git clone' checks out the working tree by default.
+* git-mv is expected to be a better replacement for git-rename.
+ While the latter has two parameter restriction, it acts more
+ like the regular 'mv' that can move multiple things to one
+ destinatino directory [Josef Weidendorfer].
+* git-checkout can take filenames to revert the changes to
+ them. See git-checkout(1)
-Fixes
-~~~~~
+* The new program git-am is a replacement for git-applymbox that
+ has saner command line options and a bit easier to use when a
+ patch does not apply cleanly.
+
+* git-ls-remote can show unwrapped onions using ^{} notation, to
+ help Cogito to track tags.
+
+* git-merge-recursive backend can merge unrelated projects.
+
+* git-clone over native transport leaves the result packed.
+
+* git-http-fetch issues multiple requests in parallel when
+ underlying cURL library supports it [Nick and Daniel].
-* Removed unused commands (diff-helper, rev-tree, and export).
+* git-fetch-pack and git-upload-pack try harder to figure out
+ better common commits [Johannes].
-* Platforms with only Python 2.3 installed can use recursive merge
- strategy.
+* git-read-tree -u removes a directory when it makes it empty.
-* Octopus documented.
+* git-diff-* records abbreviated SHA1 names of original and
+ resulting blob; this sometimes helps to apply otherwise an
+ unapplicable patch by falling back to 3-way merge.
-* Merge is more careful noticing potentially ambiguous situation.
+* git-format-patch now takes series of from..to rev ranges and
+ with '-m --stdout', writes them out to the standard output.
+ This can be piped to 'git-am' to implement cheaper
+ cherry-picking.
-* Git pull does not blindly do Octopus when Pull: lines in remotes
- file specifies more than one remote branches.
+* git-tag takes '-u' to specify the tag signer identity [Linus].
-* Commit walker got safer to use after interrupted downloads.
+* git-rev-list can take optional pathspecs to skip commits that
+ do not touch them (--dense) [Linus].
-* Commit walker over http can resume partial downloads.
+* Comes with new and improved gitk [Paulus and Linus].
-* More portability fixes for BSD and Solaris.
Tool Renames Plan
=================
- - In 0.99.9, the backward compatible symbolic links in
- $(bindir) will be removed.
+ - Immedately after 0.99.9, the backward compatible symbolic
+ links in $(bindir) will be removed.
git-ssh-push and git-ssh-pull pair is not going away if ever.
Each of these old-name commands continues to invoke its
old-name counterpart on the other end.
-What to expect after 0.99.8
+What to expect after 0.99.9
===========================
This is written in a form of to-do list for me, so if I say
Documentation
-------------
-* Document the ref naming restrictions [DONE].
-
-* David Ho's report suggests whatchanged documentation should
- mention -m as "commonly used options". Steal Linus'
- response [DONE].
-
* Help Jon Loeliger to find place in the documentation to place
his drawing.
Technical (heavier)
-------------------
-* 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
- file for this. Also this itself may turn out to be a bad
- idea, making the set of packs in repositories everybody has
- different from each other. [DONE; git-index-pack by Sergey,
- tweaking clone by me]
-
* 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
[Daniel has his own diff tool almost ready to start
integrating and testing; Post 1.0]
-* Accept patches to fetch multiple objects by HTTP in parallel.
- [DONE]
-
* Plug-in file-level merges [Post 1.0].
-* Per-repository configuration mechanism [DONE by Linus].
-
Technical (milder)
------------------
-* Merlyn reports trouble with http fetch [Hopefully solved by
- Nick's updates].
-
* Maybe look at Cogito and see if I can help Pasky to adjust to
the later core features? Zack Brown's "cg-seek leaving empty
directories" problem is a good example of this.
* Perhaps detect cloning request in upload-pack and cache the
result for next cloning request until any of our refs change.
-* Perhaps accept more "want"s in upload-pack and do something
- intelligent about it [Ongoing, by Johannes].
-
-* Perhaps send less "want"s from fetch-pack [DONE by JS].
-
-* Look at svn importer Smurf has. There is a small cvsimport
- update in his tree as well [DONE].
-
-* Decide the notation of "peeling the onion" operator, and
- implement it in sha1_name.c. Perhaps postfix "^{}" to mean
- "peel and expect anything", "^{blob}" to mean "peel and barf
- unless blob". The current "^0" becomes shorthand for
- "^{commit}". [DONE]
-
-* Quote the URL so that libcurl's metecharacter mechanism would
- not kick in [DONE].
-
-* Review the Makefile variables and exporting rules for them,
- while looking at prefix passing by Kai Ruemmler [DONE].
-
-* Review the 'sparse object database' change by Linus and move
- the first phase of it to the "master" branch [DONE].
-
-* Decide on mmap(). I am inclined to just stick to mmap
- replacement by Johannes Schindelin and do nothing else right
- now, except perhaps drop the writing-back support [DONE].
-
-* Revisit Santi's patch to move commit temorary files out of the
- working tree toplevel [DONE].
-
-* More generally, review the use of temporary files again.
- Assuming writable $GIT_DIR is more acceptable, but the
- working tree toplevel may not be in a rare usage pattern.
-
* Encourage concrete proposals to commit log message templates
we discussed some time ago.
-* Accept patches to cause "read-tree -u" delete a directory when
- it makes it empty [DONE].
-
* Perhaps accept patches to do undo/redo.
* Perhaps accept patch to optionally allow '--fuzz' in
to say '\No newline' if both input ends with incomplete
lines.
-* What to do with TABs and LFs in pathnames without breaking GNU
- patch? [DONE -- go with GNU patch extension proposed by Paul].
-
-* Adjust apply.c to proposed GNU patch extension that quotes \n
- and \t in C style, inside "". [DONE]
-
-* Adjust diff.c to the same. [DONE]
-
* Maybe grok PGP signed text/plain in applymbox as well.
-* Perhaps a tool to revert a single file to pre-modification
- 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 [DONE with a prodding by Linus].
-
* Enhance "git repack" to not always use --all; this would be
handy if the repository contains wagging heads like "pu" in
git.git repository.
external spec sent out with a quick hack. Will know if that
is what he needs hopefully soon].
-* An mechanism to ignore filesystem mode bits altogether [DONE].
-
Technical (trivial)
-------------------
-* Peter Hagervall's sparse fix [DONE].
-
-* Alex Riesen reported that hooks are in effect in tests.
- Should fix [DONE].
-
-* Disallow [\001-\040\177] byte values from ref names. Also we
- need to disallow ':' (used in refspec), '^' and '~' (postfix
- "peel the onion" operators), and '..' ("ref1..ref2" notation
- becomes ambiguous otherwise) [DONE].
-
-* Update fetch-pack and clone-pack to ignore funny refs from the
- other end, while making sure peek-remote does not discard them.
- [DONE]
-
-* Update upload-pack to send tag^{}. This would hopefully help
- Pasky's automated tag tracking, and also Martin's findtags.
- [DONE]
-
-* Adjust update-index to quoted --index-info [DONE].
-
-* Prepare apply.c changes for maint branch (0.99.8e) [DONE].
-
-* Perhaps show ^{commit}, ^{tree} instead of ^{} from ls-remote? [NO]
-
-* Re-adjust maint branch for the above if we did so. [NOT NEEDED]
-
-* short SHA1 naming is not enforcing uniqueness. Should fix [DONE].
-
-* 'git repack' can be DOSed. Should fix [DONE].
-
* Stop installing the old-name symlinks [IN 0.99.9].
* 'git merge-projects'?