You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by "Murugan, Gnanaprakash Export License Required - US Collins" <Gn...@collins.com> on 2022/05/13 07:42:47 UTC
RE: [External] Re: Question about mergeinfo and 2-url merge
Hi Team,
I am getting this below error message while doing checkout on local machine. Please let me know how to fix this problem.
[cid:image001.png@01D866CB.1E127530]
Regards,
Prakash
-----Original Message-----
From: Christophe Royer <ch...@gmail.com>
Sent: Friday, May 13, 2022 5:11 AM
To: Daniel Shahaf <d....@daniel.shahaf.name>; users@subversion.apache.org
Subject: [External] Re: Question about mergeinfo and 2-url merge
Thank you Daniel, below is the script I used (line wrapping might mess up a few lines, sorry)
As I was cleaning it up, I realized that in 1.6.17 (yes, still using it, and where I saw the issue first) the behavior is different (2-url merge gives me a tree conflict).
I am really tempted to delete the extra merginfo-that is my biggest concern at this time.
--------- start of script (dos cmd)
@ECHO off
REM -- Script to test handling of merge info during a 2-url merge
ECHO.
ECHO -- Create empty repo in current folder md repo svnadmin create --fs-type fsfs repo\testRepo
SET repoRoot=file:///%CD:\=/%/repo
ECHO.
ECHO -- Create sructure to import in repo md WC md WC\trunk md WC\branches svn import WC %repoRoot%/testRepo -m"Importing"
rd /s /Q WC
ECHO.
ECHO -- Check out working copy of the entire repo svn co %repoRoot%/testRepo workingCopy
ECHO.
ECHO -- Play in trunk, adding one file
pushd workingCopy\trunk
echo Adding fileA in trunk>FileA.txt
svn add FileA.txt
svn commit . -m"Adding first file to trunk"
popd
ECHO.
ECHO -- Create 2 branches from trunk. This does not create any mergeinfo svn copy %repoRoot%/testRepo/trunk %repoRoot%/testRepo/branches/foo -m"branching to foo" --parents svn copy %repoRoot%/testRepo/trunk %repoRoot%/testRepo/branches/bar -m"branching to bar" --parents
ECHO.
ECHO -- Add a file to trunk
pushd workingCopy\trunk
echo Adding fileB in trunk>FileB.txt
svn add FileB.txt
svn commit . -m"Adding second file to trunk"
popd
ECHO.
ECHO -- Edit file in foo
svn update workingCopy
pushd workingCopy\branches\foo
echo Editing first file in foo>>fileA.txt svn commit . -m"Editing file in foo"
popd
svn update workingCopy
ECHO.
ECHO -- Merge latest from trunk to foo. This creates mergeinfo in foo and brings FileB svn merge %repoRoot%/testRepo/trunk workingCopy\branches\foo svn commit workingCopy\branches\foo -m"Merging latest from trunk to foo"
svn update workingCopy
ECHO.
ECHO -- Perform 2-URL merge to get diff between trunk and foo and apply to bar ECHO.
ECHO -- Showing the diff first: fileB is not listed svn diff %repoRoot%/testRepo/trunk %repoRoot%/testRepo/branches/foo ECHO.
ECHO -- Now merging. svn 1.6.17 shows tree conflict on FileB. svn 1.14.2 shows no conflict svn merge %repoRoot%/testRepo/trunk %repoRoot%/testRepo/branches/foo workingCopy\branches\bar REM next line is for 1.6.17 only REM : svn resolve workingCopy\branches\bar\FileB.txt --accept working svn commit workingCopy\branches\bar -m"Merging diff from trunk to foo into bar"
ECHO.
ECHO -- In bar, mergeinfo shows that part of trunk was merged in bar, but this is not correct ECHO -- For instance, mergeinfo shows Trunk 4-6, but the file added in trunk at r5 is not bar svn update workingCopy
ECHO.
ECHO. No fileB in here
dir workingCopy\branches\bar
ECHO.
ECHO.
svn pg svn:mergeinfo workingCopy\branches\bar svn mergeinfo workingCopy\trunk workingCopy\branches\bar
------------------ end of script
Christophe
On 5/12/2022 10:52 AM, Daniel Shahaf wrote:
> Could you post the script, please? It's hard to answer your question
> when it describes the details verbally rather than machine-readably.
>
> It sounds like a supported scenario.
>
> Cheers,
>
> Daniel
>
>
> Christophe Royer wrote on Fri, 06 May 2022 21:46 +00:00:
>> I recently saw some mergeinfo that I can explain but still look wrong
>> to me. Not sure if it’s a wrong usage of svn, or possibly a defect,
>> and so far I have not seen any post about this. Here is the scenario
>> (I have a script, batch file for windows, if needed):
>>
>> Seen first using svn 1.6.17, confirmed with with svn 1.14.2
>>
>> Here is the setup:
>>
>> * Create repo with trunk and branches
>> * Add a file to trunk
>> * Create 2 branches from trunk, foo and bar (at this point,
>> neither branch has mergeinfo for trunk)
>> * In foo, edit the existing file
>> * Make some changes in trunk (I added a file)
>> * Merge trunk to foo (this bring the new file in and adds
>> mergeinfo for trunk, including the revision where the new file was
>> added)
>>
>> Now the fun part:
>>
>> * Do a 2-url merge to merge the changes solely made in foo, and
>> apply them to bar
>>
>> The diff between trunk and foo shows only one file was edited (the
>> second file does not show, since merge made it the same in trunk and
>> foo). But the diff also shows mergeinfo changed between trunk and
>> foo, so those get merged to bar, which seem appropriate.
>>
>> However, it follows that bar now indicates that it has those changes
>> from trunk (esp. the one revision where the file was added in trunk)
>> but of course that file is not in bar…And this occurs whether or not
>> I use –ignore-ancestry.
>>
>> I could use cherrypicking instead, but I did not want to have to pick
>> specific changes (I really want all the changes made in foo, but only
>> those changes)
>>
>> So,
>>
>> 1)is that a misuse of svn, an unsupported scenario?. Or is there room
>> for improvement to the mergeinfo management?
>>
>> 2)should I manually delete those “unwanted” mergeinfo? If I don’t, I
>> have an idea of the issues I can run into. But I am afraid to miss
>> something here, and removing them would cause other issues.
>>
>>
>> Thanks
>>
>> Christophe