aboutsummaryrefslogtreecommitdiff
path: root/branch.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-03-10 01:20:42 -0700
committerJunio C Hamano <gitster@pobox.com>2009-03-10 22:21:12 -0700
commit72f600832f75db626fd9290a21d02d49c92ca9ca (patch)
tree8bbc7f17b7aa06a61ffb1f71b86ff038a534f687 /branch.c
parenta9f2c13685ae9040d52d53cd719a18040f1dd123 (diff)
downloadgit-72f600832f75db626fd9290a21d02d49c92ca9ca.tar.gz
git-72f600832f75db626fd9290a21d02d49c92ca9ca.tar.xz
Improve "git branch --tracking" output
An earlier patch always spelled the full name of the ref that we track (e.g. "refs/heads/frotz" instead of just "frotz" when we mean the branch whose name is "frotz"). Worse yet, because we now use the true name of the ref at the original repository when talk about a tracking branch that copies from a remote, such a full name alone still does not give enough information. This reorganizes the verbose codepath to: - differentiate "refs/heads/something" and everything else; we say that the branch tracks "branch <something>" if it begins with "refs/heads/", and otherwise the branch tracks "ref refs/<someother>/<something>"; - report the name of the remote when we talk about a tracking branch, by saying "branch frotz from origin"; - not say "by merging" at the end; it is the default and is not worth reporting. Signed-off-by: Junio C Hamano <junio@pobox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'branch.c')
-rw-r--r--branch.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/branch.c b/branch.c
index d20fb0490..5f889fee6 100644
--- a/branch.c
+++ b/branch.c
@@ -65,12 +65,23 @@ void install_branch_config(int flag, const char *local, const char *origin, cons
git_config_set(key.buf, "true");
}
- if (flag & BRANCH_CONFIG_VERBOSE)
- printf("Branch %s set up to track %s branch %s %s.\n",
- local,
- origin ? "remote" : "local",
- remote,
- rebasing ? "by rebasing" : "by merging");
+ if (flag & BRANCH_CONFIG_VERBOSE) {
+ strbuf_reset(&key);
+
+ strbuf_addstr(&key, origin ? "remote" : "local");
+
+ /* Are we tracking a proper "branch"? */
+ if (!prefixcmp(remote, "refs/heads/")) {
+ strbuf_addf(&key, " branch %s", remote + 11);
+ if (origin)
+ strbuf_addf(&key, " from %s", origin);
+ }
+ else
+ strbuf_addf(&key, " ref %s", remote);
+ printf("Branch %s set up to track %s%s.\n",
+ local, key.buf,
+ rebasing ? " by rebasing" : "");
+ }
strbuf_release(&key);
}