Hi,

I came across a case where svn-normalizer did remove mergeinfo for a branch which was still present but got renamed in one revision. I understand why it behaves the current way, but maybe in favor of the improvements done for handling moves it might also be a good idea to have svn-normalizer better handle these scenarios?

For a quick demo/test-case showing the underlying issue, I've attached a batch-file (for windows) demonstrating the case.

As you see the resulting mergeinfo for FooProject/FooSDK is:
/SDK/FooSDK/trunk:2-3
/SDK/FooSDK2/tags/v2:6
/SDK/FooSDK2/trunk:4

Running svn-normalizer analyse now reports
/SDK/FooSDK as a deleted branch (in r4) and running svn-normalizer normalize --remove-obsoletes would then drop this mergeinfo.

Suggested behavior would be that if a branch is renamed and still present on trunk, it would not be removed when using svn-normalizer normalize --remove-obsoletes.

Regards,
Stefan
@echo off

md testrepo
svnadmin create testrepo

md testout
svn co file:///E:/[delete]SVNTest/testrepo testout

cd testout

REM create test tree
md SDK
md SDK\FooSDK
md SDK\FooSDK\tags
md SDK\FooSDK\trunk
echo "Test" >SDK\FooSDK\trunk\test.txt
md FooProject
svn add *
svn ci -m TestSetup

REM tag current FooSDK trunk
svn cp SDK\FooSDK\trunk SDK\FooSDK\tags\v1
svn ci -m "Tagged FooSDK v1"

REM pull in FooSDK into project
svn cp SDK\FooSDK\tags\v1 FooProject\FooSDK
svn ci -m "Pulled-in FooSDK"

REM rename SDK\FooSDK to FooSDK2
svn up
svn mv SDK\FooSDK SDK\FooSDK2
svn ci -m "Renamed FooSDK to FooSDK2"

REM create v2 of FooSDK2
echo "Test2" >SDK\FooSDK2\trunk\test.txt
svn ci -m "Updated FooSDK2 to v2"
svn cp SDK\FooSDK2\trunk SDK\FooSDK2\tags\v2
svn ci -m "Tagged FooSDK2 v2"

REM update FooProj to FooSDK2
svn merge file:///E:/[delete]SVNTest/testrepo/SDK/FooSDK2/tags/v2 
FooProject\FooSDK
svn ci -m "Updated FooSDK to v2"

REM this produces mergeinfos for FooProject/FooSDK as follows:
REM /SDK/FooSDK/trunk:2-3
REM /SDK/FooSDK2/tags/v2:6
REM /SDK/FooSDK2/trunk:4

Reply via email to