git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/3] git-p4: Search for parent commit on branch creation

From
PWPete Wyckoff <pw@padd.com>
Date
Jan 17, 2012, 22:18 UTC
Message-ID
<20120117221830.GA366@padd.com>
In-Reply-To
<CAOpHH-XUj7tF4O_kXfxq2e9Y4VmybNLCqGku_-9H1X+c7v=xwQ@mail.gmail.com>
vitor.hda@gmail.com wrote on Tue, 17 Jan 2012 00:10 +0000:
Show 16 quoted lines
> On Mon, Jan 16, 2012 at 11:41 PM, Vitor Antunes <vitor.hda@gmail.com> wrote:
> > On Mon, Jan 16, 2012 at 6:57 PM, Pete Wyckoff <pw@padd.com> wrote:
> >> 1.  Move the tempBranch commit outside of the "for blob" loop.
> >>    It can have no parent, and the diff-tree will still tell you
> >>    if you found the same contents.  Instead of a ref for
> >>    each blob inspected for each change, you'll just have one ref
> >>    per change.  Only one checkpoint() after the tempBranch
> >>    commit should be needed.
> >
> > You're right. Completely oversaw that. Will improve the code
> > accordingly.
> 
> Apparently I did not oversee it. Assume you have added a new file to
> HEAD of parent branch, but you branched from a previous commit. When the
> new branch is committed over HEAD the new file will, incorrectly, be
> part of it and diff-tree will not work as expected.

I don't get it. This algorithm works on the fact that a "branch" in p4 creates a new change that looks exactly like a previous change.

The git-p4 sync step, when it detects a branch, starts by saving the change in a commit with parent = null, so it is its own new branch, an orphan, with no parents.

Now the task is to find some commit that has an identical tree to this temporary one. You walk back all known p4 commits to try to find one that is the same. It doesn't matter if any of those p4 commits have other commits on top of them.

At each step in the backward walk, the comparison is against the unchanged orphan commit.

An ascii-art picture might help me.  Or even a test case.
> I should avoid taking 6 months to submit a patch to avoid forgetting why
> I did what I did :)
Yeah, and now you have to explain it all over to me again too.  :)
		-- Pete
Previous: Vitor AntunesNext: Vitor Antunes
Message 7 of 10 in “git-p4: Search for parent commit on branch creation”
  1. 0/3 git-p4: Search for parent commit on branch creationVitor Antunes, Jan 16, 2012
  2. 1/3 git-p4: Add checkpoint() taskVitor Antunes, Jan 16, 2012
  3. 2/3 git-p4: Search for parent commit on branch creationVitor Antunes, Jan 16, 2012
  4. Pete WyckoffJan 16, 2012
  5. Vitor AntunesJan 16, 2012
  6. Vitor AntunesJan 17, 2012
  7. Pete WyckoffJan 17, 2012
  8. Vitor AntunesJan 17, 2012
  9. 3/3 git-p4: Add test case for complex branch importVitor Antunes, Jan 16, 2012
  10. Pete WyckoffJan 16, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.