Code

git-pickaxe: work properly in a subdirectory.
authorJeff King <peff@peff.net>
Thu, 2 Nov 2006 07:22:49 +0000 (02:22 -0500)
committerJunio C Hamano <junkio@cox.net>
Thu, 2 Nov 2006 08:11:30 +0000 (00:11 -0800)
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>
builtin-pickaxe.c

index c9405e918bc5e6da94c61f7fe2cdd00b5da44508..f6e861a26dbda100ea6aeb884ad62c75872a8e76 100644 (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];
                                }
                        }