git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Rast <trast@student.ethz.ch>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: git@vger.kernel.org, Jan Wielemaker <J.Wielemaker@uva.nl>
Subject: Re: [RFH] filter-branch: ancestor detection weirdness
Date: Fri, 8 Aug 2008 20:37:45 +0200	[thread overview]
Message-ID: <200808082037.49918.trast@student.ethz.ch> (raw)
In-Reply-To: <alpine.DEB.1.00.0808081632580.24820@pacific.mpi-cbg.de.mpi-cbg.de>

[-- Attachment #1: Type: text/plain, Size: 1943 bytes --]

Johannes Schindelin wrote:
> On Fri, 8 Aug 2008, Thomas Rast wrote:
> 
> > I think a more careful use of rev-list -1 is actually a correct and easy 
> > way to figure out an ancestor.
> 
> I have not looked at your patch closely, or at your explanation, but I am 
> really certain that every attempt to replace the --boundary with a -1 must 
> fail.
> 
> Let me show you why I think that.  Just look at this history:
> 
> A - B - C
>   /
> D
> 
> Where all commits except B touch the inside directory.  Two options:

'rev-list' "solves" this problem for us.  At the point where we are
rewriting the branch pointers, commits have already been rewritten to
whatever 'git rev-list --parents -- $subdir' told us to make them.  I
think there are only two cases for its output:

(a) Both A and D bring the same subdirectory contents.  'rev-list
    --parents -- $subdir' drops one side of the merge during pruning.
    It does not look past the merge to see whether the contents were
    arrived at via different changesets.  Thus the history becomes

      A' -- C'

      D'

    and even that only if D was reachable by a different ref,
    otherwise D' is simply dropped.

(b) A and D bring different $subdir contents.  Then the merge is
    interesting and remains.  History is now

      A' -- B' -- C'
           /
      D' -/

Neither of those cases is a problem for the -1 strategy.  A branch
'topic' pointing to B will be rewritten to (a) A' and (b) B'.

IOW, either the merge remains and there is no problem, or the side
branches vanish too and there is no problem.  rev-list never "forward
simplifies" merges; it merely tries to prune away commits on the
incoming side of the merge until all its parents are interesting.

Either that, or I missed something obvious.  I think I'll have to come
up with a better commit message...

- Thomas

-- 
Thomas Rast
trast@student.ethz.ch


[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

  reply	other threads:[~2008-08-08 18:38 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-06 13:39 git filter-branch --subdirectory-filter, still a mistery Jan Wielemaker
2008-08-07  7:13 ` Jan Wielemaker
2008-08-07  7:50 ` Thomas Rast
2008-08-07 10:14   ` Jan Wielemaker
2008-08-07 23:48     ` Thomas Rast
2008-08-07 23:50       ` [PATCH] filter-branch: be more helpful when an annotated tag changes Thomas Rast
2008-08-08 20:10         ` [TOY PATCH] filter-branch: add option --delete-unchanged Thomas Rast
2008-08-09  0:35           ` Johannes Schindelin
2008-08-11 10:43           ` Jan Wielemaker
2008-09-14 16:29           ` Felipe Contreras
2008-08-07 23:54       ` [RFH] filter-branch: ancestor detection weirdness Thomas Rast
2008-08-08 11:42         ` Johannes Schindelin
2008-08-08 14:14           ` Thomas Rast
2008-08-08 14:16             ` [PATCH] filter-branch: fix ancestor discovery for --subdirectory-filter Thomas Rast
2008-08-08 14:39             ` [RFH] filter-branch: ancestor detection weirdness Johannes Schindelin
2008-08-08 18:37               ` Thomas Rast [this message]
2008-08-08 18:39                 ` [PATCH v2] filter-branch: fix ref rewriting with --subdirectory-filter Thomas Rast
2008-08-09  0:16                 ` [RFH] filter-branch: ancestor detection weirdness Johannes Schindelin
2008-08-09  1:25                   ` Junio C Hamano
2008-08-09  9:25                     ` Thomas Rast
2008-08-09  9:35                       ` Thomas Rast
2008-08-10 14:02                     ` [PATCH] filter-branch: use --simplify-merges Thomas Rast
2008-08-12  1:54                       ` Junio C Hamano
2008-08-12  2:13                         ` Junio C Hamano
2008-08-12  5:47                           ` Thomas Rast
2008-08-12  6:59                             ` Junio C Hamano
2008-08-12  8:45                               ` [PATCH 0/3] filter-branch --subdirectory-filter improvements Thomas Rast
2008-08-12 12:11                                 ` Jan Wielemaker
2008-08-12  8:45                               ` [PATCH 1/3] filter-branch: Extend test to show rewriting bug Thomas Rast
2008-08-12  8:45                               ` [PATCH 2/3] filter-branch: fix ref rewriting with --subdirectory-filter Thomas Rast
2008-08-12  8:45                               ` [PATCH 3/3] filter-branch: use --simplify-merges Thomas Rast
2008-08-12  8:18                     ` [RFH] filter-branch: ancestor detection weirdness Petr Baudis
2008-08-12 18:33                       ` Junio C Hamano
2008-08-09 10:00                   ` Thomas Rast
2008-08-12 21:33                     ` Junio C Hamano
2008-08-12 22:15                       ` Thomas Rast
2008-08-08  7:44       ` git filter-branch --subdirectory-filter, still a mistery Jan Wielemaker
2008-08-08 11:25       ` Jan Wielemaker
2008-08-07 14:04   ` [PATCH] Documentation: filter-branch: document how to filter all refs Thomas Rast
2008-08-07 14:16     ` [PATCH v2] " Thomas Rast

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=200808082037.49918.trast@student.ethz.ch \
    --to=trast@student.ethz.ch \
    --cc=J.Wielemaker@uva.nl \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    /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).