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

Re: [PATCH] git-p4: Corrected typo.

From
Vitor Antunes <vitor.hda@gmail.com>
Date
Jan 31, 2011, 13:39 UTC
Message-ID
<AANLkTinKQRfwaMpGQiDCkh1RerQ_MrakwvNLAqgmbF9A@mail.gmail.com>
In-Reply-To
<AANLkTinrALdy9w7K50r=k-oMV9V5+7+LKvui_DSmJ6nK@mail.gmail.com>
Hi Thomas,
On Mon, Jan 31, 2011 at 12:51 PM, Thomas Berg <merlin66b@gmail.com> wrote:
Show 9 quoted lines
>> Maybe I'm not seeing some obvious limitation, but I can't imagine a
>> branching structure that can't be imported into git. Could please you
>> give me an example?
>
> Here I was thinking of the fact that git-p4 (last time I checked the
> implementation ) uses the list of branch specs in Perforce for
> figuring out the parent of a branch. Our branch specs have changed
> over time (they are used for different integration purposes), so they
> are no longer usable for this purpose.

My personal git-p4 script uses a configuration option to define the list of branches. I also added an option to get the list of branches filtered by user (p4 branches -u), which avoids waiting for the server since I don't have any branches defined.

> I also discovered bugs in git-p4: in some cases, if the first submit
> to a new branch in Perforce is not identical to the branch it derives
> from, the import was not correct.
Another thing that I modified was the following lines:

1559 for (prev, cur) in zip(self.previousDepotPaths, depotPaths): 1560 for i in range(0, min(len(cur), len(prev))): 1561 if cur[i] <> prev[i]: 1562 i = i - 1 1563 break

This tries to find the root directory of all branches, but does that comparing char by char. So, if you have something like:

//depot/branches/branch //depot/branches/branch_test1 //depot/branches/branch_test2

It will assume that your root branch is //depot/branches/branch, which is wrong. I've modified this to split the string by "/" and compare those items, making sure it will detect //depot/branches as the root directory.

Show 10 quoted lines
> One other issue with Perforce, CVS and many other systems is that they
> branch per file. Therefore Perforce can represent partial merges
> between two branches, which git cannot. Because of this, translating
> merges in Perforce to merges in git is not always possible or
> desirable:
> - if you integrate just one file from one branch to another in
> Perforce, and leave the rest unmerged, you probably want to represent
> it as a normal git commit (not a merge)
> - if you merge almost everything, but leave out a file for some
> reason, you may still want to represent it as a merge in git

Yes, merge detection is something that is working. I never tried to look into this because I don't find it too important for my work flow.

Show 5 quoted lines
> The git-p4raw tool has excellent handling of merges, see details in
> this file around line 4300:
> https://github.com/samv/git-p4raw/blob/master/git-p4raw
> It supports several algorithms for automatic merge detection, as well
> as manually changing it after the import is done.
I'll have to look into this later :)
Bye,
-- 
Vitor Antunes
Previous: Thomas BergNext: Vitor Antunes
Message 12 of 15 in “git-p4: Rename and copy detection improvements.”
  1. 0/2 git-p4: Rename and copy detection improvements.Vitor Antunes, Nov 19, 2010
  2. 1/2 git-p4: Don't edit renamed files if not necessary.Vitor Antunes, Nov 19, 2010
  3. Vitor AntunesNov 19, 2010
  4. git-p4: Corrected typo.Vitor Antunes, Nov 25, 2010
  5. Vitor AntunesJan 27, 2011
  6. Thomas BergJan 28, 2011
  7. Vitor AntunesJan 29, 2011
  8. Vitor AntunesJan 30, 2011
  9. Thomas BergJan 30, 2011
  10. Vitor AntunesJan 31, 2011
  11. Thomas BergJan 31, 2011
  12. Vitor AntunesJan 31, 2011
  13. Vitor AntunesJan 31, 2011
  14. Thomas BergFeb 4, 2011
  15. 2/2 git-p4: Added copy detection supportVitor Antunes, Nov 19, 2010

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.