git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Daniel Barkalow <barkalow@iabervon.org>
To: Russell King <rmk@arm.linux.org.uk>
Cc: git@vger.kernel.org
Subject: Re: [RFC] Order of push/pull file transfers
Date: Fri, 24 Jun 2005 12:38:43 -0400 (EDT)	[thread overview]
Message-ID: <Pine.LNX.4.21.0506241219140.30848-100000@iabervon.org> (raw)
In-Reply-To: <20050623111255.A1162@flint.arm.linux.org.uk>

On Thu, 23 Jun 2005, Russell King wrote:

> Last night, I pulled Linus' kernel tree from k.o, but Linus was in the
> middle of pushing an update to it.  The way cogito works, it grabs the
> HEAD first, and then rsyncs the objects.

It needs to do this, in case HEAD changes after or during the rsync (to
include objects written after the rsync looked for them).

> However, this retrieved the updated HEAD, and only some of the objects.
> cogito happily tried to merge the result, and failed.  A later pull
> and git-fsck-cache confirmed everything was fine _in this instance_.

It should be fine in all instances; it makes no assuptions about the
presence or absence of objects in the local database before the pull, so
doing a pull after the previous one didn't work right should be just as
likely to result in a functional state as any other pull.

> Therefore, may I suggest the following two changes in the way git
> works:
> 
> 1. a push updates HEAD only after the rsync/upload of all objects is
>    complete.  This means that any pull will not try to update to the
>    new head with a partial object tree.

git-ssh-push only updates the HEAD (or, rather, the thing the HEAD is a
symlink to) afterwards. I'm not sure how Linus was getting things
there. It's also possible that the mirroring process is failing to
maintain this constraint.

> 2. a pull only tries to fetch objects if HEAD has been updated since
>    the last pull.

That's no good; if the only recent change is a new tag, you want to get 
the tag object. Also, having it not do this is what let it recover in your
case on the second try. The only risk is that you'll pick up some objects
that you don't need yet (but would need if you pulled again when the push
completes).

	-Daniel
*This .sig left intentionally blank*


      reply	other threads:[~2005-06-24 16:36 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-23 10:12 [RFC] Order of push/pull file transfers Russell King
2005-06-24 16:38 ` Daniel Barkalow [this message]

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.21.0506241219140.30848-100000@iabervon.org \
    --to=barkalow@iabervon.org \
    --cc=git@vger.kernel.org \
    --cc=rmk@arm.linux.org.uk \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).