Code

checkout,merge: loosen overwriting untracked file check based on info/exclude
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 27 Nov 2011 10:15:32 +0000 (17:15 +0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 28 Nov 2011 18:37:50 +0000 (10:37 -0800)
Back in 1127148 (Loosen "working file will be lost" check in
Porcelain-ish - 2006-12-04), git-checkout.sh learned to quietly
overwrite ignored files. Howver the code only took .gitignore files
into account.

Standard ignored files include all specified in .gitignore files in
working directory _and_ $GIT_DIR/info/exclude. This patch makes sure
ignored files in info/exclude can also be overwritten automatically in
the spirit of the original patch.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/checkout.c
builtin/merge.c

index 560eae17159290c5adcefd2e2e2da5825ac6b75d..2b90e6b5e21dc64132e68c66e4f7430c49724441 100644 (file)
@@ -401,7 +401,7 @@ static int merge_working_tree(struct checkout_opts *opts,
                topts.fn = twoway_merge;
                topts.dir = xcalloc(1, sizeof(*topts.dir));
                topts.dir->flags |= DIR_SHOW_IGNORED;
-               topts.dir->exclude_per_dir = ".gitignore";
+               setup_standard_excludes(topts.dir);
                tree = parse_tree_indirect(old->commit ?
                                           old->commit->object.sha1 :
                                           (unsigned char *)EMPTY_TREE_SHA1_BIN);
index 5f65c0c8a6eacd4c6d05602ad9de2821ec62a034..29c43979bd2b5f24403433077ef43a980aef88a3 100644 (file)
@@ -708,7 +708,7 @@ int checkout_fast_forward(const unsigned char *head, const unsigned char *remote
        memset(&t, 0, sizeof(t));
        memset(&dir, 0, sizeof(dir));
        dir.flags |= DIR_SHOW_IGNORED;
-       dir.exclude_per_dir = ".gitignore";
+       setup_standard_excludes(&dir);
        opts.dir = &dir;
 
        opts.head_idx = 1;