git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Johannes Sixt <j.sixt@viscovery.net>, git@vger.kernel.org
Subject: Re: [PATCH] filter-branch: do not consider diverging submodules a 'dirty worktree'
Date: Wed, 04 Feb 2009 10:57:09 -0800	[thread overview]
Message-ID: <7vbptit4hm.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <alpine.DEB.1.00.0902041915070.22763@intel-tinevez-2-302> (Johannes Schindelin's message of "Wed, 4 Feb 2009 19:15:53 +0100 (CET)")

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> On Wed, 4 Feb 2009, Junio C Hamano wrote:
>
>> Johannes Sixt <j.sixt@viscovery.net> writes:
>> 
>> > Because if the repository is non-bare, then filter-branch updates the
>> > work-tree at the end of the run; we don't want to overwrite uncommitted
>> > work in this case.
>> >
>> > This behavior is a relic from cg-admin-rewritehist, I think. I've never
>> > found it useful.
>> 
>> Ok, I think "read-tree -m -u HEAD" at the end sort of makes sense, if you
>> filtered the branch you are currently sitting on.  Does that mean we do
>> not have to barf on dirtyness if we can tell if the filter-branch will not
>> touch the current branch at all?  Again, I am not suggesting it as an
>> improvement, but I am trying to see if I am talking a total nonsense.
>
> That's correct.  Checking if we would touch the current branch is too 
> expensive here, that's why we don't do it.

Ok, so these exchange suggests that the commit log message needs a bit
more explanation why the check matters before describing why submodules
should not be checked.  Something like this, perhaps?

    At the end of filter-branch in a non-bare repository, the work tree is
    updated with "read-tree -m -u HEAD", to carry the change forward in
    case the current branch was rewritten.  In order to avoid losing any
    local change during this step, filter-branch refuses to work when
    there are local changes in the work tree.

    This "read-tree -m -u HEAD" operation does not affect what commit is
    checked out in a submodule (iow, it does not touch .git/HEAD in a
    submodule checkout), and checking if there is any local change to the
    submodule is not useful.

While I think it makes sense to ignore submodules for the diff-files
check, I do not think it is correct to do so in the check to see if you
have staged changes.  If you updated what commit should be checked out in
your index, and if you run "read-tree -m -u HEAD", it can conflict the
same way as a staged change to a regular blob.  The most trivial example
would be if your filtering were to remove any submodule.  Your work tree
change wanted to modify while the branch switching is to remove and you
have a modify/remove conflict right there.  Or am I again confused?

  reply	other threads:[~2009-02-04 18:58 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1233758410u.git.johannes.schindelin@gmx.de>
2009-02-04 14:40 ` [PATCH] filter-branch: do not consider diverging submodules a 'dirty worktree' Johannes Schindelin
2009-02-04 17:17   ` Junio C Hamano
2009-02-04 17:24     ` Johannes Schindelin
2009-02-04 17:25     ` Johannes Sixt
2009-02-04 18:00       ` Junio C Hamano
2009-02-04 18:15         ` Johannes Schindelin
2009-02-04 18:57           ` Junio C Hamano [this message]
2009-02-05 17:39             ` Johannes Schindelin
2009-02-05  6:49         ` Johannes Sixt
     [not found] <cover.1233855372u.git.johannes.schindelin@gmx.de>
2009-02-05 17:37 ` Johannes Schindelin
2009-02-05 17:43   ` 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=7vbptit4hm.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=j.sixt@viscovery.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 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).