在大型项目中使用SVN

时间:2009-11-04 10:43:23

标签: svn

我有一个大型项目,但我的svn存储库中只需要一些文件夹。

现在这些是我的项目结构的前两个级别

folder_1
    subfolder_1.1
    subfolder_1.2
folder_2
    subfolder_2.1
    subfolder_2.2
    subfolder_2.3
folder_3
    subfolder_3.1
    subfolder_3.2

我只需要

folder_1
    subfolder_1.1
folder_3
    subfolder_3.2

及其子文件夹当然受版本控制。

如何在新创建的svn存储库中仅导入这些文件夹? 如何在将来的提交中忽略任何其他文件夹中的更改?

提前感谢任何提示,一步一步的指示非常感谢,因为我在处理svn管理方面并不是很有经验。


编辑:澄清我需要做的事情:创建一个新的存储库(已经完成),导入上面的文件夹,使用svn客户端检查它们(没什么大不了的)并确保SVN在提交时忽略来自其他文件夹中不受版本控制的文件(例如来自folder_2的文件)。

4 个答案:

答案 0 :(得分:4)

首先,将提交给Subversion的唯一内容是您明确添加到跟踪中的内容 - 因此只需添加要跟踪的文件夹。其余的可以存在于您的工作副本中,而不是在Subversion的跟踪列表中。

如果您不希望Subversion工具提示您可能添加其他文件夹,可以通过将svn-ignore property设置为排除这些路径来强制它完全忽略它们。

答案 1 :(得分:1)

尝试使用TortoiseSVN执行此操作,但您应首先添加subfolder_1.1,然后右键单击subfolder_2和TortoiseSVN>添加到忽略列表> subfolder_2并且仅在此之后将folder_1添加到SVN。对于其余的文件夹/子文件夹,相同的想法是排除您不感兴趣的子文件夹,您也可以通过命令行执行此操作。

答案 2 :(得分:0)

您有两种选择,具体取决于您对以前代码的具体操作:

  • 将现有目录导出(而不是签出!)到可以导入新存储库的新的本地目录结构中
  • 将新存储库链接到上一个存储库。

1)对第一个选项使用以下命令:

mkdir project
cd project
svn export <URL old project>/folder_1 folder_1
svn export <URL old project>/folder_3 folder_3
svn mkdir <URL new project>/trunk -m "Initial trunk"
svn import <URL new project>/trunk -m "Initial files"

将在您的存储库中创建/ trunk目录并将两个文件夹放在其中。

然后,您需要在某处检查您的项目,以开始处理本地副本。上面创建的“项目”目录是临时的,可以删除。

2)第二个选项仅在您不需要触摸现有代码但与新项目一起使用时才有用。您可以使用以下结构:

folder_1 (link to your old repository)
    subfolder_1.1
folder_3 (link to your old repository)
    subfolder_3.2
new_folder

要做到这一点,请检查svn:externals属性在documentation中的工作方式,解释时间更长,看起来不像您想要的解决方案,所以我只想提一下这种可能性。


修改:我遗漏了忽略部分,但Dav已经回答了它。知道有可能告诉SVN忽略所有具有已定义扩展名的文件,对于工作站上的所有项目,这在我给出链接的文档中有描述。

答案 3 :(得分:0)

如果您想在其他存储库中只有您的存储库的一个子集 - 只需从repository1中检出选定的东西,然后将其检入repository2。 如果您希望repository2与repository1同步 - 它可以使用svnsync实现,但repository2将是只读的。 如果您希望repository2与repository1同步,并仍然提交到repository2 - 使用subversion无法实现