branch.c: use the parsed branch name
When setting up tracking info, branch.c uses the given branch specifier ("name"). Use the parsed name ("ref.buf") instead so that git branch --set-upstream @{-1} foo sets up tracking info for the previous branch rather than for a branch named "@{-1}". Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael J Gruber committed
Aug 19, 2011 at 13:45 UTC
e9d4f7405b6ab399ef0ea62a796c646de676555d
2 files changed
+15
-1
branch.c
+1
-1
@@ -210,7 +210,7 @@ void create_branch(const char *head,
210
start_name);
211
212
if (real_ref && track)
213
- setup_tracking(name, real_ref, track);
213
+ setup_tracking(ref.buf+11, real_ref, track);
214
215
if (!dont_change_ref)
216
if (write_ref_sha1(lock, sha1, msg) < 0)
t/t6040-tracking-info.sh
+14
@@ -110,4 +110,18 @@ test_expect_success '--set-upstream does not change branch' '
110
grep -q "^refs/heads/master$" actual &&
111
cmp expect2 actual2
112
'
113
+
114
+test_expect_success '--set-upstream @{-1}' '
115
+ git checkout from-master &&
116
+ git checkout from-master2 &&
117
+ git config branch.from-master2.merge > expect2 &&
118
+ git branch --set-upstream @{-1} follower &&
119
+ git config branch.from-master.merge > actual &&
120
+ git config branch.from-master2.merge > actual2 &&
121
+ git branch --set-upstream from-master follower &&
122
+ git config branch.from-master.merge > expect &&
123
+ test_cmp expect2 actual2 &&
124
+ test_cmp expect actual
125
+'
126
+
127
test_done