如果您要导入到已有的版本库中,该版本库已经包含了一些项目,那么版本库的结构就早已确定了。如果您要将数据导入到新的版本库中,那么就值得花时间考虑如何组织它。阅读名为“版本库布局”的章节以获取更多建议。
本节描述了 Subversion 的 import 命令,该命令旨在一次性将目录层次结构导入到版本库中。尽管它完成了这项工作,但它也有一些缺点
除了使用全局忽略设置外,没有其他方法可以选择要包含的文件和文件夹。
导入的文件夹不会成为工作副本。您必须执行检出才能将文件从服务器复制回来。
很容易导入到版本库中错误的文件夹级别。
由于这些原因,我们建议您完全不要使用 import 命令,而是遵循名为“就地导入”的章节中描述的两步方法,除非您正在执行简单的步骤,即在您的版本库中创建初始的 /trunk /tags /branches
结构。既然您在这里,那么这就是基本导入的工作方式...
在将您的项目导入到版本库之前,您应该
删除所有构建项目不需要的文件(临时文件、编译器生成的文件,例如 *.obj、编译后的二进制文件等)
在文件夹和子文件夹中组织文件。尽管以后可以重命名/移动文件,但强烈建议在导入之前理顺您的项目结构!
现在在 Windows 资源管理器中选择您项目目录结构的顶层文件夹,然后右键单击以打开上下文菜单。选择命令 → ,这将弹出一个对话框
在此对话框中,您必须输入要将项目导入到的版本库位置的 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
。请注意,如果版本库中不存在子目录,import 命令将自动创建它们。
导入消息用作日志消息。
默认情况下,与全局忽略模式匹配的文件和文件夹不会被导入。要覆盖此行为,您可以使用包含忽略的文件复选框。有关设置全局忽略模式的更多信息,请参阅名为“常规设置”的章节。
一旦您按下不受版本控制!要获得受版本控制的工作副本,您需要对刚刚导入的版本执行检出。或者继续阅读以了解如何就地导入文件夹。
,TortoiseSVN 就会将完整的目录树(包括所有文件)导入到版本库中。项目现在存储在版本库中并受到版本控制。请注意,您导入的文件夹假设您已经有一个版本库,并且想要向其中添加新的文件夹结构,只需按照以下步骤操作
使用版本库浏览器直接在版本库中创建一个新的项目文件夹。如果您使用的是标准布局之一,您可能希望将其创建为 trunk 的子文件夹,而不是版本库根目录中的子文件夹。版本库浏览器像 Windows 资源管理器一样显示版本库结构,因此您可以了解事物的组织方式。
将新文件夹检出到您要导入的文件夹的顶部。您会收到本地文件夹不为空的警告。忽略警告。现在您有了一个版本化的顶层文件夹,其中包含未版本化的内容。
在此版本化的文件夹上使用svn:ignore
属性,并进行您需要的任何其他更改。
提交顶层文件夹,您就拥有了一个新的版本化树,以及一个从现有文件夹创建的本地工作副本。
有时您需要将包含用户特定数据的文件置于版本控制之下。这意味着您有一个每个开发人员/用户都需要修改以适应其本地设置的文件。但是,对这样的文件进行版本控制很困难,因为每个用户每次都会将其更改提交到版本库。
在这种情况下,我们建议使用模板文件。您创建一个包含您的开发人员将需要的所有数据的文件,将该文件添加到版本控制,并让开发人员检出此文件。然后,每个开发人员都必须复制一份该文件并重命名该副本。之后,修改副本就不再是问题了。
例如,您可以查看 TortoiseSVN 的构建脚本。它调用一个名为 default.build.user
的文件,该文件在版本库中不存在。只有文件 default.build.user.tmpl
。default.build.user.tmpl
是模板文件,每个开发人员都必须从中创建一个副本,并将该文件重命名为 default.build.user
。在该文件中,我们添加了注释,以便用户可以看到他们必须根据其本地设置编辑和更改哪些行才能使其工作。
为了不打扰用户,我们还将文件 default.build.user
添加到其父文件夹的忽略列表中,即我们将 Subversion 属性 svn:ignore
设置为包含该文件名。这样,它就不会在每次提交时都显示为未版本化。