Well, I can't argue against that, as I don't have any numbers. But I
can understand this expectation a bit ("archive HEAD!" -- "here is an
ear" might be confusing ;).
Hmm, switching the feature's default mode around instead of cutting it
off completely might be a good idea. Something like this? Unlike the
current implementation, it always writes the full path from the repo
root for each file.
René
diff --git a/builtin-archive.c b/builtin-archive.c
index 7f4e409..efa8679 100644
--- a/builtin-archive.c
+++ b/builtin-archive.c
@@ -128,18 +128,6 @@ void parse_treeish_arg(const char **argv, struct archiver_args *ar_args,
if (tree == NULL)
die("not a tree object");
- if (prefix) {
- unsigned char tree_sha1[20];
- unsigned int mode;
- int err;
-
- err = get_tree_entry(tree->object.sha1, prefix,
- tree_sha1, &mode);
- if (err || !S_ISDIR(mode))
- die("current working directory is untracked");
-
- tree = parse_tree_indirect(tree_sha1);
- }
ar_args->tree = tree;
ar_args->commit_sha1 = commit_sha1;
ar_args->time = archive_time;
@@ -241,6 +229,7 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
struct archiver ar;
int tree_idx;
const char *remote = NULL;
+ const char **pathspec;
remote = extract_remote_arg(&argc, argv);
if (remote)
@@ -255,7 +244,11 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
argv += tree_idx;
parse_treeish_arg(argv, &ar.args, prefix);
- parse_pathspec_arg(argv + 1, &ar.args);
+
+ pathspec = argv + 1;
+ if (*pathspec && prefix)
+ pathspec = get_pathspec(prefix, pathspec);
+ parse_pathspec_arg(pathspec, &ar.args);
return ar.write_archive(&ar.args);
}
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html