From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH 0/6] nd/ita-cleanup updates
Date: Sun, 27 Dec 2015 08:51:26 +0700 [thread overview]
Message-ID: <1451181092-26054-1-git-send-email-pclouds@gmail.com> (raw)
Most of the updates are in commit message (see the old thread [1]). I
give up on adding new tests for git-apply, finally admitting I don't
know that command that well. Code change from 'pu' version is entirely
in 5/6:
diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c
index 687c82e..d9fe8f4 100644
--- a/builtin/checkout-index.c
+++ b/builtin/checkout-index.c
@@ -48,6 +48,7 @@ static int checkout_file(const char *name, const char *prefix)
int pos = cache_name_pos(name, namelen);
int has_same_name = 0;
int did_checkout = 0;
+ int has_intent_to_add = 0;
int errs = 0;
if (pos < 0)
@@ -56,9 +57,11 @@ static int checkout_file(const char *name, const char *prefix)
while (pos < active_nr) {
struct cache_entry *ce = active_cache[pos];
if (ce_namelen(ce) != namelen ||
- memcmp(ce->name, name, namelen) ||
- ce_intent_to_add(ce))
+ memcmp(ce->name, name, namelen)) {
+ if (ce_intent_to_add(ce))
+ has_intent_to_add = 1;
break;
+ }
has_same_name = 1;
pos++;
if (ce_stage(ce) != checkout_stage
@@ -78,7 +81,9 @@ static int checkout_file(const char *name, const char *prefix)
if (!state.quiet) {
fprintf(stderr, "git checkout-index: %s ", name);
- if (!has_same_name)
+ if (has_intent_to_add)
+ fprintf(stderr, "is not yet in the cache");
+ else if (!has_same_name)
fprintf(stderr, "is not in the cache");
else if (checkout_stage)
fprintf(stderr, "does not exist at stage %d",
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 6d198b3..ac37d92 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -300,8 +300,6 @@ static int checkout_paths(const struct checkout_opts *opts,
* anything to this entry at all.
*/
continue;
- if (ce_intent_to_add(ce))
- continue;
/*
* Either this entry came from the tree-ish we are
* checking the paths out of, or we are checking out
@@ -330,12 +328,15 @@ static int checkout_paths(const struct checkout_opts *opts,
if (opts->merge)
unmerge_marked_index(&the_index);
- /* Any unmerged paths? */
for (pos = 0; pos < active_nr; pos++) {
- const struct cache_entry *ce = active_cache[pos];
+ struct cache_entry *ce = active_cache[pos];
if (ce->ce_flags & CE_MATCHED) {
- if (!ce_stage(ce))
+ if (!ce_stage(ce)) {
+ if (ce_intent_to_add(ce))
+ ce->ce_flags &= ~CE_MATCHED;
continue;
+ }
+ /* Unmerged paths */
if (opts->force) {
warning(_("path '%s' is unmerged"), ce->name);
} else if (opts->writeout_stage) {
diff --git a/t/t2203-add-intent.sh b/t/t2203-add-intent.sh
index d0f36a4..52e9f7f 100755
--- a/t/t2203-add-intent.sh
+++ b/t/t2203-add-intent.sh
@@ -117,7 +117,7 @@ test_expect_success 'checkout ignores i-t-a' '
cd checkout &&
echo data >file &&
git add -N file &&
- test_must_fail git checkout -- file &&
+ git checkout -- file &&
echo data >expected &&
test_cmp expected file
)
[1] http://thread.gmane.org/gmane.comp.version-control.git/272363/focus=276352
Nguyễn Thái Ngọc Duy (6):
blame: remove obsolete comment
Add and use convenient macro ce_intent_to_add()
apply: fix adding new files on i-t-a entries
apply: make sure check_preimage() does not leave empty file on error
checkout(-index): do not checkout i-t-a entries
grep: make it clear i-t-a entries are ignored
builtin/apply.c | 13 +++++-----
builtin/blame.c | 5 ----
builtin/checkout-index.c | 12 +++++++--
builtin/checkout.c | 9 ++++---
builtin/grep.c | 2 +-
builtin/rm.c | 2 +-
cache-tree.c | 2 +-
cache.h | 1 +
read-cache.c | 4 +--
t/t2203-add-intent.sh | 63 ++++++++++++++++++++++++++++++++++++++++++++++++
10 files changed, 92 insertions(+), 21 deletions(-)
--
2.3.0.rc1.137.g477eb31
next reply other threads:[~2015-12-27 1:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-27 1:51 Nguyễn Thái Ngọc Duy [this message]
2015-12-27 1:51 ` [PATCH 1/6] blame: remove obsolete comment Nguyễn Thái Ngọc Duy
2015-12-28 17:35 ` Junio C Hamano
2015-12-27 1:51 ` [PATCH 2/6] Add and use convenient macro ce_intent_to_add() Nguyễn Thái Ngọc Duy
2015-12-28 17:53 ` Junio C Hamano
2015-12-27 1:51 ` [PATCH 3/6] apply: fix adding new files on i-t-a entries Nguyễn Thái Ngọc Duy
2015-12-28 3:01 ` Junio C Hamano
2015-12-29 14:02 ` Duy Nguyen
2015-12-29 17:40 ` Junio C Hamano
2015-12-27 1:51 ` [PATCH 4/6] apply: make sure check_preimage() does not leave empty file on error Nguyễn Thái Ngọc Duy
2015-12-28 18:35 ` Junio C Hamano
2015-12-27 1:51 ` [PATCH 5/6] checkout(-index): do not checkout i-t-a entries Nguyễn Thái Ngọc Duy
2015-12-28 19:56 ` Junio C Hamano
2015-12-27 1:51 ` [PATCH 6/6] grep: make it clear i-t-a entries are ignored Nguyễn Thái Ngọc Duy
2015-12-28 19:59 ` 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=1451181092-26054-1-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).