From: Junio C Hamano <gitster@pobox.com>
To: David Turner <dturner@twopensource.com>
Cc: git@vger.kernel.org, "Anatole Shaw" <git-devel@omni.poc.net>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: Re: [PATCH v2] unpack-trees: don't update files with CE_WT_REMOVE set
Date: Fri, 17 Jul 2015 14:34:25 -0700 [thread overview]
Message-ID: <xmqqbnfa1na6.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1437167967-5933-1-git-send-email-dturner@twopensource.com> (David Turner's message of "Fri, 17 Jul 2015 17:19:27 -0400")
David Turner <dturner@twopensource.com> writes:
> Don't update files in the worktree from cache entries which are
> flagged with CE_WT_REMOVE.
>
> When a user does a sparse checkout, git removes files that are marked
> with CE_WT_REMOVE (because they are out-of-scope for the sparse
> checkout). If those files are also marked CE_UPDATE (for instance,
> because they differ in the branch that is being checked out and the
> outgoing branch), git would previously recreate them. This patch
> prevents them from being recreated.
>
> These erroneously-created files would also interfere with merges,
> causing pre-merge revisions of out-of-scope files to appear in the
> worktree.
>
> Signed-off-by: Anatole Shaw <git-devel@omni.poc.net>
> Signed-off-by: David Turner <dturner@twopensource.com>
> ---
That's much more readable and understandable ;-)
Duy Cc'ed for final sanity check and possiible extra comments.
Thanks.
> t/t1090-sparse-checkout-scope.sh | 52 ++++++++++++++++++++++++++++++++++++++++
> unpack-trees.c | 2 +-
> 2 files changed, 53 insertions(+), 1 deletion(-)
> create mode 100755 t/t1090-sparse-checkout-scope.sh
>
> diff --git a/t/t1090-sparse-checkout-scope.sh b/t/t1090-sparse-checkout-scope.sh
> new file mode 100755
> index 0000000..1f61eb3
> --- /dev/null
> +++ b/t/t1090-sparse-checkout-scope.sh
> @@ -0,0 +1,52 @@
> +#!/bin/sh
> +
> +test_description='sparse checkout scope tests'
> +
> +. ./test-lib.sh
> +
> +test_expect_success 'setup' '
> + echo "initial" >a &&
> + echo "initial" >b &&
> + echo "initial" >c &&
> + git add a b c &&
> + git commit -m "initial commit"
> +'
> +
> +test_expect_success 'create feature branch' '
> + git checkout -b feature &&
> + echo "modified" >b &&
> + echo "modified" >c &&
> + git add b c &&
> + git commit -m "modification"
> +'
> +
> +test_expect_success 'perform sparse checkout of master' '
> + git config --local --bool core.sparsecheckout true &&
> + echo "!/*" >.git/info/sparse-checkout &&
> + echo "/a" >>.git/info/sparse-checkout &&
> + echo "/c" >>.git/info/sparse-checkout &&
> + git checkout master &&
> + test_path_is_file a &&
> + test_path_is_missing b &&
> + test_path_is_file c
> +'
> +
> +test_expect_success 'merge feature branch into sparse checkout of master' '
> + git merge feature &&
> + test_path_is_file a &&
> + test_path_is_missing b &&
> + test_path_is_file c &&
> + test "$(cat c)" = "modified"
> +'
> +
> +test_expect_success 'return to full checkout of master' '
> + git checkout feature &&
> + echo "/*" >.git/info/sparse-checkout &&
> + git checkout master &&
> + test_path_is_file a &&
> + test_path_is_file b &&
> + test_path_is_file c &&
> + test "$(cat b)" = "modified"
> +'
> +
> +test_done
> diff --git a/unpack-trees.c b/unpack-trees.c
> index 2927660..11a5300 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -223,7 +223,7 @@ static int check_updates(struct unpack_trees_options *o)
> for (i = 0; i < index->cache_nr; i++) {
> struct cache_entry *ce = index->cache[i];
>
> - if (ce->ce_flags & CE_UPDATE) {
> + if (ce->ce_flags & CE_UPDATE && !(ce->ce_flags & CE_WT_REMOVE)) {
> display_progress(progress, ++cnt);
> ce->ce_flags &= ~CE_UPDATE;
> if (o->update && !o->dry_run) {
next prev parent reply other threads:[~2015-07-17 21:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-17 19:48 [PATCH] unpack-trees: don't update files flagged for deletion David Turner
2015-07-17 20:05 ` Junio C Hamano
2015-07-17 21:19 ` [PATCH v2] unpack-trees: don't update files with CE_WT_REMOVE set David Turner
2015-07-17 21:34 ` Junio C Hamano [this message]
2015-07-18 8:37 ` Duy Nguyen
2015-07-18 21:20 ` Junio C Hamano
2015-07-21 20:52 ` Junio C Hamano
2015-07-20 17:40 ` David Turner
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=xmqqbnfa1na6.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=dturner@twopensource.com \
--cc=git-devel@omni.poc.net \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.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.