@@ -118,14 +118,7 @@ static int handle_fork_point(int argc, const char **argv)
struct commit *derived, *fork_point;
const char *commitname;
- switch (dwim_ref(argv[0], strlen(argv[0]), &oid, &refname)) {
- case 0:
- die("No such ref: '%s'", argv[0]);
- case 1:
- break; /* good */
- default:
- die("Ambiguous refname: '%s'", argv[0]);
- }
+ dwim_ref_or_die(argv[0], strlen(argv[0]), &refname);
commitname = (argc == 2) ? argv[1] : "HEAD";
if (get_oid(commitname, &oid))
@@ -639,6 +639,20 @@ int dwim_ref(const char *str, int len, struct object_id *oid, char **ref)
return repo_dwim_ref(the_repository, str, len, oid, ref);
}
+void dwim_ref_or_die(const char *str, int len, char **ref)
+{
+ struct object_id discard;
+ switch (dwim_ref(str, len, &discard, ref)) {
+ case 0:
+ die("No such ref: '%s'", str);
+ case 1:
+ break; /* good */
+ default:
+ die("Ambiguous refname: '%s'", str);
+ }
+}
+
+
int expand_ref(struct repository *repo, const char *str, int len,
struct object_id *oid, char **ref)
{
@@ -154,6 +154,7 @@ int repo_dwim_log(struct repository *r, const char *str, int len, struct object_
int dwim_ref(const char *str, int len, struct object_id *oid, char **ref);
int dwim_log(const char *str, int len, struct object_id *oid, char **ref);
+void dwim_ref_or_die(const char *str, int len, char **ref);
/*
* A ref_transaction represents a collection of reference updates that
* should succeed or fail together.
Pull logic for getting the full dwim ref name from a passed in ref name out of the handle_fork_point function of merge-base.c. This will allow git-rebase --fork-point to use the same method for getting the full ref name before calling get_fork_point. I saw other *_or_die methods in other places and using that pattern seemed sane here. I'm not 100% sure about the name or signature of dwim_ref_or_die. I feel like it should be named something like dwim_ref_name_or_die, unique_dwim_ref_or_die, or should be including the object_id argument even though it isn't used by the calling merge_base code, and won't be used in rebase. This is my first patch submission for git, and I'd appreciate some feedback on naming/style wrt to this. Signed-off-by: Alex Torok <alext9@gmail.com> --- builtin/merge-base.c | 9 +-------- refs.c | 14 ++++++++++++++ refs.h | 1 + 3 files changed, 16 insertions(+), 8 deletions(-)