Last mile for 1.0 again
- From
Junio C Hamano <junkio@cox.net>
- Date
- Jun 29, 2005, 07:16 UTC
- Message-ID
- <7v4qbhfxad.fsf_-_@assigned-by-dhcp.cox.net>
- In-Reply-To
- <Pine.LNX.4.58.0506282252001.14331@ppc970.osdl.org>
>>>>> "LT" == Linus Torvalds <torvalds@osdl.org> writes:
LT> ..., but please don't LT> change that, since that would be yet another incompatible pack format LT> change, and I'd like to calm things down.
Calming things down is good. Some stuff we should be looking at during calming down period are:
- Ask expert help to verify our use of zlib is OK; Linus asked for this in a message tonight. I am not qualified to do this myself.
- There is currently nothing that verifies the SHA1 sums embedded in idx and pack files. A tool for it is needed [*1*]. I may be doing this myself.
- Although there is a hook in sha1_file() that allows mapping a pack file on demand (and keep track of their uses for LRU eviction), there is currently no code to actually evict a mapped pack file. We need to add some sort of use-reference counting to lock down a pack file in use, if somebody is inclined to do this. I will not be doing this myself immediately.
- Think about what to do with the "dumb server" pull protocols regarding packed archive files (think about http-pull). I will not be doing this myself.
- Design "smart server" pull/push pair. This can independently and actively be done without impacting "calming down" period, and I am assuming Dan is already looking into this. This may result in another "deathmatch" between Dan and Jason Mcmullan, which would be fun to watch ;-).
Not limited to "calming down the packed GIT", but bigger picture pre-release preparation items I think we need to look into are:
- Update "Last mile for 1.0" list. I think the only thing that is left from the one I posted on Jun 5th is the tutorials.
Anybody interested in adding more pages to the tutorials? If there is no taker, I may start continuing what is already there, stealing example project outline from "Arch meets Hello World" [*2*].
- Double check the documentation, usage strings in the code and what the code does still match. Last time I checked, I think some files in Documentation/ directory were not reachable from the main GIT(1) page and were not touched by the build process from Documentation/Makefile. I will not be doing this myself.
- Blame/Annotate. Does anybody have a fast and correct one [*3*]?
- Publicity. Somebody may want to start preparing materials to have us included in http://better-scm.berlios.de/comparison/
[Footnotes]
*1* One possibility is to add that to fsck-cache when --full is used, but I am somewhat reluctant to do it that way. It would require you to place that "suspicious" pack under your repository's .git/objects/pack in order to verify it, which can spread the damage before you know it.
In general, idx file is relatively small, so we _could_ check the SHA1 sum for idx files when we map them at runtime in check_packed_git_idx(). However, verifying 1MB (kernel archive case) idx file every time we run a single core GIT command may be a price we would not want to pay, so I am not too enthusiastic about doing it. We certainly would not want to do this for pack files every time a pack is mapped at runtime (60MB kernel archive case).
*2* http://regexps.srparish.net/www/tutorial/html/arch.html.
I am not talking about stealing the concepts but just talking about stealing the sample project on which example players work in the sample sessions. I think its section on update/replay matches closely to merge/rebase, for example.
*3* I have what I wrote in Perl which does rename/copy/rewrite and multiple parents correctly, but it is way too slow for on-demand use.