Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.

Commit 62f162f

Browse files
peffgitster
authored andcommitted
rev-parse: be more careful with munging arguments
When rev-parse looks at whether an argument like "foo..bar" or "foobar^@" is a difference or parent-shorthand, it internally munges the arguments so that it can pass the individual rev arguments to get_sha1(). However, we do not consistently un-munge the result. For cases where we do not match (e.g., "doesnotexist..HEAD"), we would then want to try to treat the argument as a filename. try_difference gets() this right, and always unmunges in this case. However, try_parent_shorthand() never unmunges, leading to incorrect error messages, or even incorrect results: $ git rev-parse foobar^@ foobar fatal: ambiguous argument 'foobar': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' $ >foobar $ git rev-parse foobar^@ foobar For cases where we do match, neither function unmunges. This does not currently matter, since we are done with the argument. However, a future patch will do further processing, and this prepares for it. In addition, it's simply a confusing interface for some cases to modify the const argument, and others not to. Signed-off-by: Jeff King <[email protected]> Reviewed-by: Jonathan Nieder <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 1418567 commit 62f162f

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

builtin/rev-parse.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ static int try_difference(const char *arg)
279279
exclude = n;
280280
}
281281
}
282+
*dotdot = '.';
282283
return 1;
283284
}
284285
*dotdot = '.';
@@ -302,8 +303,10 @@ static int try_parent_shorthands(const char *arg)
302303
return 0;
303304

304305
*dotdot = 0;
305-
if (get_sha1_committish(arg, sha1))
306+
if (get_sha1_committish(arg, sha1)) {
307+
*dotdot = '^';
306308
return 0;
309+
}
307310

308311
if (!parents_only)
309312
show_rev(NORMAL, sha1, arg);
@@ -312,6 +315,7 @@ static int try_parent_shorthands(const char *arg)
312315
show_rev(parents_only ? NORMAL : REVERSED,
313316
parents->item->object.sha1, arg);
314317

318+
*dotdot = '^';
315319
return 1;
316320
}
317321

0 commit comments

Comments
 (0)