From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: pclouds@gmail.com
Cc: git@vger.kernel.org, "Junio C Hamano" <gitster@pobox.com>,
bert.wesarg@googlemail.com, "Ævar Arnfjörð" <avarab@gmail.com>,
drizzd@gmx.net, git@matthieu-moy.fr, hellmuth@ira.uka.de,
jjensen@workspacewhiz.com, jost@tcs.ifi.lmu.de, kevin@sb.org,
per.lundberg@hibox.tv, sandals@crustytoothpaste.net,
eckhard.s.maass@googlemail.com
Subject: [PATCH v2 2/2] unpack-trees: support core.allIgnoredFilesArePreciousWhenMerging
Date: Mon, 26 Nov 2018 20:38:04 +0100 [thread overview]
Message-ID: <20181126193804.30741-3-pclouds@gmail.com> (raw)
In-Reply-To: <20181126193804.30741-1-pclouds@gmail.com>
Ignored files can be marked precious to prevent being overwritten
during a merge (or even a branch switch). If you really want to make
sure no ignored files are overwritten, this config variable is for
you.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
Documentation/config/core.txt | 6 ++++++
Documentation/gitignore.txt | 5 +++--
unpack-trees.c | 21 ++++++++++++++++++++-
3 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/Documentation/config/core.txt b/Documentation/config/core.txt
index d0e6635fe0..bff5834c13 100644
--- a/Documentation/config/core.txt
+++ b/Documentation/config/core.txt
@@ -1,3 +1,9 @@
+core.allIgnoredFilesArePreciousWhenMerging::
+ During a merge operation, if "precious" attribute is unset,
+ consider it set. You can explicitly remove "precious"
+ attribute if needed. See linkgit:gitattributes[5] for more
+ information.
+
core.fileMode::
Tells Git if the executable bit of files in the working tree
is to be honored.
diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt
index 0e9614289e..2832df7178 100644
--- a/Documentation/gitignore.txt
+++ b/Documentation/gitignore.txt
@@ -142,8 +142,9 @@ To stop tracking a file that is currently tracked, use
'git rm --cached'.
Ignored files are generally considered discardable. See `precious`
-attribute in linkgit:gitattributes[5] to change the behavior regarding
-ignored files.
+attribute in linkgit:gitattributes[5] and
+`core.allIgnoredFilesArePreciousWhenMerging` in linkgit:git-config[1]
+to change the behavior regarding ignored files.
EXAMPLES
--------
diff --git a/unpack-trees.c b/unpack-trees.c
index 9a5aadc084..df3b163e2e 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1877,6 +1877,25 @@ static int icase_exists(struct unpack_trees_options *o, const char *name, int le
return src && !ie_match_stat(o->src_index, src, st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
}
+static int is_precious_ignored_file(struct index_state *istate, const char *path)
+{
+ static struct attr_check *check;
+ int all_precious;
+
+ if (!check)
+ check = attr_check_initl("precious", NULL);
+ if (!check)
+ return 0;
+
+ git_check_attr(istate, path, check);
+ if (ATTR_UNSET(check->items[0].value) &&
+ !git_config_get_bool("core.allignoredfilesarepreciouswhenmerging",
+ &all_precious) &&
+ all_precious)
+ return 1;
+ return ATTR_TRUE(check->items[0].value);
+}
+
static int check_ok_to_remove(const char *name, int len, int dtype,
const struct cache_entry *ce, struct stat *st,
enum unpack_trees_error_types error_type,
@@ -1895,7 +1914,7 @@ static int check_ok_to_remove(const char *name, int len, int dtype,
return 0;
if (o->dir &&
- !is_precious_file(o->src_index, name) &&
+ !is_precious_ignored_file(o->src_index, name) &&
is_excluded(o->dir, o->src_index, name, &dtype))
/*
* ce->name is explicitly excluded, so it is Ok to
--
2.19.1.1327.g328c130451.dirty
next prev parent reply other threads:[~2018-11-26 19:38 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 ` [PATCH v2] " Clemens Buchacher
2010-08-23 8:33 ` [PATCH] " 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 ` Nguyễn Thái Ngọc Duy [this message]
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=20181126193804.30741-3-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=avarab@gmail.com \
--cc=bert.wesarg@googlemail.com \
--cc=drizzd@gmx.net \
--cc=eckhard.s.maass@googlemail.com \
--cc=git@matthieu-moy.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hellmuth@ira.uka.de \
--cc=jjensen@workspacewhiz.com \
--cc=jost@tcs.ifi.lmu.de \
--cc=kevin@sb.org \
--cc=per.lundberg@hibox.tv \
--cc=sandals@crustytoothpaste.net \
/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.