From: Petr Baudis Date: Sat, 24 Sep 2005 12:50:01 GMT Subject: Re: Cogito: cg-clone doesn't like packed tag objects Message-ID: <20050924125001.GB25069@pasky.or.cz> In-Reply-To: <7vvf0r6x97.fsf@assigned-by-dhcp.cox.net> Dear diary, on Sat, Sep 24, 2005 at 04:00:04AM CEST, I got a letter where Junio C Hamano told me that... > Petr Baudis writes: > > > It takes loooong time, unfortunately - scp -r takes its time itself on > > many small files, and then we have to make a separate call to > > git-ssh-fetch for each tag. Isn't that braindamaged... :/ > > I think you could run git-peek-remote to find all the refs and > then run git-fetch-pack to slurp all the tags (and heads for > that matter) at once. Is there a particular reason you would > prefer the commit walker? Actually, probably not, except consistency with rsync and http handling - but that's obviously not too good reason. I did it this way since I'm going to be a bit busy again from now on. I will probably rewrite the tags fetching to use git-peek-remote (info/refs for http) the next weekend. One problem with this is that in many repositories, git-update-server-info does not get ever run and things would break "mysteriously". I don't want the policy that the user has to take care of this on his own for Cogito, so I will probably add something that will automagically append git-update-server-info at least to the post-update hook (like uphook="$_git/hooks/update-post" if ! [ -x "$uphook" ]; then if ! [ -e "$uphook" ]; then echo '#!/bin/sh' >>"$uphook" echo 'exec git-update-server-info' >>"$uphook" fi # If the user added something custom and left the hook # disabled, he knew what he was doing. Also don't # reenable the hook if we already did that once. if [[ "$(grep -v '^#\($\|[^#]\)\|^$' "$uphook")" == "*exec git-update-server-info*" ]]; then chmod a+x "$uphook" echo "## Enabled by Cogito. It won't try to enable it again as long as this comment is here." >>"$uphook" fi fi or something). Actually, I might also add something like [ -e "$_git/git-dummy-support" ] && git-update-server-info at all the places in Cogito where I update the refs. Then the default post-update hook could change to [ -e "$_git/git-dummy-support" ] && exec git-update-server-info and be enabled by default? -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ VI has two modes: the one in which it beeps and the one in which it doesn't.