summaryrefslogtreecommitdiff
path: root/builtin-push.c
diff options
context:
space:
mode:
authorSteffen Prohaska <prohaska@zib.de>2007-11-11 15:35:07 +0100
committerJunio C Hamano <gitster@pobox.com>2007-11-18 18:39:00 -0800
commit47d996a20c3347bb9efbb44e8ed2d615cfdffba3 (patch)
treed47b15f39935ad44d5c185f9ad25492a2c0fb8ed /builtin-push.c
parentea55960518bb104020c02aa2f64b33f93d1775e7 (diff)
downloadgit-47d996a20c3347bb9efbb44e8ed2d615cfdffba3.tar.gz
push: support pushing HEAD to real branch name
This teaches "push <remote> HEAD" to resolve HEAD on the local side to its real branch name, e.g. master, and then act as if the real branch name was specified. So we have a shorthand for pushing the current branch. Besides HEAD, no other symbolic ref is resolved. Thanks to Daniel Barkalow <barkalow@iabervon.org> for suggesting this implementation, which is much simpler than the implementation proposed before. Signed-off-by: Steffen Prohaska <prohaska@zib.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-push.c')
-rw-r--r--builtin-push.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/builtin-push.c b/builtin-push.c
index 6d1da07c46..54fba0e832 100644
--- a/builtin-push.c
+++ b/builtin-push.c
@@ -44,6 +44,15 @@ static void set_refspecs(const char **refs, int nr)
strcat(tag, refs[i]);
ref = tag;
}
+ if (!strcmp("HEAD", ref)) {
+ unsigned char sha1_dummy[20];
+ ref = resolve_ref(ref, sha1_dummy, 1, NULL);
+ if (!ref)
+ die("HEAD cannot be resolved.");
+ if (prefixcmp(ref, "refs/heads/"))
+ die("HEAD cannot be resolved to branch.");
+ ref = xstrdup(ref + 11);
+ }
add_refspec(ref);
}
}