Re: Cogito: cg-clone doesn't like packed tag objects
- From
Petr Baudis <pasky@suse.cz>
- Date
- Sep 24, 2005, 12:50 UTC
- 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 <junkio@cox.net> told me that...
Show 10 quoted lines
> Petr Baudis <pasky@suse.cz> 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.