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