我正在阅读和测试subversion(通过TortoiseSVN
)分支和合并系统,我无法完全理解它。
我有一个项目MyProject
,其根目录中有一个src
目录。使用TFS
我可以从中创建一个分支,将其称为big-dev-src
,然后(在根目录中)包含src
(主干)和big-dev-src
(分支)。我可以update / get latest version
任意,commit / check in
任意和merge
他们(分支合并,反之亦然)。两者完全独立。
现在,使用subversion
似乎我需要执行switch
操作才能从一个更改为另一个,如果我有待更改,switch
将会merge
他们。
我理解错了吗?无论如何以TFS
工作的方式使用它?
谢谢!
答案 0 :(得分:0)
似乎我需要进行切换操作以从一个切换到另一个
您可以切换(或不切换),因为您可以为任意数量的相关存储库网址提供任意数量的工作副本
使用“每个URL的WC”(一个用于主干,一个用于每个WIP分支),您可以完全独立工作
PS:你也可以签出repo-root(常识中的坏主意,但这是可能的)
>dir /B
branches
readme.textile
tags
trunk
>svn info
....
Relative URL: ^/
...
答案 1 :(得分:0)
有一个最佳实践项目结构,如下所示:
myproject
|- trunk (main line of development, in your case: src)
|- branches
| |- big-dev (your big-dev-src)
| :
`- tags
当然,这只是一个没有以任何方式强制执行的建议;从Subversion的角度来看,分支是副本。
尽管有额外的"目录级别"完全可以在同一个父目录中拥有主干和分支的工作副本,并且可以同时更改它们:
# svn checkout svn://svn.myserver/myproject/trunk src
# svn checkout svn://svn.myserver/myproject/branches/big-dev big-dev-src
您可以对它们进行类似的更改并在一个版本中提交它们(尽管您只是为了非常简单的更改而这样做):
# cd src
# svn commit . ../big-dev-src
当然,您可以将更改从一个目录树合并到另一个目录树。
但是,如果您使用非网址进行合并,则必须指定修订版(-c
或-r
选项)。您应该将合并与其他更改隔离开(即,始终合并到一个干净的工作副本,没有任何未经修改的更改,并在更改其他任何内容之前首先提交合并结果)并使用--record-only
选项告诉分支有关其更改的更改已经进入后备箱。