git-pickaxe: work properly in a subdirectory.

We forgot to add prefix to the given path.

[jc: interestingly enough, Jeff King had the same idea after I
 pushed mine out to "pu", and his patch was cleaner, so I dropped
 mine.]

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Jeff King 2006-11-02 02:22:49 -05:00 committed by Junio C Hamano
parent 62476c8e33
commit 20239bae94

View File

@ -1428,6 +1428,13 @@ static unsigned parse_score(const char *arg)
return score;
}
static const char *add_prefix(const char *prefix, const char *path)
{
if (!prefix || !prefix[0])
return path;
return prefix_path(prefix, strlen(prefix), path);
}
int cmd_pickaxe(int argc, const char **argv, const char *prefix)
{
struct rev_info revs;
@ -1548,7 +1555,7 @@ int cmd_pickaxe(int argc, const char **argv, const char *prefix)
/* (1) */
if (argc <= i)
usage(pickaxe_usage);
path = argv[i];
path = add_prefix(prefix, argv[i]);
if (i + 1 == argc - 1) {
if (unk != 1)
usage(pickaxe_usage);
@ -1566,13 +1573,13 @@ int cmd_pickaxe(int argc, const char **argv, const char *prefix)
if (seen_dashdash) {
if (seen_dashdash + 1 != argc - 1)
usage(pickaxe_usage);
path = argv[seen_dashdash + 1];
path = add_prefix(prefix, argv[seen_dashdash + 1]);
for (j = i; j < seen_dashdash; j++)
argv[unk++] = argv[j];
}
else {
/* (3) */
path = argv[i];
path = add_prefix(prefix, argv[i]);
if (i + 1 == argc - 1) {
final_commit_name = argv[i + 1];
@ -1580,7 +1587,7 @@ int cmd_pickaxe(int argc, const char **argv, const char *prefix)
* old-style
*/
if (unk == 1 && !has_path_in_work_tree(path)) {
path = argv[i + 1];
path = add_prefix(prefix, argv[i + 1]);
final_commit_name = argv[i];
}
}