summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2014-03-18 13:51:09 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2014-03-18 13:51:09 -0700
commit9cf0137bdf01d3fe4fdf4cd4b1ad605eebdfb1de (patch)
tree4186de735c0e3ffa117467e30b046fb22069f2c9
parentMerge branch 'jc/no-need-for-env-in-sh-scripts' (diff)
parentbranch: use skip_prefix() in install_branch_config() (diff)
downloadtgif-9cf0137bdf01d3fe4fdf4cd4b1ad605eebdfb1de.tar.xz
Merge branch 'bg/install-branch-config-skip-prefix'
* bg/install-branch-config-skip-prefix: branch: use skip_prefix() in install_branch_config() t3200-branch: test setting branch as own upstream
-rw-r--r--branch.c18
-rwxr-xr-xt/t3200-branch.sh10
2 files changed, 19 insertions, 9 deletions
diff --git a/branch.c b/branch.c
index 05feaff78a..8eecb1d8c0 100644
--- a/branch.c
+++ b/branch.c
@@ -1,3 +1,4 @@
+#include "git-compat-util.h"
#include "cache.h"
#include "branch.h"
#include "refs.h"
@@ -49,12 +50,11 @@ static int should_setup_rebase(const char *origin)
void install_branch_config(int flag, const char *local, const char *origin, const char *remote)
{
- const char *shortname = remote + 11;
- int remote_is_branch = starts_with(remote, "refs/heads/");
+ const char *shortname = skip_prefix(remote, "refs/heads/");
struct strbuf key = STRBUF_INIT;
int rebasing = should_setup_rebase(origin);
- if (remote_is_branch
+ if (shortname
&& !strcmp(local, shortname)
&& !origin) {
warning(_("Not setting branch %s as its own upstream."),
@@ -77,29 +77,29 @@ void install_branch_config(int flag, const char *local, const char *origin, cons
strbuf_release(&key);
if (flag & BRANCH_CONFIG_VERBOSE) {
- if (remote_is_branch && origin)
+ if (shortname && origin)
printf_ln(rebasing ?
_("Branch %s set up to track remote branch %s from %s by rebasing.") :
_("Branch %s set up to track remote branch %s from %s."),
local, shortname, origin);
- else if (remote_is_branch && !origin)
+ else if (shortname && !origin)
printf_ln(rebasing ?
_("Branch %s set up to track local branch %s by rebasing.") :
_("Branch %s set up to track local branch %s."),
local, shortname);
- else if (!remote_is_branch && origin)
+ else if (!shortname && origin)
printf_ln(rebasing ?
_("Branch %s set up to track remote ref %s by rebasing.") :
_("Branch %s set up to track remote ref %s."),
local, remote);
- else if (!remote_is_branch && !origin)
+ else if (!shortname && !origin)
printf_ln(rebasing ?
_("Branch %s set up to track local ref %s by rebasing.") :
_("Branch %s set up to track local ref %s."),
local, remote);
else
- die("BUG: impossible combination of %d and %p",
- remote_is_branch, origin);
+ die("BUG: impossible combination of %p and %p",
+ shortname, origin);
}
}
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
index fcdb867748..83037b1cd9 100755
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh
@@ -507,6 +507,16 @@ EOF
test_cmp expected actual
'
+test_expect_success '--set-upstream-to notices an error to set branch as own upstream' '
+ git branch --set-upstream-to refs/heads/my13 my13 2>actual &&
+ cat >expected <<-\EOF &&
+ warning: Not setting branch my13 as its own upstream.
+ EOF
+ test_expect_code 1 git config branch.my13.remote &&
+ test_expect_code 1 git config branch.my13.merge &&
+ test_i18ncmp expected actual
+'
+
# Keep this test last, as it changes the current branch
cat >expect <<EOF
$_z40 $HEAD $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150200 +0000 branch: Created from master