From: Junio C Hamano <gitster@pobox.com>
To: PJ Hyett <pjhyett@gmail.com>
Cc: "Shawn O. Pearce" <spearce@spearce.org>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
git@vger.kernel.org
Subject: Re: Bad objects error since upgrading GitHub servers to 1.6.1
Date: Tue, 27 Jan 2009 17:32:10 -0800 [thread overview]
Message-ID: <7vk58gz04l.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <7vvds0z1c1.fsf@gitster.siamese.dyndns.org> (Junio C. Hamano's message of "Tue, 27 Jan 2009 17:06:06 -0800")
Junio C Hamano <gitster@pobox.com> writes:
> PJ Hyett <pjhyett@gmail.com> writes:
> ...
>> The new alternates code in 1.6.1 sounds like that could be the issue.
>
> It could be.
>
> With the old server, when project A has a forked project A1, and A1
> borrows (via alternates) objects from A, pushing into A1 did not look at
> refs in A's repository (this all happens on the server end).
>
> With the new server, the server side also advertises the tips of A's
> branches as commits that are fully connected, when the client side tries
> to push into A1. Older clients ignored this advertisement, so when they
> pushed into A1, because their push did not depend on what's in repository
> A on the server end, did not get affected if repository A (not A1) is
> corrupted. A new client talking to the server would be affected because
> it believes what the server says.
>
> Older client ignores this advertisement, so if you are seeing trouble
> reports from people who use older clients, then you can dismiss this
> conjecture as unrelated. But if you see the issue only from people with
> new clients, this could be just exposing a repository corruption of A (not
> A1) on the server end that people did not know about before.
The extra "we also have these" advertisement happened as a result of this
discussion:
http://thread.gmane.org/gmane.comp.version-control.git/95072/focus=95256
I think I know what is going on.
Consider this sequence of events.
(0) Alice creates a project and pushes to public.
alice$ cd $HOME/existing-tarball-extract
alice$ git init
alice$ git add .
alice$ git push /pub/alice.git master
(1) Bob forks it.
bob$ git clone --bare --reference /pub/alice.git /pub/bob.git
(2) Bob clones his.
bob$ cd $HOME && git clone /pub/bob.git bob
(3) Alice works more and pushes
alice$ edit foo
alice$ git add foo
alice$ git commit -a -m 'more'
alice$ git push /pub/alice.git master
(4) Bob works more and tries to push to his.
bob$ cd $HOME/bob
bob$ edit bar
bob$ git add bar
bob$ git commit -a -m 'yet more'
bob$ git push /pub/bob.git master
Now, the new server advertises the objects reachable from alice's branch
tips as usable cut-off points for pack-objects bob will run when sending.
And new builtin-send-pack.c has new code that feeds "extra" refs as
^SHA1\n
to the pack-objects process.
The latest commit Alice created and pushed into her repository is one such
commit.
But the problem is that Bob does *NOT* have it. His "push" will run pack
object telling it that objects reachable from Alice's top commit do not
have to be sent, which was the whole point of doing this new "we also have
these" advertisement, but instead of ignoring that unknown commit,
pack-objects would say "Huh? I do not even know that commit" and dies.
This can and should be solved by client updates, as 1.6.1 server can work
with older client just fine.
next prev parent reply other threads:[~2009-01-28 1:33 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-27 23:04 Bad objects error since upgrading GitHub servers to 1.6.1 PJ Hyett
2009-01-27 23:10 ` PJ Hyett
2009-01-27 23:37 ` Johannes Schindelin
2009-01-27 23:39 ` Shawn O. Pearce
2009-01-27 23:51 ` Junio C Hamano
2009-01-28 0:15 ` PJ Hyett
2009-01-28 0:34 ` PJ Hyett
2009-01-28 1:06 ` Junio C Hamano
2009-01-28 1:32 ` Junio C Hamano [this message]
2009-01-28 1:38 ` [PATCH] send-pack: Filter unknown commits from alternates of the remote Björn Steinbrink
2009-01-28 1:47 ` Junio C Hamano
2009-01-28 3:33 ` Junio C Hamano
2009-01-28 3:58 ` Björn Steinbrink
2009-01-28 4:13 ` Junio C Hamano
2009-01-28 4:32 ` Junio C Hamano
2009-01-28 1:44 ` Bad objects error since upgrading GitHub servers to 1.6.1 Junio C Hamano
2009-01-28 1:57 ` PJ Hyett
2009-01-28 2:02 ` Shawn O. Pearce
2009-01-28 3:09 ` Junio C Hamano
2009-01-28 3:30 ` Shawn O. Pearce
2009-01-28 3:52 ` Stephen Bannasch
2009-01-28 3:57 ` Shawn O. Pearce
2009-01-28 5:44 ` Junio C Hamano
2009-01-28 4:38 ` Junio C Hamano
2009-01-28 4:41 ` Shawn O. Pearce
2009-01-28 7:14 ` Junio C Hamano
2009-01-28 7:41 ` Junio C Hamano
2009-01-28 7:51 ` [PATCH 1/2] send-pack: do not send unknown object name from ".have" to pack-objects Junio C Hamano
2009-01-28 15:45 ` Bad objects error since upgrading GitHub servers to 1.6.1 Linus Torvalds
2009-01-28 19:00 ` Junio C Hamano
2009-01-28 7:55 ` Jeff King
2009-01-28 8:05 ` Junio C Hamano
2009-01-28 8:17 ` Jeff King
2009-01-28 16:16 ` Shawn O. Pearce
2009-01-28 18:16 ` Jeff King
2009-01-28 18:26 ` Junio C Hamano
2009-01-28 8:22 ` Junio C Hamano
2009-01-28 9:24 ` Jeff King
2009-01-28 16:09 ` Shawn O. Pearce
2009-01-28 16:38 ` Nicolas Pitre
2009-01-28 18:11 ` Jeff King
2009-01-28 1:00 ` Linus Torvalds
2009-01-28 1:15 ` Björn Steinbrink
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=7vk58gz04l.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=pjhyett@gmail.com \
--cc=spearce@spearce.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).