git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Neal Kreitzinger <neal@rsss.com>
Cc: git@vger.kernel.org
Subject: Re: rsync busy non-bare git repo 'source' to quiet
Date: Tue, 8 Mar 2011 16:39:59 -0500	[thread overview]
Message-ID: <20110308213959.GB5786@sigill.intra.peff.net> (raw)
In-Reply-To: <il66rd$46u$1@dough.gmane.org>

On Tue, Mar 08, 2011 at 03:25:00PM -0600, Neal Kreitzinger wrote:

> Does anyone have an example of an rsync bash script that will make a good 
> copy of a non-bare git repo (including the working tree) while the "source" 
> git repo is busy and the "destination" git repo is quiet?

Don't copy the working tree. It's redundant with the repo data (assuming
your working tree is clean), so you are probably faster to sync .git and
then "reset --hard". And then you don't have to worry about fetching an
inconsistent working tree state.

For syncing the repo, I think you would need to do:

  1. Copy the refs to a local temp space.

  2. Copy the object db.

  3. Install your temp refs into place.

That way, for any updates in progress you will either not copy them
(because the refs weren't in place in step 1, though you may have some
of their objects), or if you do copy them, you are guaranteed to have
all of the necessary objects (because git will not update the ref until
all objects are in place).

But I really have to wonder why you don't simply use git to do the
fetch? It already does the right thing with respect to updates, and it
will be way more efficient than rsync in the face of repacking (or if
you really do want to use rsync, there is even an rsync transport for
git already). It sounds like:

> This would make it very easy for us to refresh our "beta" livebox to emulate 
> the current "gold" livebox using a single rsync instead of a combination of 
> rsync and git-clone/pull due to the pieces that git does not replicate (ie, 
> hooks) and the non-git components of our git based change control menu 
> system (which is written in bash scripts on linux).

You just don't want to do a pull in addition to an rsync. But I don't
think this solution will be any less complex.

-Peff

  reply	other threads:[~2011-03-08 21:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-08 21:25 rsync busy non-bare git repo 'source' to quiet Neal Kreitzinger
2011-03-08 21:39 ` Jeff King [this message]
2011-03-08 22:20   ` Neal Kreitzinger
2011-03-08 22:38     ` Jeff King
2011-03-08 23:00       ` Neal Kreitzinger

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=20110308213959.GB5786@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=neal@rsss.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).