SVN重新结账(切换/重定位/其他?)

时间:2012-01-20 13:24:04

标签: svn repository

我目前正在进行的项目使用SVN进行版本控制。当它最初创建时(由另一个当前不可用的人)创建时,服务器上的'public_html'文件夹被签出到以下文件夹:https://URL/project_name/,其中'project_name'是存储库的根目录。它没有为分支/标签提供任何结构,因为显然它看起来不像我们需要它。

现在我们意识到我们需要分支来组织项目的多个版本的并行工作,我们决定创建一个具有适当结构的新存储库(URL / project_name / trunk /用于主版本和URL / project_name / branches / ...为次要的)。组织存储库本身没有问题,但如何为服务器上的“public_html”文件夹执行新的检出?如果我尝试执行'svn checkout URL / project_name / trunk / home / public_html',我会收到错误消息,指出'public_html'已经是另一个URL的工作副本。

我试图通过Tortoise SVN查看本地测试机器上的svn switch和svn relocate选项,但前者似乎只能在同一个存储库的分支之间切换,后者需要指定存储库(我需要将URL / project_name / trunk指定为checkout文件夹)。在这种情况下,任何人都可以帮助或至少指导我吗?

我确实有对服务器的root SSH访问权限。

4 个答案:

答案 0 :(得分:2)

尝试将project_name移动到主干。不要直接改变你的文件系统;它对你的repo文件没有影响。改为使用 svn命令

// in URL (parent folder of project_name)
svn mkdir trunk
svn mkdir branches
svn mkdir tags
svn move project_name trunk 
svn ci -m 'moved'

etvoilà

如果您没有父文件夹,则必须逐个“svn”移动project_name根目录中的每个文件和目录。

答案 1 :(得分:2)

来自TortoiseSVN Help

  

换句话说,您需要在工作副本时重新定位   引用同一存储库中的相同位置,但是   存储库本身已经移动。

     

如果符合以下条件,则不适用:

     

您想要迁移到其他Subversion存储库。在这种情况下   您应该从新的存储库位置执行干净的结账。

     

您想切换到同一个分支或目录   库。要做到这一点,你应该使用TortoiseSVN→Switch ....阅读   有关更多信息,请参见第4.19.2节“要结帐或切换...”。

所以,你必须要做的是结帐新的副本。删除目录的整个内容,然后签出,或签出到新目录,然后使用旧目录重命名新目录。

答案 2 :(得分:1)

如果project_name是您的根文件夹,您可以在其下创建分支/标记/主干结构,并为svn move中包含的每个文件/文件夹手动project_name(分支/除外)标签/主干当然)。因此,您可以保留提交的所有历史记录。这很乏味,但很安全!

答案 3 :(得分:0)

你不能像TortoiseSVN一样使用GUI到SVN ??? 我认为在repo中重新定位东西就像右键单击并选择适当的选项然后提交一样简单。

您也可以尝试在repo-browser中执行此操作。 http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-rename.html