1

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

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

是否有捷径可寻?我想出的一种方法是取消我的工作副本的版本,然后删除并重新创建存储库,并按照我想要的方式设置它。该项目足够新,因此丢失 20 次左右的提交历史不会是一个大问题,但我希望有一种更直接的方法来做到这一点。


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

4

2 回答 2

2

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

  • C:\ProjectName\Database -> //服务器名/svn/ProjectName/Database
  • C:\ProjectName\Documentation -> //服务器名/svn/ProjectName/Documentation

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

接下来,只需检查 //servername/svn/ProjectName 的工作副本(可能在 C:\src\ProjectName 中)。这将为您提供工作副本中所需的结构(三个文件夹:数据库、文档和解决方案名称)。然后,只需放弃您的“旧”工作副本(位于 C:\ProjectName)。如果您愿意,您可以删除 C:\ProjectName 文件夹,并将 C:\src\ProjectName 复制到 C:\ProjectName 如果维护当前文件夹很重要(您可以像这样在本地“移动”整个工作副本) )。

源代码控制的美妙之处在于它很容易移动您的“本地副本”,因为真正的代码在服务器上。

于 2012-11-29T17:06:01.657 回答
0

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

如果这是正确的,试试这个:

  1. 将项目签出到一个新文件夹中(比如C:\ProjectName_Temp)。
  2. 将您的文件夹从 复制C:\ProjectNameC:\ProjectName_Temp.
  3. 从 中删除.svn文件夹C:\ProjectName_Temp\SolutionName。(不要删除C:\ProjectName_Temp\.svn)。
  4. 将您的原始文件夹重命名为,例如,C:\ProjectName_bak作为备份(以防我错了,所以您不会丢失任何东西)并将_Temp文件夹重命名为C:\ProjectName\.

从那里,检查svn status(或 Tortoise 的等效命令)并确保所有更改都是预期的。

我希望这有帮助!

于 2012-11-29T17:04:11.080 回答