From: Clemens Buchacher <drizzd@aon.at>
To: Junio C Hamano <gitster@pobox.com>
Cc: Joshua Jensen <jjensen@workspacewhiz.com>,
"git@vger.kernel.org" <git@vger.kernel.org>
Subject: [PATCH v2] optionally disable overwriting of ignored files
Date: Sat, 21 Aug 2010 08:48:44 +0200 [thread overview]
Message-ID: <20100821064844.GA29968@localhost> (raw)
In-Reply-To: <7vtymp9fn1.fsf@alter.siamese.dyndns.org>
[-- Attachment #1: Type: text/plain, Size: 4965 bytes --]
Signed-off-by: Clemens Buchacher <drizzd@aon.at>
---
On Fri, Aug 20, 2010 at 01:46:10PM -0700, Junio C Hamano wrote:
>
> What is this patch based on?
Oops, I forgot to squash an intermediate commit. This is based on
v1.7.2.1.
Documentation/config.txt | 6 ++++++
builtin/checkout.c | 10 +++++++---
builtin/merge.c | 10 +++++++---
cache.h | 1 +
config.c | 3 +++
environment.c | 1 +
6 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index f81fb91..eb9bb43 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -450,6 +450,12 @@ core.excludesfile::
to the value of `$HOME` and "{tilde}user/" to the specified user's
home directory. See linkgit:gitignore[5].
+core.overwriteignored::
+ Untracked files can get in the way of merge or checkout. If
+ overwriteignored is enabled, such files will be overwritten
+ to let fast-forward merges and checkouts succeed. Enabled
+ by default.
+
core.editor::
Commands such as `commit` and `tag` that lets you edit
messages by launching an editor uses the value of this
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 1994be9..121a6a3 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -389,9 +389,11 @@ static int merge_working_tree(struct checkout_opts *opts,
topts.gently = opts->merge && old->commit;
topts.verbose_update = !opts->quiet;
topts.fn = twoway_merge;
- topts.dir = xcalloc(1, sizeof(*topts.dir));
- topts.dir->flags |= DIR_SHOW_IGNORED;
- topts.dir->exclude_per_dir = ".gitignore";
+ if (overwrite_ignored) {
+ topts.dir = xcalloc(1, sizeof(*topts.dir));
+ topts.dir->flags |= DIR_SHOW_IGNORED;
+ topts.dir->exclude_per_dir = ".gitignore";
+ }
tree = parse_tree_indirect(old->commit ?
old->commit->object.sha1 :
(unsigned char *)EMPTY_TREE_SHA1_BIN);
@@ -667,6 +669,8 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
OPT_SET_INT('3', "theirs", &opts.writeout_stage, "stage",
3),
OPT_BOOLEAN('f', "force", &opts.force, "force"),
+ OPT_BOOLEAN('i', "overwrite-ignored", &overwrite_ignored,
+ "allow explicitly ignored files to be overwritten"),
OPT_BOOLEAN('m', "merge", &opts.merge, "merge"),
OPT_STRING(0, "conflict", &conflict_style, "style",
"conflict style (merge or diff3)"),
diff --git a/builtin/merge.c b/builtin/merge.c
index 37ce4f5..47b12ba 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -185,6 +185,8 @@ static struct option builtin_merge_options[] = {
"allow fast-forward (default)"),
OPT_BOOLEAN(0, "ff-only", &fast_forward_only,
"abort if fast-forward is not possible"),
+ OPT_BOOLEAN('i', "overwrite-ignored", &overwrite_ignored,
+ "allow explicitly ignored files to be overwritten"),
OPT_RERERE_AUTOUPDATE(&allow_rerere_auto),
OPT_CALLBACK('s', "strategy", &use_strategies, "strategy",
"merge strategy to use", option_parse_strategy),
@@ -693,9 +695,11 @@ int checkout_fast_forward(const unsigned char *head, const unsigned char *remote
memset(&opts, 0, sizeof(opts));
memset(&t, 0, sizeof(t));
memset(&dir, 0, sizeof(dir));
- dir.flags |= DIR_SHOW_IGNORED;
- dir.exclude_per_dir = ".gitignore";
- opts.dir = &dir;
+ if (overwrite_ignored) {
+ dir.flags |= DIR_SHOW_IGNORED;
+ dir.exclude_per_dir = ".gitignore";
+ opts.dir = &dir;
+ }
opts.head_idx = 1;
opts.src_index = &the_index;
diff --git a/cache.h b/cache.h
index c9fa3df..dd1b8f7 100644
--- a/cache.h
+++ b/cache.h
@@ -548,6 +548,7 @@ extern size_t packed_git_window_size;
extern size_t packed_git_limit;
extern size_t delta_base_cache_limit;
extern int read_replace_refs;
+extern int overwrite_ignored;
extern int fsync_object_files;
extern int core_preload_index;
extern int core_apply_sparse_checkout;
diff --git a/config.c b/config.c
index cdcf583..bd7956e 100644
--- a/config.c
+++ b/config.c
@@ -563,6 +563,9 @@ static int git_default_core_config(const char *var, const char *value)
if (!strcmp(var, "core.excludesfile"))
return git_config_pathname(&excludes_file, var, value);
+ if (!strcmp(var, "core.overwriteignored"))
+ overwrite_ignored = git_config_bool(var, value);
+
if (!strcmp(var, "core.whitespace")) {
if (!value)
return config_error_nonbool(var);
diff --git a/environment.c b/environment.c
index 83d38d3..1b92f60 100644
--- a/environment.c
+++ b/environment.c
@@ -30,6 +30,7 @@ const char *apply_default_ignorewhitespace;
int zlib_compression_level = Z_BEST_SPEED;
int core_compression_level;
int core_compression_seen;
+int overwrite_ignored = 1;
int fsync_object_files;
size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE;
size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT;
--
1.7.2.1.1.g202c
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
next prev parent reply other threads:[~2010-08-21 6:49 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-15 13:01 Ignored files being silently overwritten when switching branches Per Lundberg
2018-10-16 6:40 ` Jeff King
2018-10-16 9:10 ` Ævar Arnfjörð Bjarmason
2010-08-17 5:21 ` git merge, .gitignore, and silently overwriting untracked files Joshua Jensen
2010-08-17 19:33 ` Junio C Hamano
2010-08-18 23:39 ` [PATCH] optionally disable overwriting of ignored files Clemens Buchacher
2010-08-19 10:41 ` Jakub Narebski
2010-08-20 18:48 ` Clemens Buchacher
2010-08-20 19:01 ` Joshua Jensen
2010-08-20 20:35 ` Junio C Hamano
2010-08-21 8:05 ` Clemens Buchacher
2010-08-22 7:25 ` Junio C Hamano
2010-08-22 8:20 ` Clemens Buchacher
2010-10-09 22:39 ` Kevin Ballard
2010-08-21 13:23 ` Clemens Buchacher
2010-10-09 13:52 ` [PATCH 0/5] do not overwrite untracked files in leading path Clemens Buchacher
2010-10-09 13:52 ` [PATCH 1/5] t7607: use test_commit and test_must_fail Clemens Buchacher
2010-10-10 6:35 ` Jonathan Nieder
2010-10-10 8:35 ` [PATCH 1/5 v2] t7607: use test-lib functions and check MERGE_HEAD Clemens Buchacher
2010-10-13 21:33 ` Junio C Hamano
2010-10-13 21:59 ` Junio C Hamano
2010-10-09 13:52 ` [PATCH 2/5] t7607: add leading-path tests Clemens Buchacher
2010-10-09 19:14 ` Johannes Sixt
2010-10-10 8:38 ` [PATCH 2/5 v2] " Clemens Buchacher
2010-10-09 13:52 ` [PATCH 3/5] add function check_ok_to_remove() Clemens Buchacher
2010-10-13 21:43 ` Junio C Hamano
2010-10-09 13:52 ` [PATCH 4/5] lstat_cache: optionally return match_len Clemens Buchacher
2010-10-09 13:53 ` [PATCH 5/5] do not overwrite files in leading path Clemens Buchacher
2010-10-13 21:57 ` Junio C Hamano
2010-10-13 22:34 ` Clemens Buchacher
2010-10-15 6:48 ` Clemens Buchacher
2010-10-15 18:47 ` Junio C Hamano
2010-08-20 20:46 ` [PATCH] optionally disable overwriting of ignored files Junio C Hamano
2010-08-21 6:48 ` Clemens Buchacher [this message]
2010-08-23 8:33 ` Matthieu Moy
2010-08-31 18:44 ` Heiko Voigt
2010-08-23 9:37 ` Matthieu Moy
2010-08-23 13:56 ` Holger Hellmuth
2010-08-23 15:11 ` Clemens Buchacher
2010-08-23 15:57 ` Junio C Hamano
2010-08-24 7:28 ` Clemens Buchacher
2010-08-24 16:19 ` Junio C Hamano
2018-11-06 12:41 ` Checkout deleted semi-untracked file Steffen Jost
2018-11-06 15:12 ` Ævar Arnfjörð Bjarmason
2018-11-11 9:52 ` [RFC PATCH] Introduce "precious" file concept Nguyễn Thái Ngọc Duy
2018-11-11 12:15 ` Bert Wesarg
2018-11-11 12:33 ` Ævar Arnfjörð Bjarmason
2018-11-11 13:06 ` Ævar Arnfjörð Bjarmason
2018-11-12 16:14 ` Duy Nguyen
2018-11-11 15:41 ` Duy Nguyen
2018-11-11 16:55 ` Ævar Arnfjörð Bjarmason
2018-11-12 7:35 ` Per Lundberg
2018-11-12 9:08 ` Matthieu Moy
2018-11-12 9:49 ` Ævar Arnfjörð Bjarmason
2018-11-12 10:26 ` Junio C Hamano
2018-11-12 12:45 ` Ævar Arnfjörð Bjarmason
2018-11-12 13:02 ` Junio C Hamano
2018-11-12 16:07 ` Duy Nguyen
2018-11-12 23:22 ` brian m. carlson
2018-11-26 9:30 ` Per Lundberg
2018-11-26 10:28 ` Ævar Arnfjörð Bjarmason
2018-11-26 12:49 ` Junio C Hamano
2018-11-27 15:08 ` Ævar Arnfjörð Bjarmason
2018-11-28 3:58 ` Junio C Hamano
2018-11-28 21:54 ` Ævar Arnfjörð Bjarmason
2018-11-29 5:04 ` Junio C Hamano
2018-12-01 6:21 ` Duy Nguyen
2018-11-26 15:26 ` Duy Nguyen
2018-11-26 15:34 ` Ævar Arnfjörð Bjarmason
2018-11-26 15:40 ` Duy Nguyen
2018-11-26 15:47 ` Ævar Arnfjörð Bjarmason
2018-11-26 15:55 ` Duy Nguyen
2018-11-27 9:43 ` Per Lundberg
2018-11-27 12:55 ` Jacob Keller
2018-11-27 14:50 ` Per Lundberg
2018-11-28 1:21 ` brian m. carlson
2018-11-28 6:54 ` Per Lundberg
2018-11-27 15:19 ` Duy Nguyen
2018-12-06 18:39 ` Duy Nguyen
2018-11-26 16:02 ` Eckhard Maaß
2018-11-11 12:59 ` Junio C Hamano
2018-11-26 19:38 ` [PATCH v2 0/2] Precios files round two Nguyễn Thái Ngọc Duy
2018-11-26 19:38 ` [PATCH v2 1/2] Introduce "precious" file concept Nguyễn Thái Ngọc Duy
2018-11-26 19:38 ` [PATCH v2 2/2] unpack-trees: support core.allIgnoredFilesArePreciousWhenMerging Nguyễn Thái Ngọc Duy
2018-10-16 15:05 ` Ignored files being silently overwritten when switching branches Duy Nguyen
2018-10-18 1:55 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100821064844.GA29968@localhost \
--to=drizzd@aon.at \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jjensen@workspacewhiz.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.