* [PATCH] contrib: add 'git bpush' to push to bundles
@ 2009-01-19 23:46 Santi Béjar
2009-01-20 6:47 ` Mike Hommey
0 siblings, 1 reply; 3+ messages in thread
From: Santi Béjar @ 2009-01-19 23:46 UTC (permalink / raw)
To: git
'git bpush' updates the branches in a bundle, while adding the objects
necessary to complete the given branches. Basically, it is a 'git push'
for bundles.
Signed-off-by: Santi Béjar <santi@agolina.net>
---
contrib/bpush/git-bpush | 195 ++++++++++++++++++++++++++++++++++++
contrib/bpush/git-bpush.txt | 68 +++++++++++++
contrib/bpush/t5519-bundle-push.sh | 193 +++++++++++++++++++++++++++++++++++
contrib/bpush/t5519/expect.10 | 4 +
contrib/bpush/t5519/expect.11 | 4 +
contrib/bpush/t5519/expect.12 | 7 ++
contrib/bpush/t5519/expect.13 | 4 +
contrib/bpush/t5519/expect.14 | 4 +
contrib/bpush/t5519/expect.15 | 4 +
contrib/bpush/t5519/expect.16 | 4 +
contrib/bpush/t5519/expect.17 | 5 +
contrib/bpush/t5519/expect.18 | 6 +
contrib/bpush/t5519/expect.19 | 6 +
contrib/bpush/t5519/expect.2 | 4 +
contrib/bpush/t5519/expect.3 | 3 +
contrib/bpush/t5519/expect.4 | 4 +
contrib/bpush/t5519/expect.5 | 5 +
contrib/bpush/t5519/expect.6 | 5 +
contrib/bpush/t5519/expect.7 | 5 +
contrib/bpush/t5519/expect.8 | 5 +
contrib/bpush/t5519/expect.9 | 4 +
21 files changed, 539 insertions(+), 0 deletions(-)
create mode 100755 contrib/bpush/git-bpush
create mode 100644 contrib/bpush/git-bpush.txt
create mode 100755 contrib/bpush/t5519-bundle-push.sh
create mode 100644 contrib/bpush/t5519/expect.10
create mode 100644 contrib/bpush/t5519/expect.11
create mode 100644 contrib/bpush/t5519/expect.12
create mode 100644 contrib/bpush/t5519/expect.13
create mode 100644 contrib/bpush/t5519/expect.14
create mode 100644 contrib/bpush/t5519/expect.15
create mode 100644 contrib/bpush/t5519/expect.16
create mode 100644 contrib/bpush/t5519/expect.17
create mode 100644 contrib/bpush/t5519/expect.18
create mode 100644 contrib/bpush/t5519/expect.19
create mode 100644 contrib/bpush/t5519/expect.2
create mode 100644 contrib/bpush/t5519/expect.3
create mode 100644 contrib/bpush/t5519/expect.4
create mode 100644 contrib/bpush/t5519/expect.5
create mode 100644 contrib/bpush/t5519/expect.6
create mode 100644 contrib/bpush/t5519/expect.7
create mode 100644 contrib/bpush/t5519/expect.8
create mode 100644 contrib/bpush/t5519/expect.9
diff --git a/contrib/bpush/git-bpush b/contrib/bpush/git-bpush
new file mode 100755
index 0000000..a004c42
--- /dev/null
+++ b/contrib/bpush/git-bpush
@@ -0,0 +1,195 @@
+#!/bin/sh
+
+OPTIONS_KEEPDASHDASH=
+OPTIONS_SPEC="\
+git bpush [options] [<remote> [<refs>...]]
+--
+f,force force updates
+full create a full bundle
+v be verbose
+"
+SUBDIRECTORY_OK=Yes
+. git-sh-setup
+. git-parse-remote
+
+cd_to_toplevel
+
+LF='
+'
+IFS="$LF"
+
+bases=
+bbases=
+changed=
+force=
+nonff=
+remote=
+refs=
+while :
+do
+ case "$1" in
+ -v)
+ verbose=t ;;
+ --full)
+ full=t ;;
+ -f|--force)
+ force=t ;;
+ --)
+ shift
+ break ;;
+ *)
+ usage ;;
+ esac
+ shift
+done
+
+test -n "$1" && remote=$1 && shift
+refs="$*"
+
+test -z "$remote" && remote=$(get_default_remote)
+remoteurl=$(git config remote.${remote}.url)
+test -z "$remoteurl" && remoteurl=$remote
+test -d "$remoteurl" && die "$remoteurl is a directory"
+
+# Default bases in bundle.base
+# Default {refs,base} can be specified in remote.<remote>.{push,bundlebase}
+if test "$remote" != "$remoteurl"
+then
+ test -z "$refs" &&
+ refs=$(git config --get-all remote.${remote}.push)
+ bases=$(git config --get-all remote.${remote}.bundlebase ||
+ git config --get-all bundle.base)
+else
+ bases=$(git config --get-all bundle.base)
+fi
+
+# git rev-parse --symbolic-full-name resolves symlinks
+# Keep at least HEAD
+head=
+for ref in $refs ; do
+ test "$ref" = HEAD && head=t && break
+done
+
+test -n "$bases" && bases=$(git rev-parse --revs-only $bases | sort -u)
+
+# Full symbolic refs need to be uniq
+test -n "$refs" &&
+refs=$(git-rev-parse --symbolic-full-name --revs-only $refs | sort -u)
+
+test -n "$head" && refs="HEAD$LF$refs"
+
+if test -e "$remoteurl"
+then
+ blines=$(git bundle verify "$remoteurl" 2>/dev/null) ||
+ die "Verification of \"$remoteurl\" failed"
+ # Find the bundle's bases
+ refs="$refs$LF$(git bundle list-heads $remoteurl | cut -d " " -f 2)"
+ requires=
+ for line in $blines
+ do
+ case "$requires,$line" in
+ ",The bundle requires"*)
+ requires=t ;;
+ t,) ;;
+ t,*)
+ bbase=$(echo $line | cut -d " " -f 1)
+ bbases="$bbases$LF$bbase"
+ ;;
+ esac
+ done
+ bases="$bases$LF$bbases"
+elif test -z "$refs" ; then
+ # Push current branch
+ refs="HEAD$LF$(git symbolic-ref -q HEAD)"
+fi
+
+test -z "$refs" && die "No refs to push"
+
+refs=$(echo "$refs" | sort -u)
+
+for ref in $bases $refs
+do
+ test "$(git cat-file -t $ref^{})" != commit &&
+ die "$(basename $0): $ref is not a commit"
+done
+
+header="To $remoteurl"
+test -n "$verbose" && echo "Pushing to $remoteurl" && echo $header && header=
+
+# Find what is/is not a fast-forward, up to date or new
+# As "git bundle" does not support refspecs we must push all matching branches
+for ref in $refs ; do
+ text=
+ bchanged=
+ case $ref in
+ refs/tags/*)
+ bshort=$(echo $ref | sed -e "s|^refs/tags/||")
+ newtext="new tag";;
+ refs/heads/*|HEAD)
+ bshort=$(echo $ref | sed -e "s|^refs/heads/||")
+ newtext="new branch" ;;
+ esac
+ newhash=$(git rev-parse $ref) || die "Ref $ref not valid"
+ newshort=$(git rev-parse --short $ref)
+ bheads=
+ test -e "$remoteurl" && bheads="$(git bundle list-heads $remoteurl)"
+ for bhead in $bheads
+ do
+ bhash=$(echo $bhead | cut -d " " -f 1)
+ bref=$(echo $bhead | cut -d " " -f 2)
+ # Find the matching ref in the bundle
+ test "$bref" != "$ref" && continue
+ oldshort=$(git rev-parse --short $bhash)
+ mergebase=
+ case $ref in
+ refs/tags/*)
+ # Only test if it is different
+ mergebase=$newhash;;
+ refs/heads/*|HEAD)
+ mergebase=$(git merge-base $bref $bhash);;
+ esac
+ case $newhash,$bhash,$mergebase,$force in
+ $bhash,$newhash,*)
+ # No changes
+ text=" = [up to date] $bshort -> $bshort"
+ ;;
+ *,*,$bhash,*)
+ # Fast-forward
+ bchanged=t
+ text=" $oldshort..$newshort $bshort -> $bshort"
+ ;;
+ *,t)
+ # Forced non fast-forward
+ bchanged=t
+ text=" + $oldshort...$newshort $bshort -> $bshort (forced update)"
+ ;;
+ *)
+ bchanged=t
+ nonff=t
+ text=" ! [rejected] $bshort -> $bshort (non-fast forward)"
+ esac
+ break
+ done
+ test -z "$text" && text=" * [$newtext] $bshort -> $bshort" && bchanged=t
+ if test -n "$bchanged" || test -n "$verbose"
+ then
+ test -n "$header" && echo $header && header=
+ echo $text
+ fi
+ test -n "$bchanged" && changed=t
+done
+
+# Recreate the bundle if --full and the current bundle is not full
+test -n "$full" && bases= && test -n "$bbases" && changed=t
+
+test -n "$nonff" && die "error: failed to push some refs to $remoteurl"
+test -z "$changed" && die "Everything up-to-date"
+test -n "$bases" && bases="--not$LF$bases"
+
+git bundle create $remoteurl $refs $bases ||
+die "Cannot create bundle \"$remoteurl\""
+
+test "$remote" != "$remoteurl" && { git fetch -q "$remote" ||
+ die "Error fetch from bundle \"$remoteurl\"" ; }
+
+exit 0
diff --git a/contrib/bpush/git-bpush.txt b/contrib/bpush/git-bpush.txt
new file mode 100644
index 0000000..a045c91
--- /dev/null
+++ b/contrib/bpush/git-bpush.txt
@@ -0,0 +1,68 @@
+git-bpush(1)
+============
+
+NAME
+----
+git-bpush - Update bundles along with associated objects
+
+SYNOPSIS
+--------
+[verse]
+'git bpush' [--full] [--force] [<bundle> <refs>...]
+
+DESCRIPTION
+-----------
+
+'git bpush' updates the branches in a bundle, while adding the objects
+necessary to complete the given branches. Basically, it is a 'git push'
+for bundles.
+
+By default, if the bundle does not exist a full bundle is create with the
+current branch, and if it does exist it updates all the branches in it
+appending all the needed objects.
+
+OPTIONS
+-------
+<bundle>::
+ Equal to the <repository> parameter of 'git push' but pointing
+ to a local path.
+
+<refs>::
+ A list of branches to push
+
+--full::
+ Create a bundle with all the needed object even if the existing
+ bundle is not full.
+
+--force::
+ Equivalent to the '--force' flag to 'git push'.
+
+CONFIG VARIABLES
+----------------
+branch.<name>.remote::
+remote.<name>.url::
+remote.<name>.push::
+ With the same meaning but the URL should be a local path and the
+ 'push' config should list only branches, not refspecs.
+
+remote.<name>.bundlebase::
+bundle.base::
+ Default base to create a new bundle (per remote or global).
+
+SEE ALSO
+--------
+linkgit:git-diff[1]
+
+linkgit:git-config[1]
+
+AUTHOR
+------
+Written by Santi Béjar <santi@agolina.net>.
+
+Documentation
+--------------
+Documentation by Santi Béjar.
+
+GIT
+---
+Part of the contrib section of the linkgit:git[1] suite
diff --git a/contrib/bpush/t5519-bundle-push.sh b/contrib/bpush/t5519-bundle-push.sh
new file mode 100755
index 0000000..464f32f
--- /dev/null
+++ b/contrib/bpush/t5519-bundle-push.sh
@@ -0,0 +1,193 @@
+#!/bin/sh
+
+test_description='Bundle pushing'
+
+. ./test-lib.sh
+
+other=
+
+mk_test () {
+ num=$(( $num + 1 )) &&
+ actual=actual.$num &&
+ expect="$TEST_DIRECTORY"/t5519/expect.$num &&
+ expect_other="$TEST_DIRECTORY"/t5519/expect.$other &&
+ git bundle verify b.bundle > "$actual" &&
+ if test -f "$expect"
+ then
+ if [ -n "$other" ] ; then
+ test_cmp "$expect_other" "$actual"
+ else
+ true
+ fi &&
+ test_cmp "$expect" "$actual" &&
+ rm -f "$actual"
+ else
+ # this is to help developing new tests.
+ cp "$actual" "$expect"
+ false
+ fi
+}
+
+test_expect_success setup '
+
+ : >path1 &&
+ git add path1 &&
+ test_tick &&
+ git commit -a -m repo &&
+ the_first_commit=$(git show-ref -s --verify refs/heads/master) &&
+ git branch b1 &&
+ git tag t1 &&
+
+ : >path2 &&
+ git add path2 &&
+ test_tick &&
+ git commit -a -m second &&
+ the_second_commit=$(git show-ref -s --verify refs/heads/master) &&
+ git branch b2 &&
+ git tag t2 &&
+
+ : >path3 &&
+ git add path3 &&
+ test_tick &&
+ git commit -a -m third &&
+ the_third_commit=$(git show-ref -s --verify refs/heads/master) &&
+ git branch b3 &&
+ git tag t3 &&
+
+ git reset --hard b2 &&
+ : >path4 &&
+ git add path4 &&
+ test_tick &&
+ git commit -a -m fourth &&
+ the_fourth_commit=$(git show-ref -s --verify refs/heads/master) &&
+ git branch b4 &&
+ git tag t4 &&
+
+ num=1
+'
+
+test_expect_success 'full bundle' '
+ git bpush b.bundle &&
+ mk_test
+'
+
+test_expect_success 'full bundle with 1 branch' '
+ rm b.bundle &&
+ git bpush b.bundle b2 &&
+ mk_test
+'
+
+test_expect_success 'full bundle with 2 branches' '
+ rm b.bundle &&
+ git bpush b.bundle b2 master &&
+ mk_test
+'
+
+test_expect_success 'bundle with 1 commit as base' '
+ rm b.bundle &&
+ git config bundle.base $the_first_commit
+ git bpush b.bundle &&
+ mk_test
+'
+
+test_expect_success 'bundle with 1 branch as base' '
+ rm b.bundle &&
+ other=$num &&
+ git config bundle.base b1
+ git bpush b.bundle &&
+ mk_test
+'
+test_expect_success 'bundle with 1 tag as base' '
+ rm b.bundle &&
+ git config bundle.base t1
+ git bpush b.bundle &&
+ mk_test
+'
+
+test_expect_success 'bundle with 1 sha1 expression as base' '
+ rm b.bundle &&
+ git config bundle.base t2^
+ git bpush b.bundle &&
+ mk_test
+'
+
+test_expect_success 'Force a full bundle' '
+ git bpush --full b.bundle &&
+ other=2 &&
+ mk_test
+
+'
+unset other
+git config --unset bundle.base
+
+test_expect_success 'updating bundle: initial' '
+ rm b.bundle &&
+ git reset --hard b1 &&
+ git bpush b.bundle &&
+ mk_test
+'
+
+test_expect_success 'updating bundle: update' '
+ git reset --hard b2 &&
+ git bpush b.bundle &&
+ mk_test
+'
+
+test_expect_success 'updating bundle with extra branches' '
+ git bpush b.bundle b2 b3 b4 &&
+ mk_test
+'
+
+test_expect_success 'Deny non fast forward: initial' '
+ rm b.bundle &&
+ git reset --hard b3 &&
+ git bpush b.bundle &&
+ mk_test
+'
+
+test_expect_success 'Deny non fast-fordard: denied' '
+ git reset --hard b4 &&
+ test_must_fail git bpush b.bundle &&
+ other=$num &&
+ mk_test
+'
+
+test_expect_success 'Deny non fast-fordard: force' '
+ git bpush --force b.bundle &&
+ other=2
+ mk_test
+'
+
+git config remote.b.url b.bundle
+
+test_expect_success 'pushing to a <remote>' '
+ rm b.bundle &&
+ git bpush b &&
+ other=2
+ mk_test
+'
+
+unset other
+
+test_expect_success 'remote with remote.<remote>.push' '
+ git config remote.b.push b4 &&
+ git bpush b &&
+ mk_test
+'
+
+test_expect_success 'remote with multiple remote.<remote>.push' '
+ git config --add remote.b.push b3 &&
+ git bpush b &&
+ mk_test
+'
+
+test_expect_success 'cancel bases in remote.<remote>.bundlebase' '
+ rm b.bundle &&
+ git config --add remote.b.push HEAD &&
+ git config remote.b.bundlebase "" &&
+ git config bundle.base t1 &&
+ git bpush b &&
+ mk_test
+'
+
+test_done
diff --git a/contrib/bpush/t5519/expect.10 b/contrib/bpush/t5519/expect.10
new file mode 100644
index 0000000..f16f35f
--- /dev/null
+++ b/contrib/bpush/t5519/expect.10
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+b9c09d6cc74d3857142fb7c082dca65b88254c6d HEAD
+b9c09d6cc74d3857142fb7c082dca65b88254c6d refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.11 b/contrib/bpush/t5519/expect.11
new file mode 100644
index 0000000..23b288f
--- /dev/null
+++ b/contrib/bpush/t5519/expect.11
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+9ad36e1e54b2130a20d55abb4f0f3ca8494ead3f HEAD
+9ad36e1e54b2130a20d55abb4f0f3ca8494ead3f refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.12 b/contrib/bpush/t5519/expect.12
new file mode 100644
index 0000000..583c759
--- /dev/null
+++ b/contrib/bpush/t5519/expect.12
@@ -0,0 +1,7 @@
+The bundle contains 5 refs
+9ad36e1e54b2130a20d55abb4f0f3ca8494ead3f HEAD
+9ad36e1e54b2130a20d55abb4f0f3ca8494ead3f refs/heads/b2
+0c61b881205ba69f6b78d3fdd45db054d236eea8 refs/heads/b3
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/b4
+9ad36e1e54b2130a20d55abb4f0f3ca8494ead3f refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.13 b/contrib/bpush/t5519/expect.13
new file mode 100644
index 0000000..fb1c2a7
--- /dev/null
+++ b/contrib/bpush/t5519/expect.13
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+0c61b881205ba69f6b78d3fdd45db054d236eea8 HEAD
+0c61b881205ba69f6b78d3fdd45db054d236eea8 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.14 b/contrib/bpush/t5519/expect.14
new file mode 100644
index 0000000..fb1c2a7
--- /dev/null
+++ b/contrib/bpush/t5519/expect.14
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+0c61b881205ba69f6b78d3fdd45db054d236eea8 HEAD
+0c61b881205ba69f6b78d3fdd45db054d236eea8 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.15 b/contrib/bpush/t5519/expect.15
new file mode 100644
index 0000000..9047296
--- /dev/null
+++ b/contrib/bpush/t5519/expect.15
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.16 b/contrib/bpush/t5519/expect.16
new file mode 100644
index 0000000..9047296
--- /dev/null
+++ b/contrib/bpush/t5519/expect.16
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.17 b/contrib/bpush/t5519/expect.17
new file mode 100644
index 0000000..14c8713
--- /dev/null
+++ b/contrib/bpush/t5519/expect.17
@@ -0,0 +1,5 @@
+The bundle contains 3 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/b4
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.18 b/contrib/bpush/t5519/expect.18
new file mode 100644
index 0000000..dd8682b
--- /dev/null
+++ b/contrib/bpush/t5519/expect.18
@@ -0,0 +1,6 @@
+The bundle contains 4 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+0c61b881205ba69f6b78d3fdd45db054d236eea8 refs/heads/b3
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/b4
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.19 b/contrib/bpush/t5519/expect.19
new file mode 100644
index 0000000..dd8682b
--- /dev/null
+++ b/contrib/bpush/t5519/expect.19
@@ -0,0 +1,6 @@
+The bundle contains 4 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+0c61b881205ba69f6b78d3fdd45db054d236eea8 refs/heads/b3
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/b4
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.2 b/contrib/bpush/t5519/expect.2
new file mode 100644
index 0000000..9047296
--- /dev/null
+++ b/contrib/bpush/t5519/expect.2
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.3 b/contrib/bpush/t5519/expect.3
new file mode 100644
index 0000000..3b476c7
--- /dev/null
+++ b/contrib/bpush/t5519/expect.3
@@ -0,0 +1,3 @@
+The bundle contains 1 ref
+9ad36e1e54b2130a20d55abb4f0f3ca8494ead3f refs/heads/b2
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.4 b/contrib/bpush/t5519/expect.4
new file mode 100644
index 0000000..59c144c
--- /dev/null
+++ b/contrib/bpush/t5519/expect.4
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+9ad36e1e54b2130a20d55abb4f0f3ca8494ead3f refs/heads/b2
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
diff --git a/contrib/bpush/t5519/expect.5 b/contrib/bpush/t5519/expect.5
new file mode 100644
index 0000000..ba77351
--- /dev/null
+++ b/contrib/bpush/t5519/expect.5
@@ -0,0 +1,5 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 1 ref
+b9c09d6cc74d3857142fb7c082dca65b88254c6d repo
diff --git a/contrib/bpush/t5519/expect.6 b/contrib/bpush/t5519/expect.6
new file mode 100644
index 0000000..ba77351
--- /dev/null
+++ b/contrib/bpush/t5519/expect.6
@@ -0,0 +1,5 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 1 ref
+b9c09d6cc74d3857142fb7c082dca65b88254c6d repo
diff --git a/contrib/bpush/t5519/expect.7 b/contrib/bpush/t5519/expect.7
new file mode 100644
index 0000000..ba77351
--- /dev/null
+++ b/contrib/bpush/t5519/expect.7
@@ -0,0 +1,5 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 1 ref
+b9c09d6cc74d3857142fb7c082dca65b88254c6d repo
diff --git a/contrib/bpush/t5519/expect.8 b/contrib/bpush/t5519/expect.8
new file mode 100644
index 0000000..ba77351
--- /dev/null
+++ b/contrib/bpush/t5519/expect.8
@@ -0,0 +1,5 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 1 ref
+b9c09d6cc74d3857142fb7c082dca65b88254c6d repo
diff --git a/contrib/bpush/t5519/expect.9 b/contrib/bpush/t5519/expect.9
new file mode 100644
index 0000000..9047296
--- /dev/null
+++ b/contrib/bpush/t5519/expect.9
@@ -0,0 +1,4 @@
+The bundle contains 2 refs
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 HEAD
+2d4a0f4bd0a1c33802f2f3417f5a999dff37f9d7 refs/heads/master
+The bundle requires these 0 ref
--
1.6.1.258.g7ff14
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] contrib: add 'git bpush' to push to bundles
2009-01-19 23:46 [PATCH] contrib: add 'git bpush' to push to bundles Santi Béjar
@ 2009-01-20 6:47 ` Mike Hommey
2009-01-29 16:05 ` Santi Béjar
0 siblings, 1 reply; 3+ messages in thread
From: Mike Hommey @ 2009-01-20 6:47 UTC (permalink / raw)
To: Santi Béjar; +Cc: git
On Tue, Jan 20, 2009 at 12:46:31AM +0100, Santi Béjar wrote:
> 'git bpush' updates the branches in a bundle, while adding the objects
> necessary to complete the given branches. Basically, it is a 'git
> push' for bundles.
I think it'd be better to improve git-push to support that, instead of
adding yet another git command.
Mike
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] contrib: add 'git bpush' to push to bundles
2009-01-20 6:47 ` Mike Hommey
@ 2009-01-29 16:05 ` Santi Béjar
0 siblings, 0 replies; 3+ messages in thread
From: Santi Béjar @ 2009-01-29 16:05 UTC (permalink / raw)
To: Mike Hommey; +Cc: git
2009/1/20 Mike Hommey <mh@glandium.org>:
> On Tue, Jan 20, 2009 at 12:46:31AM +0100, Santi Béjar wrote:
>> 'git bpush' updates the branches in a bundle, while adding the objects
>> necessary to complete the given branches. Basically, it is a 'git
>> push' for bundles.
>
> I think it'd be better to improve git-push to support that, instead of
> adding yet another git command.
Yes, I also think it'd be better if git-push supports it, but this is
not a trivial task, and my script works now. So I think it makes sense
to add it to the *contrib* directory.
Santi
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-01-29 16:07 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-19 23:46 [PATCH] contrib: add 'git bpush' to push to bundles Santi Béjar
2009-01-20 6:47 ` Mike Hommey
2009-01-29 16:05 ` Santi Béjar
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).