2013-02-21 89 views
3

我对切换的概念感到困惑(使用乌龟svn)。我们是一个由3名开发人员组成的团队,我在这里是Dev2。乌龟svn的混淆 - 切换

首先,我尝试使用以下步骤切换(可以说,目前正在对躯干和希望开始在分行V1.0工作)

  1. 右键单击/branches/v1.0
  2. 选择TortoiseSVN的 - 开关
  3. 到路径:/branches/v1.0
    • 头修订(检查)
    • 开关深度:工作拷贝

请让我知道如果我在上面做错了什么?

不过,在那之后我跳过了开关,然后我们的工作给了我们以下的输出:

  1. 所有的开发者在树干工作,然后发展为超过
  2. 创建一个标签,V1.0
  3. 在标签v1.0中发现bug,因此从标签v1.0创建分支v1.0
  4. 需要新的功能以及Dev1(开发人员1)继续工作在Dev2和Dev3正在分支v1.0工作的主干
  5. DEV2分支V1.0编写的代码并提交
  6. DEV3获得分支更新(有DEV1的更新),然后在分支V1.0编写的代码并提交
  7. DEV1获得分支更新(有DEV2的更新和DEV3)
  8. DEV2和DEV3得到DEV1树干更新(更新了)

所有工作正常,没有那么开关是什么开关的概念?

另外,如果我在交换机中在trunk中有未提交的文件会发生什么?

回答

2

svn switch应该只是更新您的本地签出以指向服务器上的新位置。例如如果有人在存储库中移动了文件夹。

任何未提交的文件都应该没事 - 交换机只是对本地文件系统的更改。切换后,当您查看差异或类似时,它将指向新的存储库。

2

想象一下,如果你在干树干工作,并突然意识到你应该一直在分支2.3的工作。你可以结帐分支2.3,但你会失去所有的工作。你可以尝试复制它,但这可能需要很长时间。

转换允许你转换你的本地副本的基础,而不会失去你的任何工作。您修改的文件仍将包含您的修改。您添加的文件仍将被添加。您删除的文件仍将被删除。

$ svn co $REPO/trunk/proj1 
[...work...work...work...] #Whoops! Should have been on Release 2.3 branch! 
# svn switch $REPO/branches/2.3/proj1 
[...work...work...work...] #Everything is fine and dandy! 

有些人使用开关切换他们的工作副本,而无需做另一个结账。例如,我完成了我的工作proj1,现在我在Release 2.3分支上有一些工作。我只需切换到该分支并节省时间,因为我不必重新下载所有内容。另外,我节省了空间!

我高度不鼓励这种想法,因为您可能很容易混淆您的工作目录代表什么。我已经看到了一些复杂的提示来提取分支信息并在提示中显示它。但是,我在我的项目和分支(或主干)之后命名我的结帐,并为每个项目使用单独的工作目录。

速度不应该是一个问题。花费五到十分钟的时间来完成一个非常大的Subversion项目 - 只需要足够的时间来喝一杯咖啡。在这个千兆字节磁盘大小的时代,也不应该占用太多的空间。使用svn switch不应该是一种常见现象。

一次,如果托管存储库的服务器发生更改,您有时会切换。但是,现在有一个特殊的svn relocate命令只是用于这一目的:

$ svn co svn://repo/proj1 # We were using svnserve 
$ svn relocate svn://repo http://repo/svn #Now we're using Apache https 
$ svn relocate http://repo/svn/proj1  #Alternative to the above. 
+0

TortoiseSVN的医生说是'之开关可以代替'checkout'的但只是似乎很奇怪我。我们在这里做的是在分支机构/标签/干线级别结帐。如果我需要添加实验性功能,我从trunk创建一个分支,然后在分支文件夹中执行“更新”并处理那些文件。是的,我正在创建所有文件的重复副本,但空间很便宜,我从不会对我的工作副本指向的位置感到困惑。除了杀死更多的数据之外,你是否发现这样做的缺点?我没有看到它明确提倡,所以我想知道。 – SiegeX 2014-10-24 22:46:38

+0

我像你一样为每个分支使用单独的工作目录。当我们拥有10Mb磁盘并且空间很高时,我可以看到很多使用开关。然而,当一台PC拥有125Gb的空间时,被认为是小型的,拥有多个工作目录并不是问题。即使是最大的项目也很少占用超过10Mb的空间。可能发生的问题是二进制文件可能相当大。我们有一个产生约10千兆字节编译代码的项目。在这种情况下,清理编译好的代码。 – 2014-10-27 21:03:51