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

Re: [PATCH/RFC 2/2] git-p4: Add complex test case for branch import

From
PWPete Wyckoff <pw@padd.com>
Date
Aug 23, 2011, 23:10 UTC
Message-ID
<20110823231034.GA11918@arf.padd.com>
In-Reply-To
<CAOpHH-V92CcWm1tCwvb=pJux5PKbYQoG=E8M_Pc2JGu00wnR8Q@mail.gmail.com>
vitor.hda@gmail.com wrote on Tue, 23 Aug 2011 23:02 +0100:
Show 12 quoted lines
> On Tue, Aug 23, 2011 at 3:27 AM, Pete Wyckoff <pw@padd.com> wrote:
> > I think I understand the problem now, and have a small test case
> > to see what's going wrong.  Your solution is definitely
> > sub-optimal.  :)  Is there anything that can be done with
> > --import-marks and --export-marks?
> 
> Don't know if you agree, but I think it would be better to keep git-p4
> from storing extra files in the filesystem. And, as far as I understood,
> these two options require extra files.
> But I don't think marks would help us that much. We already have
> something similar: the changelist number in the commit log. The big
> problem is that P4 does not store a pointer to the previous changelist.
Agreed.
Show 28 quoted lines
> > Could you guess at the branch point using p4?  I.e. for each file
> > in the new branch, grab the change that caused its most recent
> > revision (the #xx part).  Pick the max of those changes.  In git,
> > find the commit whith "change = ..." that you just discovered.
> > That's the parent.
> 
> Yes, I think this would work. Nevertheless, I would prefer not to do so
> much pooling on the P4 server because when we're in a remote location in
> regards to the P4 proxy server this kind of command becomes rather slow.
> And if the branch has many files this may become cumbersome.
> 
> > Even this won't be perfect, and I'm not even sure if it's less
> > icky than diff-tree.
> 
> From what I can see, the two possible solutions would be:
> 
> a) Running a "filelog" on all files. This may become slower when the
>    branch has lots of files. There's also the problem in needing to
>    contact the P4 proxy server every time.
> 
> b) Using diff-tree. This will be slower if the original changelist is
>    very far from the latest one, but has the advantage of being run
>    locally. It has the disadvantage of not having an apparent
>    compatibility with fast-import.
> 
> In my personal point of view, diff-tree solution still looks better, if
> it weren't for the fast-import issue. Now if we could just figure out
> how to overcome this issue...

Nice analysis. P4 can indeed be the bottleneck, even on near servers if there are lots of files. Diff-tree seems like the better choice to find the branch point. I don't understand fully why the way we are using fast-import causes these problems. Will look at that next.

		-- Pete
Previous: Vitor AntunesNext: Vitor Antunes
Message 8 of 11 in “Search for parent commit in new branch import”
  1. 0/2 Search for parent commit in new branch importVitor Antunes, Aug 19, 2011
  2. 1/2 git-p4: Search for parent commit on branch creationVitor Antunes, Aug 19, 2011
  3. 2/2 git-p4: Add complex test case for branch importVitor Antunes, Aug 19, 2011
  4. Pete WyckoffAug 20, 2011
  5. Vitor AntunesAug 22, 2011
  6. Pete WyckoffAug 23, 2011
  7. Vitor AntunesAug 23, 2011
  8. Pete WyckoffAug 23, 2011
  9. Vitor AntunesAug 24, 2011
  10. Vitor AntunesAug 24, 2011
  11. Pete WyckoffAug 27, 2011

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.