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$(echo .)com \
--cc=dturner@twopensource$(echo .)com \
--cc=git-devel@omni$(echo .)poc.net \
--cc=git@vger$(echo .)kernel.org \
--cc=pclouds@gmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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