如果你要将数据导入到已经包括一些项目的版本库中,那么版本库的结构应该已经确定了。如果你要将数据导入到一个新的版本库中,那么应该花点时间确定版本库的组织结构。阅读 “版本库布局”一节 以获得更多的建议。
这一节介绍 Subversion 的导入(import)命令,它被设计成只需要 1 步就可以将目录结构导入到版本库中。尽管它可以使用,但是它有一些短处:
不能选择包括哪些文件或文件夹,除非使用全局忽略设置。
导入的文件夹不能变成工作拷贝。你必须通过签出操作从服务器拿回文件。
It is easy to import to the wrong folder level in the repository.
因此,我们推荐你根本不要使用导入命令,而是使用这里介绍的需要 2 步的操作方法: “导入适当的位置”一节。既然你已经阅读到这里了,下面就介绍基础的导入操作...
在将你的项目导入到版本库之前,你应该:
删除所有构建工程不需要的文件(临时文件,编译器产生的文件,例如 *.obj,生成的二进制文件,...)
组织目录和子目录内的文件。尽管以后可以改名/删除文件,我们还是建议你在导入之前使你的项目结构组织良好!
现在进入资源管理器,选择你的项目的顶层目录,右击打开上下文菜单。选择命令 → ,它会弹出一个对话框:
在这个对话框中,需要输入版本库所在的 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。注意,如果版本库中不存在指定的子目录,导入命令将会自动创建它们。
这个输入信息将用作提交日志。
默认情况下,匹配全局忽略模式的文件和文件夹不会被导入。你可以使用包含忽略文件检验栏来禁止此行为。参考“常规设置”一节以获得关于全局忽略模式的更多信息。
As soon as you press TortoiseSVN imports the complete directory tree including all files into the repository. The project is now stored in the repository under version control. Please note that the folder you imported is NOT under version control! To get a version-controlled working copy you need to do a Checkout of the version you just imported. Or read on to find out how to import a folder in place.
假定你已经有个版本库,你想给它增加一个新目录结构,只需以下步骤:
使用版本库浏览器直接在版本库中创建项目文件夹。
在你要导入的文件夹检出新目录。你会得到一个本地目录为空的警告。现在你有一个版本控制的顶级目录,含有未版本控制的内容。
在此受版本控制的文件夹上使用 → 增加部分或全部内容。你可以增加或删除文件,在文件夹上设置svn:ignore属性,或者你需要的其它修改。
提交顶级目录,你有一个新的版本树,一份从你已有目录创建的本地工作副本。
有时候你需要版本控制一个包含用户专用的数据。它意味着你有一个文件,每个开发者/用户都需要修改,一边满足他/她的本地配置。但是版本控制这样的文件是困难的,因为每个用户可能都要提交他/她的修改。
在这种情况下,我们建议使用模版文件。创建一个包含所有开发者需要的数据的文件,增加到版本库中,让开发者检出。然后,每个开发者创建一个副本,改名此文件。于是,修改这个文件不再是问题。
作为例子,你可以看看TortoiseSVN的构建脚本。它调用一个TortoiseVars.bat文件,它并不在版本库中。 只有TortoiseVars.tmpl在版本库中。TortoiseVars.tmpl是一个模版文件,每个开发者都需要创建一个副本,改名为TortoiseVars.bat。在这个文件中,我们增加了注释,所以用户知道他们需要编辑那些行,以便适应他们的本地配置,使其能工作。
于是为了不干扰用户,我们也将TortoiseVars.bat增加到它的父目录的忽略列表,也就是,我们设置了Subversion属性svn:ignore包含这个文件名称。这样,每次提交时它都不会作为没有版本控制的文件出现。