From: Junio C Hamano Date: Tue, 19 Sep 2017 03:52:27 +0000 (+0900) Subject: Merge branch 'rs/archive-excluded-directory' into next X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/c695db3039345e034f720cf5d0fac8cab80010ed?hp=-c Merge branch 'rs/archive-excluded-directory' into next "git archive", especially when used with pathspec, stored an empty directory in its output, even though Git itself never does so. This has been fixed. * rs/archive-excluded-directory: archive: don't add empty directories to archives --- c695db3039345e034f720cf5d0fac8cab80010ed diff --combined archive.c index 1ab8d3a1d7,f81bd3649a..1e41f4bbeb --- a/archive.c +++ b/archive.c @@@ -121,11 -121,6 +121,6 @@@ static int check_attr_export_subst(cons return check && ATTR_TRUE(check->items[1].value); } - static int should_queue_directories(const struct archiver_args *args) - { - return args->pathspec.has_wildcard; - } - static int write_archive_entry(const unsigned char *sha1, const char *base, int baselen, const char *filename, unsigned mode, int stage, void *context) @@@ -147,7 -142,7 +142,7 @@@ strbuf_addch(&path, '/'); path_without_prefix = path.buf + args->baselen; - if (!S_ISDIR(mode) || !should_queue_directories(args)) { + if (!S_ISDIR(mode)) { const struct attr_check *check; check = get_archive_attrs(path_without_prefix); if (check_attr_export_ignore(check)) @@@ -169,14 -164,6 +164,6 @@@ return write_entry(args, sha1, path.buf, path.len, mode); } - static int write_archive_entry_buf(const unsigned char *sha1, struct strbuf *base, - const char *filename, unsigned mode, int stage, - void *context) - { - return write_archive_entry(sha1, base->buf, base->len, - filename, mode, stage, context); - } - static void queue_directory(const unsigned char *sha1, struct strbuf *base, const char *filename, unsigned mode, int stage, struct archiver_context *c) @@@ -290,9 -277,7 +277,7 @@@ int write_archive_entries(struct archiv } err = read_tree_recursive(args->tree, "", 0, 0, &args->pathspec, - should_queue_directories(args) ? - queue_or_write_archive_entry : - write_archive_entry_buf, + queue_or_write_archive_entry, &context); if (err == READ_TREE_RECURSIVE) err = 0; @@@ -391,7 -376,7 +376,7 @@@ static void parse_treeish_arg(const cha free(ref); } - if (get_sha1(name, oid.hash)) + if (get_oid(name, &oid)) die("Not a valid object name"); commit = lookup_commit_reference_gently(&oid, 1);