2011-01-12 48 views
0

我已经从我的SVN仓库签出了一个特定“库”的多个副本 - 每个使用相同代码的工作相关项目的副本。我已经对存储库中的一个进行了修改,我想更新其余项目中的副本以反映这些更改。预测与自己的修订“冲突”?

不过,我想保留拒绝少数为我正在进行的项目的一个变化的权利,所以如果有一些方法可以让我得到的冲突与文件named asfilename.mine警告这将是巨大的,filename.rOLDREVfilename.rNEWREV好像其他用户已经提交了这些更改(但这些更改已由我自己提交到存储库),而不是自动更新所有受影响的文件(使用svn update)。

这可能吗?

回答

1

您应该使用分支而不是多次检查同一个项目。

想象这个回购协议:

repos 
    |-- trunk/ 
    |-- branches/ 
     |-- projectX 
     |-- projectY 
     `-- projectZ 

比方说,你开发一个功能,并想把它只会增加在projectY,你可以在merge从主干代码branches/projectY

如果另一个功能包含在projectXprojectZ中,则将该功能合并到这两个分支中。

这样,您可以控制每个项目中的内容,并在每个项目中记录历史记录。

+0

我喜欢这个想法。我将来可能会这样做,但是有什么方法可以在使用`svn update`进行更新之前追溯更新?谢谢... – hatmatrix 2011-01-12 16:35:52

+0

@crippledlambda不知道你的意思。你想知道如何知道在合并之后提交之前所做的更改。或者在更新工作副本之前查看存储库服务器有哪些更改。 – yvoyer 2011-01-12 16:45:42

1

如果您有一个项目A需要停留在依赖项B的旧版本中,那么您可以在项目A中设置一个svn:externals property,该项目指向B并带有明确的修订版本号。例如,项目A的主干文件夹将有一个svn:externals属性与此内容:

-r148 http://svn.example.com/projects/B/trunk B 

当你结账项目A,这会导致一个文件夹B出现包含项目B.变化的树干修订版148到项目B不会影响A,除非您明确更改svn:externals属性中的修订号。