移动后Subversion无法合并

时间:2010-01-14 13:27:18

标签: svn svn-merge

我是Subversion的新手,但是我已经使用过ClearCase等其他版本控制系统多年了。

我的老板让我修复这个项目,以便它可以用Maven而不是Ant构建。我必须做的一件重要事情是将src/com移至src/main/java/com,并将test/com移至src/test/java/com,我使用svn mv命令执行此操作。我愚蠢地假设,因为我使用Subversion命令移动目录,Subversion会知道事情已被移动。当我将我的分支合并到主干时,它似乎工作。但是现在有人刚刚完成了在我工作之前分支的分支机构的工作。因此我们将他的东西合并到主干中,基本上Subversion似乎认为“好吧,他对src/com/foo/bar/baz.java进行了更改,但该目录不再存在,所以它无关紧要,所以丢弃它” 而不是我的预期,这是“好的,他对src/com/foo/bar/baz.java进行了更改,但src/com已被移动,因此我需要将其合并到src/main/java/com/foo/bar/baz.java

有没有办法让Subversion进行版本管理,还是我会在接下来的两天手动合并这个人的变化?

4 个答案:

答案 0 :(得分:13)

直接回答您的问题:

  

有没有办法让Subversion进行版本管理,还是我会在接下来的两天手动合并这个人的变化?

你应该能够让自己更轻松一点。

你可以采取一些措施来缓解一些痛苦(假设布局如下)

/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com

在将src / com移动到src / main / java / com并将test / com移动到src / test / java / com之前,你可以做到:

cd $TRUNK
svn merge -r N:M http://server/branch/foo .

你现在可以做的是:

cd $TRUNK
svn merge -r N:M http://server/branch/foo/src/com src/main/java/com
svn merge -r N:M http://server/branch/foo/test/com src/test/java/com

希望这有助于为您节省一些时间。

答案 1 :(得分:2)

这听起来像是一次性问题。我建议您可以使用svn diff > /to/some/file.patch(或普通差异)将更改保存到文件中,然后使用patch -p0 < /to/some/file.path将其应用到已移动的主干上。

答案 2 :(得分:0)

有人试过这个软件吗? xMerge

这是SmartSVN的插件,但看起来就像这样。 如果有人正在使用它,我将不胜感激,如果发送给我审查。

答案 3 :(得分:0)

我遇到了同样的问题,我用 git 解决了这个问题。我不想将$scope.data2 = { "$id":"4157e8b1-efa2-4feb-bf75-e907c0e200e0", "$priority":null, "date":1457178818625, "email":"a@b.com", "firstname":"test", "lastname":"Isaacs", "monthly":328947, "monthlyIncome":1200, "regUser":"4157e8b1-efa2-4feb-bf75-e907c0e200e0", "savePercent":10, "years":40 }; //for each object in data array angular.forEach(data2, function(value, key) { // check if value id is equals to 'monthlyIncome' OR 'savePercent' OR 'years' if (value == 'monthlyIncome' || value == 'savePercent' || value == 'years') { // add it's value with the same key (e.g. $scope.monthlyIncome) $scope.[value] = key; } }); svn merge -r N:M http://server/branch/foo/test/com src/test/java/comsrc/mainsrc/testresources合并多个模块。

所以我使用了git svn clone file:///some/repo -T trunk -b branches -t tags。像这样,我能够将 git master svn trunk 保持同步,并将其与我的 git branch 合并。当我完成后,我将 git branch 合并到 git master ,并从那里合并到 svn trunk