我有一个软件应用程序,我遇到了一个重要的里程碑,版本2.0。
我决定将此版本标记为“Version-2.0”,因此我将此快照命名为。我还创建了一个“Version-2.0”分支,以防我需要修复任何东西并将其合并回我的主干。
阅读Tortoise SVN帮助文件后,它通知我可以将“工作副本”切换到新创建的分支。
这是什么意思?
目前,我有:
/项目/中继线/
/项目/标签/
/项目/分支/
全部签出。那么“转换”的意义何在?目前,我只是去我的/ trunk文件夹做我的工作。当我创建标签和分支时,它在我更新后在/ Tags /和/ Branches /文件夹中创建了文件夹。
为什么我不去参加/Branches/Experiemental-v3.0/如果我想去那里做我的工作?
有人可以向我解释“工作复制”和“转换”的概念吗?我错过了什么?人们通常没有检查整个存储库,是吗?
答案 0 :(得分:44)
工作副本是您已检出工作区域的副本。无论是分支还是主干都没关系。这就是你正在做的事情。
您可以使用svn开关在同一父级的分支(或更正确的副本)之间切换。这基本上会说,当前工作副本和我切换到的分支之间有什么不同。然后,它会将您当前工作副本的更新执行到您切换到的分支的修订版。
所以工作副本是你的结账,但它已经获得。
切换只是更改工作副本提交的分支。可以把它想象成更改提交将进入的存储库中的指针。借助从分支机构到工作区域的任何差异。
答案 1 :(得分:23)
通常没有必要检出整个存储库。 subversion中的分支和标签旨在便宜 - 即,它们不会创建相同文件的副本,只是引用它们。 当您检查完整个存储库时,当任何人因任何原因而分支或标记时,它会突然增加本地硬盘驱动器上使用的空间。
您可以根据需要检出存储库的多个部分。所以你可以有一个名为'trunk'的文件夹,它只是trunk的工作副本,另一个'version2'是你分支的工作副本。这样,创建的任何其他标签都不会被检出。
或者你可以有一个名为'project'的结账,如果它最初指向trunk,你可以将它切换到其中一个分支或标签 - 这是一种重新使用原始结账的方式,这样你就不会必须重新获得一切。
执行此操作非常有用,您正在使用trunk并突然意识到您需要将更改提交到分支 - 可能是因为它们太过实验性。为此,从您的工作副本分支,切换到新分支然后提交,您的更改将转到分支而不是主干。
答案 2 :(得分:4)
工作副本是您已签出的代码副本。通常,您只需检查/ Project / trunk /,而不是存储库的整个结构。切换正在改变工作副本的根目录。你使用SVN的方式不是它应该如何完成的。
答案 3 :(得分:3)
您的工作副本是您用于从subbversion签出项目的硬盘上的任何文件夹。您可以“切换”到该工作副本的不同项目,以便版本化内容类似于该其他项目的内容。
这对于从主干切换到分支很有用,而无需签出新副本。例如,它可以节省一些构建时间,因为未删除或更改未版本控制的文件(编译对象,库,可执行文件)。
戴夫
答案 4 :(得分:2)
你已经检查了整个项目树 - 这可能不是你想要的。对于主干工作,请查看以“trunk”为根的副本,而不是项目根目录。同样,对于分支工作,只检查您想要的分支。