Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Fix broken create_branch() in builtin-branch.
author
Junio C Hamano
<junkio@cox.net>
Thu, 8 Mar 2007 21:59:54 +0000
(13:59 -0800)
committer
Junio C Hamano
<junkio@cox.net>
Sun, 11 Mar 2007 07:41:58 +0000
(23:41 -0800)
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-branch.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
0746d19
)
diff --git
a/builtin-branch.c
b/builtin-branch.c
index e161e00978d5b26d7c5f520600359e6650f2fb34..42b1ff129e7d5bbea47a4d1af955395014f200f9 100644
(file)
--- a/
builtin-branch.c
+++ b/
builtin-branch.c
@@
-410,7
+410,6
@@
static void set_branch_defaults(const char *name, const char *real_ref)
}
static void create_branch(const char *name, const char *start_name,
}
static void create_branch(const char *name, const char *start_name,
- unsigned char *start_sha1,
int force, int reflog, int track)
{
struct ref_lock *lock;
int force, int reflog, int track)
{
struct ref_lock *lock;
@@
-431,15
+430,22
@@
static void create_branch(const char *name, const char *start_name,
forcing = 1;
}
forcing = 1;
}
- if (start_sha1) {
- /* detached HEAD */
- hashcpy(sha1, start_sha1);
+ real_ref = NULL;
+ if (get_sha1(start_name, sha1))
+ die("Not a valid object name: '%s'.", start_name);
+
+ switch (dwim_ref(start_name, strlen(start_name), sha1, &real_ref)) {
+ case 0:
+ /* Not branching from any existing branch */
real_ref = NULL;
real_ref = NULL;
- }
- else if (dwim_ref(start_name, strlen(start_name), sha1, &real_ref) > 1)
+ break;
+ case 1:
+ /* Unique completion -- good */
+ break;
+ default:
die("Ambiguous object name: '%s'.", start_name);
die("Ambiguous object name: '%s'.", start_name);
- else if (real_ref == NULL)
- die("Not a valid object name: '%s'.", start_name);
+ break;
+ }
if ((commit = lookup_commit_reference(sha1)) == NULL)
die("Not a valid branch point: '%s'.", start_name);
if ((commit = lookup_commit_reference(sha1)) == NULL)
die("Not a valid branch point: '%s'.", start_name);
@@
-620,12
+626,9
@@
int cmd_branch(int argc, const char **argv, const char *prefix)
rename_branch(head, argv[i], force_rename);
else if (rename && (i == argc - 2))
rename_branch(argv[i], argv[i + 1], force_rename);
rename_branch(head, argv[i], force_rename);
else if (rename && (i == argc - 2))
rename_branch(argv[i], argv[i + 1], force_rename);
- else if (i == argc - 1)
- create_branch(argv[i], head, head_sha1, force_create, reflog,
- track);
- else if (i == argc - 2)
- create_branch(argv[i], argv[i+1], NULL, force_create, reflog,
- track);
+ else if (i == argc - 1 || i == argc - 2)
+ create_branch(argv[i], (i == argc - 2) ? argv[i+1] : head,
+ force_create, reflog, track);
else
usage(builtin_branch_usage);
else
usage(builtin_branch_usage);