path: root/
diff options
authorJohannes Schindelin <>2007-02-22 00:59:14 (GMT)
committerJunio C Hamano <>2007-02-23 06:30:33 (GMT)
commit2e0afafebd8c5a1a8cdddb0714073461229ecfef (patch)
treeeba8a2fa0f5c7d5de4043141bd6ce33bb7b34034 /
parent437b1b20df4b356c9342dac8d38849f24ef44f27 (diff)
Add git-bundle: move objects and references by archive
Some workflows require use of repositories on machines that cannot be connected, preventing use of git-fetch / git-push to transport objects and references between the repositories. git-bundle provides an alternate transport mechanism, effectively allowing git-fetch and git-pull to operate using sneakernet transport. `git-bundle create` allows the user to create a bundle containing one or more branches or tags, but with specified basis assumed to exist on the target repository. At the receiving end, git-bundle acts like git-fetch-pack, allowing the user to invoke git-fetch or git-pull using the bundle file as the URL. git-fetch and git-ls-remote determine they have a bundle URL by checking that the URL points to a file, but are otherwise unchanged in operation with bundles. The original patch was done by Mark Levedahl <>. It was updated to make git-bundle a builtin, and get rid of the tar format: now, the first line is supposed to say "# v2 git bundle", the next lines either contain a prerequisite ("-" followed by the hash of the needed commit), or a ref (the hash of a commit, followed by the name of the ref), and finally the pack. As a result, the bundle argument can be "-" now. Signed-off-by: Johannes Schindelin <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to '')
1 files changed, 6 insertions, 1 deletions
diff --git a/ b/
index 8ea5c5e..a6ed99a 100755
--- a/
+++ b/
@@ -89,8 +89,13 @@ rsync://* )
* )
- git-peek-remote $exec "$peek_repo" ||
+ if test -f "$peek_repo" ; then
+ git bundle list-heads "$peek_repo" ||
echo "failed slurping"
+ else
+ git-peek-remote $exec "$peek_repo" ||
+ echo "failed slurping"
+ fi
esac |
sort -t ' ' -k 2 |