Dear diary, on Sun, Apr 17, 2005 at 08:49:11PM CEST, I got a letter where Daniel Barkalow <[EMAIL PROTECTED]> told me that... > On Sun, 17 Apr 2005, Petr Baudis wrote: > > > Index: http-pull.c > > > =================================================================== > > > --- /dev/null (tree:d662b707e11391f6cfe597fd4d0bf9c41d34d01a) > > > +++ 157b46ce1d82b3579e2e1258927b0d9bdbc033ab/http-pull.c (mode:100644 > > > sha1:106ca31239e6afe6784e7c592234406f5c149e44) > > > + url = malloc(strlen(base) + 50); > > > > Off-by-one. What about the trailing NUL? > > I get length(base) + "object/"=8 + 40 SHA1 + 1 for '/' and 1 for NUL = 50.
Sorry, counted one '/' more. :-) > > I think you should have at least two disjunct modes - either you are > > downloading everything related to the given commit, or you are > > downloading all commit records for commit predecessors. > > > > Even if you might not want all the intermediate trees, you definitively > > want the intermediate commits, to keep the history graph contignuous. > > > > So in git pull, I'd imagine to do > > > > http-pull -c $new_head > > http-pull -t $(tree-id $new_head) > > > > So, -c would fetch a given commit and all its predecessors until it hits > > what you already have on your side. -t would fetch a given tree with all > > files and subtrees and everything. http-pull shouldn't default on > > either, since they are mutually exclusive. > > > > What do you think? > > I think I'd rather keep the current behavior and add a -c for getting the > history of commits, and maybe a -a for getting the history of commits and > their tress. I'm not too kind at this. Either make it totally separate commands, or make a required switch specifying what to do. Otherwise it implies the switches would just modify what it does, but they make it do something completely different. -a would be fine too - basically a combination of -c and -t. I'd imagine that is what Linus would want to use, e.g. > There's some trickiness for the history of commits thing for stopping at > the point where you have everything, but also behaving appropriately if > you try once, fail partway through, and then try again. It's on my queue > of things to think about. Can't you just stop the recursion when you hit a commit you already have? -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html