我是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进行版本管理,还是我会在接下来的两天手动合并这个人的变化?
答案 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/com
,src/main
和src/test
与resources
合并多个模块。
所以我使用了git svn clone file:///some/repo -T trunk -b branches -t tags
。像这样,我能够将 git master 与 svn trunk 保持同步,并将其与我的 git branch 合并。当我完成后,我将 git branch 合并到 git master ,并从那里合并到 svn trunk 。