From: Andy Whitcroft <apw@shadowen.org>
To: git@vger.kernel.org
Subject: send-pack: limit on negative references
Date: Tue, 05 Sep 2006 13:45:03 +0100 [thread overview]
Message-ID: <44FD714F.9040003@shadowen.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 1508 bytes --]
I've been having trouble with git push apparently resending the entire
commit trace for the branch each and every time I push; even with short
branch names. This seems to be related to the changes made to handle
the case where the remote end has a large number of branches (>900).
The problem there seemed to be that we would fill list-revs' argument
list in reference order with negative and positive limits. This could
lead to us to exceed the limit 900 argument limit and bomb. The changes
made in commit 797656e58ddbd82ac461a5142ed726db3a4d0ac0 split the
parameter loading into two phases. First we load the +ve and -ve
references for the branches we are definatly trying to send; bailing if
we cannot fit those references onto the command line. Second we load up
the remaining remote references as -ve references to limit duplicate
object sends.
This second phase loads up to 16 additional references onto the command
line. Now this effectively limits you to 16 branchs in your remote
repository if you wish to ensure you catch a parental head to copy from.
This can lead us to send the entire commit stream for the branch even
though the branch may contain no new commits.
It seems to me that any and all negative references we have are helpful
and as such we should be loading as many as we can into the list. If we
cannot fit them all we should _not_ error out, but we should not limit
ourselves to any less than as many as we can fit.
Can anyone see a downside to the patch below?
-apw
[-- Attachment #2: send-pack-supply-as-many-negative-references-as-we-can-fit --]
[-- Type: text/plain, Size: 1211 bytes --]
send-pack: supply as many negative references as we can fit
In commit 797656e58ddbd82ac461a5142ed726db3a4d0ac0 list-revs' command
line was reordered to ensure the branches we are pushing are first on
the list, and then a subset of the remaining remote references are
passed to limit our push. Given that we now have the needed positive
references on the list first, it seems reasonable to load as many
negative references onto the list as will fit without error.
Signed-off-by: Andy Whitcroft <andyw@uk.ibm.com>
---
diff --git a/send-pack.c b/send-pack.c
index 10bc8bc..5d55241 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -40,7 +40,7 @@ static void exec_rev_list(struct ref *re
{
struct ref *ref;
static const char *args[1000];
- int i = 0, j;
+ int i = 0;
args[i++] = "rev-list"; /* 0 */
if (use_thin_pack) /* 1 */
@@ -69,8 +69,8 @@ static void exec_rev_list(struct ref *re
/* Then a handful of the remainder
* NEEDSWORK: we would be better off if used the newer ones first.
*/
- for (ref = refs, j = i + 16;
- i < 900 && i < j && ref;
+ for (ref = refs;
+ i < 900 && ref;
ref = ref->next) {
if (is_zero_sha1(ref->new_sha1) &&
!is_zero_sha1(ref->old_sha1) &&
next reply other threads:[~2006-09-05 12:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-05 12:45 Andy Whitcroft [this message]
2006-09-05 16:23 ` send-pack: limit on negative references Junio C Hamano
2006-09-05 21:32 ` Andy Whitcroft
2006-09-05 21:51 ` [PATCH 1/2] rev list add option accepting revision constraints on standard input Andy Whitcroft
2006-09-05 22:10 ` Junio C Hamano
2006-09-06 1:01 ` Andy Whitcroft
2006-09-06 4:46 ` Junio C Hamano
2006-09-05 21:52 ` [PATCH 2/2] send pack switch to using git rev list stdin Andy Whitcroft
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=44FD714F.9040003@shadowen.org \
--to=apw@shadowen.org \
--cc=git@vger.kernel.org \
/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).