archive.c: use OPT_BOOL()
authorJunio C Hamano <gitster@pobox.com>
Tue, 27 Sep 2011 23:59:01 +0000 (16:59 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 28 Sep 2011 00:00:06 +0000 (17:00 -0700)
The list variable (which is OPT_BOOLEAN) is initialized to 0 and only
checked against 0 in the code, so it is safe to use OPT_BOOL().

The worktree_attributes variable (which is OPT_BOOLEAN) is initialized to
0 and later assigned to a field with the same name in struct archive_args,
which is a bitfield of width 1. It is safe and even more correct to use
OPT_BOOL() here; the new test in 5001 demonstrates why using OPT_COUNTUP
is wrong.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
archive.c
t/t5001-archive-attr.sh

index 3fd7f475f1d8ff5efe602a10f02ea3e1c3aa9edd..2ae740a71e6d43ee81afdeddcb53f983f10a8fff 100644 (file)
--- a/archive.c
+++ b/archive.c
@@ -318,7 +318,7 @@ static int parse_archive_args(int argc, const char **argv,
                        "prepend prefix to each pathname in the archive"),
                OPT_STRING('o', "output", &output, "file",
                        "write the archive to this file"),
-               OPT_BOOLEAN(0, "worktree-attributes", &worktree_attributes,
+               OPT_BOOL(0, "worktree-attributes", &worktree_attributes,
                        "read .gitattributes in working directory"),
                OPT__VERBOSE(&verbose, "report archived files on stderr"),
                OPT__COMPR('0', &compression_level, "store only", 0),
@@ -332,7 +332,7 @@ static int parse_archive_args(int argc, const char **argv,
                OPT__COMPR_HIDDEN('8', &compression_level, 8),
                OPT__COMPR('9', &compression_level, "compress better", 9),
                OPT_GROUP(""),
-               OPT_BOOLEAN('l', "list", &list,
+               OPT_BOOL('l', "list", &list,
                        "list supported archive formats"),
                OPT_GROUP(""),
                OPT_STRING(0, "remote", &remote, "repo",
index 02d4d2284d8bcf9637dbd6a670e376b4ae9f7af1..f47d8717fdd93cf8ebf356c2675511567782335e 100755 (executable)
@@ -57,6 +57,15 @@ test_expect_missing  worktree/ignored
 test_expect_exists     worktree/ignored-by-tree
 test_expect_missing    worktree/ignored-by-worktree
 
+test_expect_success 'git archive --worktree-attributes option' '
+       git archive --worktree-attributes --worktree-attributes HEAD >worktree.tar &&
+       (mkdir worktree2 && cd worktree2 && "$TAR" xf -) <worktree.tar
+'
+
+test_expect_missing    worktree2/ignored
+test_expect_exists     worktree2/ignored-by-tree
+test_expect_missing    worktree2/ignored-by-worktree
+
 test_expect_success 'git archive vs. bare' '
        (cd bare && git archive HEAD) >bare-archive.tar &&
        test_cmp archive.tar bare-archive.tar