diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2011-11-27 17:15:33 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-11-28 10:41:53 -0800 |
commit | c1d7036b6bfea586a30c6eac672e58e22e5ceaf5 (patch) | |
tree | 3e5bef920f7ce6b7d8fe2bb2d21066951776255e /builtin/merge.c | |
parent | f44054c82f4199ccff14f472e4fd7904b0db8ff5 (diff) | |
download | git-c1d7036b6bfea586a30c6eac672e58e22e5ceaf5.tar.gz |
checkout,merge: disallow overwriting ignored files with --no-overwrite-ignorend/ignore-might-be-precious
Ignored files usually are generated files (e.g. .o files) and can be
safely discarded. However sometimes users may have important files in
working directory, but still want a clean "git status", so they mark
them as ignored files. But in this case, these files should not be
overwritten without asking first.
Enable this use case with --no-overwrite-ignore, where git only sees
tracked and untracked files, no ignored files. Those who mix
discardable ignored files with important ones may have to sort it out
themselves.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/merge.c')
-rw-r--r-- | builtin/merge.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/builtin/merge.c b/builtin/merge.c index 1387376248..07102c45fa 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -48,6 +48,7 @@ static int show_diffstat = 1, shortlog_len, squash; static int option_commit = 1, allow_fast_forward = 1; static int fast_forward_only, option_edit; static int allow_trivial = 1, have_message; +static int overwrite_ignore = 1; static struct strbuf merge_msg; static struct commit_list *remoteheads; static struct strategy **use_strategies; @@ -207,6 +208,7 @@ static struct option builtin_merge_options[] = { OPT_BOOLEAN(0, "abort", &abort_current_merge, "abort the current in-progress merge"), OPT_SET_INT(0, "progress", &show_progress, "force progress reporting", 1), + OPT_BOOLEAN(0, "overwrite-ignore", &overwrite_ignore, "update ignored files (default)"), OPT_END() }; @@ -773,10 +775,12 @@ int checkout_fast_forward(const unsigned char *head, const unsigned char *remote memset(&trees, 0, sizeof(trees)); memset(&opts, 0, sizeof(opts)); memset(&t, 0, sizeof(t)); - memset(&dir, 0, sizeof(dir)); - dir.flags |= DIR_SHOW_IGNORED; - setup_standard_excludes(&dir); - opts.dir = &dir; + if (overwrite_ignore) { + memset(&dir, 0, sizeof(dir)); + dir.flags |= DIR_SHOW_IGNORED; + setup_standard_excludes(&dir); + opts.dir = &dir; + } opts.head_idx = 1; opts.src_index = &the_index; |