手册

将数据导入存储库

导入

如果您要导入到已包含一些项目的现有存储库中,则存储库结构已确定。如果您要将数据导入到新的存储库中,那么花点时间考虑如何组织它将是值得的。阅读 名为“存储库布局”的部分 以获取更多建议。

本节介绍 Subversion 导入命令,该命令旨在将目录层次结构一次性导入存储库。虽然它可以完成工作,但它有一些缺点

  • 除了使用全局忽略设置外,没有办法选择要包含的文件和文件夹。

  • 导入的文件夹不会成为工作副本。您必须执行检出操作才能将文件从服务器复制回来。

  • 很容易将数据导入存储库中的错误文件夹级别。

出于这些原因,我们建议您根本不使用导入命令,而是按照 名为“就地导入”的部分 中描述的两步法进行操作,除非您正在执行创建初始 /trunk /tags /branches 结构的简单步骤在您的存储库中。既然您在这里,这就是基本导入的工作原理...

在将项目导入存储库之前,您应该

  1. 删除构建项目不需要的所有文件(临时文件、由编译器生成的、例如 *.obj、已编译的二进制文件等)。

  2. 将文件组织到文件夹和子文件夹中。虽然以后可以重命名/移动文件,但强烈建议在导入之前先整理好项目的结构!

现在,在 Windows 资源管理器中选择项目目录结构的顶层文件夹,并 右键单击 以打开上下文菜单。选择命令 TortoiseSVN导入...,这将弹出一个对话框

图 4.6 导入对话框

The Import dialog


在此对话框中,您必须输入要导入项目的存储库位置的 URL。重要的是要意识到您要导入的本地文件夹本身不会出现在存储库中,只有其内容。例如,如果您有一个结构

C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images
      

并且您将 C:\Projects\Widget 导入到 http://mydomain.com/svn/trunk 中,那么您可能会惊讶地发现您的子目录直接进入 trunk 而不是在 Widget 子目录中。您需要将子目录指定为 URL 的一部分,http://mydomain.com/svn/trunk/Widget-X。请注意,导入命令将自动在存储库中创建子目录(如果它们不存在)。

导入消息用作日志消息。

默认情况下,与全局忽略模式匹配的文件和文件夹不会被导入。要覆盖此行为,可以使用包含忽略的文件复选框。有关设置全局忽略模式的更多信息,请参阅名为“常规设置”的部分

一旦您按下确定,TortoiseSVN 就会将完整的目录树(包括所有文件)导入到存储库中。该项目现在在存储库中进行版本控制。请注意,您导入的文件夹不在版本控制之下!要获得版本控制的工作副本,您需要检出刚刚导入的版本。或者继续阅读以了解如何在原地导入文件夹。

原地导入

假设您已经有一个存储库,并且您想向其中添加一个新的文件夹结构,只需按照以下步骤操作

  1. 使用存储库浏览器直接在存储库中创建一个新的项目文件夹。如果您使用的是标准布局之一,您可能希望将其创建为 trunk 的子文件夹,而不是存储库根目录。存储库浏览器显示存储库结构,就像 Windows 资源管理器一样,因此您可以看到事物的组织方式。

  2. 将新文件夹检出到您要导入的文件夹的顶部。您将收到一个警告,提示本地文件夹不为空。忽略警告。现在您有一个版本化的顶层文件夹,其中包含未版本化的内容。

  3. 在此版本化的文件夹上使用TortoiseSVN添加... 来添加部分或全部内容。您可以添加和删除文件,在文件夹上设置svn:ignore 属性,并进行任何其他必要的更改。

  4. 提交顶层文件夹,您将拥有一个新的版本化树和一个从现有文件夹创建的本地工作副本。

特殊文件

有时您需要将包含用户特定数据的文件置于版本控制之下。这意味着您有一个文件,每个开发人员/用户都需要修改以适应其本地设置。但是对这样的文件进行版本控制很困难,因为每个用户每次都会将他们的更改提交到存储库。

在这种情况下,我们建议使用 模板 文件。您可以创建一个包含开发人员所需所有数据的文件,将该文件添加到版本控制中,并让开发人员签出该文件。然后,每个开发人员都需要 复制 该文件并重命名副本。之后,修改副本就不再是问题了。

例如,您可以查看 TortoiseSVN 的构建脚本。它调用一个名为 default.build.user 的文件,该文件在存储库中不存在。只有文件 default.build.user.tmpldefault.build.user.tmpl 是模板文件,每个开发人员都必须从中创建副本并将其重命名为 default.build.user。在该文件中,我们添加了注释,以便用户可以查看哪些行需要根据其本地设置进行编辑和更改以使其正常工作。

为了不打扰用户,我们还将文件 default.build.user 添加到其父文件夹的忽略列表中,即,我们将 Subversion 属性 svn:ignore 设置为包含该文件名。这样,它就不会在每次提交时显示为未版本控制。

TortoiseSVN 主页