git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mark Levedahl <mdl123@verizon.net>
To: git@vger.kernel.org
Subject: Scripts to use "bundles" for moving data between repositories
Date: Wed, 14 Feb 2007 09:10:25 -0500	[thread overview]
Message-ID: <11714622292110-git-send-email-mdl123@verizon.net> (raw)

I am working a project using git where we have many repositories on machines
that can never be directly connected, but which need to have the same objects
and development history.  Existing git protocols offer limited support: we can
either a) publish and apply patch files branch by branch, or b) copy an entire
repository from one machine to another and then do local push or fetch.  While
both are workable, neither is a completely satisfactory solution, so I wrote the
attached scripts that support a "bundle" transfer mechanism.  A bundle is a zip
archive having two files: a list of references as given by git-show-ref and a
pack file of objects from git-pack-objects.  git-bundle creates the bundle,
git-unbundle unpacks and applies at the receiving end.  The means of
transporting the bundle file between the machines is arbitrary (sneaker net,
email, etc all can work).

This transfer protocol leaves it to the user to assure that the objects in the 
bundle are sufficient to update the target machine.  This is a direct 
consequence of the prohibition on direct communication between the machines.  
The approach supported here is to use normal git-rev-list format to specify what 
to include, e.g.  master~10..master, or ^master pu next, etc.  Having too many 
objects in the pack file is fine: git-unpack-objects at the receiving end 
happily ignores things not needed. git-unbundle normally checks that the updated 
references are fast-forward (--force to override), and that all required objects 
exist (--shallow to override). This latter option supports a disconnected 
shallow clone.

I offer this for inclusion in the main distribution, comments and suggestions
for improvement are welcome regardless. The scripts are working for me today
and I find them very useful.

Mark Levedahl

             reply	other threads:[~2007-02-14 14:10 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-14 14:10 Mark Levedahl [this message]
2007-02-14 14:10 ` [PATCH] git-bundle - bundle objects and references for disconnected transfer Mark Levedahl
2007-02-14 14:10   ` [PATCH] git-unbundle - unbundle " Mark Levedahl
2007-02-14 14:10     ` [PATCH] Create a man page for git-bundle Mark Levedahl
2007-02-14 14:10       ` [PATCH] Create a man page for git-unbundle Mark Levedahl
2007-02-14 19:45     ` [PATCH] git-unbundle - unbundle objects and references for disconnected transfer Shawn O. Pearce
2007-02-14 20:57       ` Mark Levedahl
2007-02-14 21:03         ` Shawn O. Pearce
2007-02-14 22:43           ` Mark Levedahl
2007-02-14 21:18         ` Nicolas Pitre
2007-02-14 19:42   ` [PATCH] git-bundle - bundle " Shawn O. Pearce
2007-02-14 21:58   ` Johannes Schindelin
2007-02-14 23:19     ` Mark Levedahl
2007-02-14 23:55       ` Mark Levedahl
2007-02-15  0:15         ` Johannes Schindelin
2007-02-15  2:13           ` Mark Levedahl
2007-02-15 15:35             ` Johannes Schindelin
2007-02-15  0:07       ` Johannes Schindelin
2007-02-15  2:32         ` Mark Levedahl
2007-02-15 15:32           ` Johannes Schindelin
2007-02-16  0:12             ` Mark Levedahl
2007-02-16  0:40               ` Johannes Schindelin
2007-02-16  3:23                 ` Mark Levedahl
2007-02-14 14:13 ` Scripts to use "bundles" for moving data between repositories Matthieu Moy
2007-02-14 14:37   ` Mark Levedahl
2007-02-14 15:46 ` Johannes Schindelin
2007-02-14 17:11 ` Junio C Hamano
2007-02-14 17:56   ` Mark Levedahl
2007-02-14 18:00     ` Junio C Hamano
2007-02-14 21:24       ` Mark Levedahl
2007-02-14 21:26         ` Junio C Hamano
2007-02-14 18:20     ` Junio C Hamano

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=11714622292110-git-send-email-mdl123@verizon.net \
    --to=mdl123@verizon.net \
    --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).