From: Petr Baudis <pasky@suse.cz>
To: Jon Smirl <jonsmirl@gmail.com>
Cc: git <git@vger.kernel.org>
Subject: Re: local clone performance
Date: Thu, 27 Jul 2006 20:15:54 +0200 [thread overview]
Message-ID: <20060727181554.GD13776@pasky.or.cz> (raw)
In-Reply-To: <9e4733910607261637w75c99a2ehcb25b6c81449d298@mail.gmail.com>
Dear diary, on Thu, Jul 27, 2006 at 01:38:00AM CEST, I got a letter
where Jon Smirl <jonsmirl@gmail.com> said that...
> Comparing git-clone to cg-clone
>
> [jonsmirl@jonsmirl apps]$ time git-clone git foo
> ......
> real 0m5.755s
> user 0m4.548s
> sys 0m0.512s
>
> [jonsmirl@jonsmirl apps]$ time cg-clone git foo
> ....
> real 0m18.970s
> user 0m10.737s
> sys 0m1.392s
>
> Why does it take cg clone so long to set up the missing tags?
> git-clone is over 3x faster.
How many tags do you have?
It's true that cg-clone does not scale very well with big amounts of
tags, because it won't fetch tagged objects you wouldn't get otherwise
(so if you tagged some random huge blob or a history line which is not
part of any branch you have, cg-clone won't grab it all). This
unfortunately costs us one special fetch invocation per tag; I will look
into hacking git-local-fetch to accept multiple commit ids at once, that
should speed it up considerably.
That said, with cg-clone -a I will be able to cut that difference
entirely and blindly take everything from the other repository.
Could you please try the patch below and check if it has at least
any measurable impact on the performance at all? Thanks.
diff --git a/cg-fetch b/cg-fetch
index a6e6959..23e0e77 100755
--- a/cg-fetch
+++ b/cg-fetch
@@ -54,7 +54,6 @@ _git_wc_unneeded=1
fetch_progress()
{
- [ $verbose -ge 2 ] && exec cat
if [ -t 1 ]; then
exec "${COGITO_LIB}"cg-Xfetchprogress "$_git_objects"
else
@@ -166,7 +165,11 @@ fetch_http()
{
whead=
[ "$3" ] && whead="-w $3"
- (git-http-fetch -a -v $whead $recovery "$1" "$2/" 2>&1 /dev/null) | fetch_progress
+ if [ $verbose -ge 2 ]; then
+ git-http-fetch -a -v $whead $recovery "$1" "$2/"
+ else
+ (git-http-fetch -a -v $whead $recovery "$1" "$2/" 2>&1 /dev/null) | fetch_progress
+ fi
return ${PIPESTATUS[0]}
}
@@ -197,7 +200,11 @@ fetch_local()
{
whead=
[ "$3" ] && whead="-w $3"
- (git-local-fetch -a -l -v $whead $recovery "$1" "$2" 2>&1 /dev/null) | fetch_progress
+ if [ $verbose -ge 2 ]; then
+ git-local-fetch -a -l -v $whead $recovery "$1" "$2"
+ else
+ (git-local-fetch -a -l -v $whead $recovery "$1" "$2" 2>&1 /dev/null) | fetch_progress
+ fi
return ${PIPESTATUS[0]}
}
@@ -230,6 +237,7 @@ fetch_tags()
# if so, fetch the tag -- which should be
# a cheap operation -- to complete the chain.
echo -n "Missing tag ${tagname#tags/}... "
+ local verbose=2
if $fetch "$tagname" "$uri" "$tagname" 2>/dev/null >&2; then
echo "retrieved"
else
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Snow falling on Perl. White noise covering line noise.
Hides all the bugs too. -- J. Putnam
next prev parent reply other threads:[~2006-07-27 18:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-26 23:38 local clone performance Jon Smirl
2006-07-27 18:15 ` Petr Baudis [this message]
2006-07-27 18:36 ` Jon Smirl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060727181554.GD13776@pasky.or.cz \
--to=pasky@suse.cz \
--cc=git@vger.kernel.org \
--cc=jonsmirl@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).