Merge branch 'ar/send-pack-remote-track' into jk/send-pack

* ar/send-pack-remote-track:
  Update the tracking references only if they were succesfully updated on remote
  Add a test checking if send-pack updated local tracking branches correctly
This commit is contained in:
Junio C Hamano 2007-11-14 03:11:37 -08:00
commit 2d4eb71c6c
2 changed files with 42 additions and 1 deletions

View file

@ -348,7 +348,8 @@ static int do_send_pack(int in, int out, struct remote *remote, int nr_refspec,
if (!args.dry_run && remote && ret == 0) {
for (ref = remote_refs; ref; ref = ref->next)
update_tracking_ref(remote, ref);
if (!is_null_sha1(ref->new_sha1))
update_tracking_ref(remote, ref);
}
if (!new_refs && ret == 0)

40
t/t5404-tracking-branches.sh Executable file
View file

@ -0,0 +1,40 @@
#!/bin/sh
test_description='tracking branch update checks for git push'
. ./test-lib.sh
test_expect_success 'setup' '
echo 1 >file &&
git add file &&
git commit -m 1 &&
git branch b1 &&
git branch b2 &&
git clone . aa &&
git checkout b1 &&
echo b1 >>file &&
git commit -a -m b1 &&
git checkout b2 &&
echo b2 >>file &&
git commit -a -m b2
'
test_expect_success 'check tracking branches updated correctly after push' '
cd aa &&
b1=$(git rev-parse origin/b1) &&
b2=$(git rev-parse origin/b2) &&
git checkout -b b1 origin/b1 &&
echo aa-b1 >>file &&
git commit -a -m aa-b1 &&
git checkout -b b2 origin/b2 &&
echo aa-b2 >>file &&
git commit -a -m aa-b2 &&
git checkout master &&
echo aa-master >>file &&
git commit -a -m aa-master &&
git push &&
test "$(git rev-parse origin/b1)" = "$b1" &&
test "$(git rev-parse origin/b2)" = "$b2"
'
test_done