我该如何构建SVN的工作副本?

时间:2012-06-11 12:53:15

标签: svn

我的本​​地SVN工作副本树设置为与存储库的目录结构相匹配。换句话说,它在整个地方都有中继,分支和标签文件夹。这是设置工作副本的好方法吗?有没有更好/更好的想法?

5 个答案:

答案 0 :(得分:2)

我想说,这有点不同寻常。更典型的情况是,您只需要检查您实际打算使用的项目分支/标记/主干的工作副本,而不是整个树。

如果您无法随时意外地在树上进行更改,则可以更轻松地记住您正在进行更改的内容。

所以,如果你有

proj
  tags/
    t1/
  branches/
    b1/
    b2/
  trunk/

你会做

svn checkout proj/trunk proj-trunk

如果您同时需要在分支机构工作,请查看单独的工作副本:

svn checkout proj/branches/b1 proj-b1

我会补充说,有时候,我会保留一个在根目录检出的小项目的工作副本,这样我就可以检查任何标记或分支,但我实际上并没有修改此副本 。这只是一种使用适当的文本编辑器等浏览项目存储库的快速方法。它经常不同步,需要重复使用svn up所以我不经常使用这种技术。

答案 1 :(得分:2)

我发现使用类似于你的工作副本只有一个例外很方便,我会对分支标记进行稀疏检查,并根据需要填充/删除它们。因此,结帐命令有点像

$ svn co --depth immediates url_of_myrepo $PWD ;# empty checkout of the repo
$ svn up --set-depth infinity $PWD/myrepo/trunk  ;# sticky dense update of the trunk
...
$ svn up --set-depth infinity $PWD/branches/release_branch ;# sticky dense update of a branch
$ cd $PWD/branches/release_branch
$ svn merge -c 1234 ../../trunk ;# merge a revision from trunk
$ svn commit
$ cd ..
$ svn update --set-depth exclude release_branch ;# sticky wipe out of branch from the working copy
...

答案 2 :(得分:1)

在我看来,如果您需要检查新分支,而不检查整个存储库,这是一个好主意。您实际上并不需要创建目前无法使用的文件夹。例如,当你开始在项目的主干上工作时,你应该从myproject/trunk开始:这样,只要你想移动到一个分支,你也可以检查它是否最多适当的路径。

我还希望在分支名称之后创建修订文件夹,如myproject/branches/mybranch/[rev]为清晰起见,当我经常需要在修订版之间切换时。

答案 3 :(得分:1)

我通常使用Source Control执行的操作是同步到主分支的最新版本或当前称为主分支的任何内容。一般来说,如果特定客户要求我不希望包含在一般可用于所有版本的特定功能中,我只会分支或同步到分支。但是,如果该功能进展得足以让我考虑将其移至“GA”构建,那么我总是可以将这些更改合并回主分支。

subversion的全部目的是管理您的版本并提供备份。保持多个分支似乎是一种快速变得杂乱无章的好方法,并且在将来真的让自己感到困惑。此外,imho首先违背了源代码管理的目的。

答案 4 :(得分:0)

通常像迈克尔解释

proj
  tags/
  branches/
  trunk/

但我也曾经为文档或图书馆添加文件夹。