diff options
author | Steffen Prohaska <prohaska@zib.de> | 2007-11-11 15:35:07 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-18 18:39:00 -0800 |
commit | 47d996a20c3347bb9efbb44e8ed2d615cfdffba3 (patch) | |
tree | d47b15f39935ad44d5c185f9ad25492a2c0fb8ed /builtin-push.c | |
parent | ea55960518bb104020c02aa2f64b33f93d1775e7 (diff) | |
download | git-47d996a20c3347bb9efbb44e8ed2d615cfdffba3.tar.gz git-47d996a20c3347bb9efbb44e8ed2d615cfdffba3.tar.xz |
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.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/builtin-push.c b/builtin-push.c index 6d1da07c4..54fba0e83 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); } } |