All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Willford <kewillf@microsoft.com>
To: Jacob Keller <jacob.keller@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	"git@vger.kernel.org" <git@vger.kernel.org>,
	"peff@peff.net" <peff@peff.net>,
	"pclouds@gmail.com" <pclouds@gmail.com>
Subject: RE: [PATCH 1/1] reset: fix reset when using the sparse-checkout feature.
Date: Wed, 13 Sep 2017 17:09:15 +0000	[thread overview]
Message-ID: <SN1PR21MB0014D30A30F70B7DEAA17478B76E0@SN1PR21MB0014.namprd21.prod.outlook.com> (raw)
In-Reply-To: <CA+P7+xqcAh4v4gDQOm-feYGc1EmFztAu0zMg2xnp8Gn4=BzkoQ@mail.gmail.com>

> From: Jacob Keller [mailto:jacob.keller@gmail.com]
> Sent: Tuesday, September 12, 2017 7:39 PM
> 
> On Tue, Sep 12, 2017 at 4:30 PM, Kevin Willford <kewillf@microsoft.com> wrote:
> >
> > Sorry.  It was not in the sparse-checkout file.
> > $ git config core.sparsecheckout true
> > $ echo /i > .git/info/sparse-checkout
> > $ git checkout -f
> > was ran in the modified file case as well and "i" was the only file in the
> > working directory before reset.
> >
> 
> 
> I'm assuming then that you mean that some file "m" is modified by the
> commit, and do not mean to say that it has local modifications in the
> working tree? That is not what I had inferred from earlier, so I was
> very much confused.
> 

Yes

> In this example, the only file actually checked out is "i", as
> everything else will have the skip-worktree bit set..?
> 

Yes

> So doing git reset HEAD~1 will reset the branch back one commit, and
> now because of this reset is clearing the skip worktree flag, and
> since you never had a copy of it checked out it is notified as
> deleted, because it's no longer marked as skip-worktree?
> 

Correct

> 
> I think the real fix is to stop having reset clear skip-worktree, no?
> 
> By definition if you do a sparse checkout, you're telling git "I only
> care about the files in this sparse checkout, and do not concern me
> with anything else"... So the proposed fix is "since git cleared the
> skip-worktree flag, we should actually also copy the file out again."
> but I think the real problem is that we're clearing skip worktree to
> begin with?

This certainly is an option but I would have some questions with this
approach.  Does this statement, "I only care about the files in this
sparse checkout, and do not concern me with anything else", mean
that git should not change files outside the sparse-checkout whether
they are in the working directory or the index?  Or does that only
apply to the working directory and the index version of files can
change to whatever git decides?  So in the example above would
"m" be the HEAD~1 version of the file in the index or the HEAD
version before the reset?  Does this apply to all git commands,
merge, rebase, cherry-pick, etc?  What about when there is a merge
conflict with a file that is outside the sparse checkout?

Seems to me it is a lot more complex than only caring about the files
in the sparse checkout and no concern for anything else.  Personally
I would like to error on the side of letting the user decide what they
want to do, even if that means turning off the skip-worktree bit and
putting the working directory into an expected state.



  reply	other threads:[~2017-09-13 17:09 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-08 18:00 [PATCH 0/1] reset: fix mixed reset when using sparse-checkout Kevin Willford
2017-09-08 18:00 ` [PATCH 1/1] reset: fix reset when using the sparse-checkout feature Kevin Willford
2017-09-08 18:54   ` Torsten Bögershausen
2017-09-08 19:04     ` Junio C Hamano
2017-09-08 19:01   ` Junio C Hamano
2017-09-08 20:08     ` Kevin Willford
2017-09-08 19:12   ` Junio C Hamano
2017-09-08 20:02     ` Kevin Willford
2017-09-09  3:18       ` Junio C Hamano
2017-09-09  4:54         ` Kevin Willford
2017-09-11  4:01           ` Junio C Hamano
2017-09-11 11:15             ` Johannes Schindelin
2017-09-12  3:56               ` Junio C Hamano
2017-09-12 20:20                 ` Kevin Willford
2017-09-12 22:29                   ` Jacob Keller
2017-09-12 23:30                     ` Kevin Willford
2017-09-13  1:39                       ` Jacob Keller
2017-09-13 17:09                         ` Kevin Willford [this message]
2017-09-13 22:17                         ` Junio C Hamano
2017-09-14 14:26                           ` Kevin Willford
2017-09-15  5:00                             ` Junio C Hamano
2017-09-15 17:21                               ` Kevin Willford
2017-09-15 21:33                                 ` Jacob Keller

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=SN1PR21MB0014D30A30F70B7DEAA17478B76E0@SN1PR21MB0014.namprd21.prod.outlook.com \
    --to=kewillf@microsoft.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jacob.keller@gmail.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.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.