包含一个普通的子项目

有时候你希望在你的工作副本中引入另一个项目,或许是一些库代码,你不必在你的版本库复制一份,因为你会失去与原始(且维护的)代码的联系,或者你可能有多个项目共享同一份核心代码,有至少三种方法处理这个问题。

使用 svn:externals

Set the svn:externals property for a folder in your project. This property consists of one or more lines; each line has the name of a sub-folder which you want to use as the checkout folder for common code, and the repository URL that you want to be checked out there. For full details refer to “引用的工程”一节.

Commit the new folder. Now when you update, Subversion will pull a copy of that project from its repository into your working copy. The sub-folders will be created automatically if required. Each time you update your main working copy, you will also receive the latest version of all external projects.

如果一个外部工程位于同一版本库中,当你向主项目提交你的修改时,你对外部工程做的修改也会包含在提交列表中。

如果外部工程位于不同的版本库,当你向主项目提交你的修改时,你对外部工程做的修改会被通报,但是你必须单独的提交这些外部项目的修改。

在已述的三种方法中,这是唯一不需要在客户端设置的方法。一旦在目录属性中指定了外部资源,所有客户端在更新时都会创建相应的目录。

使用嵌套工作副本

在你的项目创建一个包含普通代码的新目录,但不将其添加到Subversion

在新目录下选择TortoiseSVN检出,在其中检出普通代码的副本,现在你在主要的工作副本有了一个独立的嵌套的工作副本。

两个工作副本是独立的,当你在父目录提交修改,嵌套的工作副本会被忽略,同样当你更新你的父目录,嵌套的工作副本不会被更新。

使用相对位置

如果你在多个项目中使用共同的代码,而你不想为每个项目保存一份副本,你可以将其检出到一个单独的位置,与其他项目关联,例如:

C:\Projects\Proj1
C:\Projects\Proj2
C:\Projects\Proj3
C:\Projects\Common

然后使用相对路径例如..\..\Common\DSPcore引用通用代码。

如果你的项目分散到不相关的位置,你可以使用一个变种方式,可以将通用代码放到一个位置,且使用盘符映射到你可以在项目硬编码的内容,例如将通用代码检出到D:\Documents\FrameworkC:\Documents and Settings\{login}\My Documents\framework,然后使用

SUBST X: "D:\Documents\framework"

在你的源代码创建磁盘映射,你的代码可以使用绝对位置。

#include "X:\superio\superio.h"

这个方法职能工作在完全PC的环境,你所做的就是记录必须的磁盘映射,所以你的团队知道这些神秘文件的位置,这个方法只能用于紧密地开发环境,在普通的使用中并不推荐。