将SVN控制的项目移动到一个文件夹

时间:2012-11-29 16:19:35

标签: svn tortoisesvn repository

我有一个由SVN控制版本的Visual Studio项目。本地工作副本位于C:\ProjectName\SolutionName,存储库位于//servername/svn/ProjectName(其中包含 SolutionName 文件夹)。

问题是在工作文件夹中,只检出 SolutionName 文件夹。我现在有我需要添加到SVN的兄弟文件夹,例如C:\ProjectName\DatabaseC:\ProjectName\Documentation。我可以直接将这些文件夹添加到存储库并单独检查它们,但我想要做的是将“签出”部分向上移动一级,以便C:\ProjectName中的所有内容都受版本控制。这样可以更容易地进行提交(所有这些都来自一个文件夹,而不是每个文件夹需要多次提交)。它还可以使将来更容易将新文件夹添加到源代码管理中。

有一种简单的方法吗?我提出的一种方法是取消我的工作副本然后删除并重新创建存储库,并按照我想要的方式设置它。这个项目已经足够了,在那里丢失20个左右的提交历史并不是一个大问题,但我希望有一个更简单的方法来实现它。


如果它有帮助:我在大多数交易中使用TortoiseSVN,但我也安装了命令行工具。我也可以直接访问托管我的存储库的服务器。

2 个答案:

答案 0 :(得分:2)

首先,将新的本地文件夹导入svn:

  • C:\ ProjectName \ Database - > //服务器/ SVN /项目名/数据库
  • C:\ ProjectName \ Documentation - > //服务器/ SVN /项目名/文档

现在,服务器上的布局看起来就像你想要的那样。

接下来,只需查看// servername / svn / ProjectName的 new 工作副本(可能在C:\ src \ ProjectName中)。这将为您提供工作副本中所需的结构(三个文件夹:Database,Documentation和SolutionName)。然后,只需放弃您的“旧”工作副本(在C:\ ProjectName)。如果您愿意,可以删除C:\ ProjectName文件夹,并将C:\ src \ ProjectName复制到C:\ ProjectName,如果维护当前文件夹很重要(您可以在本地“移动”整个工作副本)。

源代码控制的优点在于,移动“本地副本”很容易,因为真正的代码在服务器上。

答案 1 :(得分:0)

如果我正确理解您的问题,如果您要检查存储库,您会在目录中看到SolutionName文件夹。 (这意味着文件夹,而不仅仅是内容,受版本控制。)

如果这是正确的,请尝试:

  1. 将项目签入新文件夹(例如C:\ProjectName_Temp)。
  2. 将文件夹从C:\ProjectName复制到C:\ProjectName_Temp
  3. .svn删除C:\ProjectName_Temp\SolutionName文件夹。 (不要删除C:\ProjectName_Temp\.svn)。
  4. 将原始文件夹重命名为C:\ProjectName_bak作为备份(如果我错了,那么您不会丢失任何内容)并将_Temp文件夹重命名为C:\ProjectName\
  5. 从那里,检查svn status(或Tortoise的等效命令)并确保预期所有更改。

    我希望这有帮助!