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