手册

包含一个公共子项目

有时您可能希望在工作副本中包含另一个项目,例如一些库代码。至少有 4 种方法可以处理这种情况。

使用 svn:externals

为项目中的文件夹设置 svn:externals 属性。此属性包含一行或多行;每行都包含您要用作公共代码签出文件夹的子文件夹的名称,以及您要签出到该文件夹的存储库 URL。有关完整详细信息,请参阅 名为“外部项目”的部分

提交新文件夹。现在,当您更新时,Subversion 将从其存储库中拉取该项目的副本到您的工作副本中。如果需要,将自动创建子文件夹。每次更新主工作副本时,您还将收到所有外部项目的最新版本。

如果外部项目位于同一个存储库中,您对该项目所做的任何更改都将在您提交主项目时包含在提交列表中。

如果外部项目位于不同的存储库中,您对外部项目所做的任何更改都将在您提交主项目时显示或指示,但您必须分别提交这些外部更改。

在描述的三种方法中,这是一种唯一不需要在客户端进行任何设置的方法。一旦在文件夹属性中指定了外部项目,所有客户端在更新时都会获得填充的文件夹。

使用嵌套工作副本

在项目中创建一个新文件夹来包含公共代码,但不要将其添加到 Subversion 中。

选择 TortoiseSVN签出 用于新文件夹,并将公共代码的副本签出到其中。现在您有一个独立的工作副本嵌套在您的主工作副本中。

这两个工作副本是独立的。当您提交对父级的更改时,对嵌套 WC 的更改将被忽略。同样,当您更新父级时,嵌套 WC 不会更新。

使用相对路径

如果您在多个项目中使用相同的核心代码,并且不想为每个使用它的项目保留多个工作副本,您可以将其检出到与所有其他使用它的项目相关的单独位置。例如

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 环境,您需要记录所需的驱动器映射,以便您的团队知道这些神秘文件在哪里。此方法仅供封闭开发环境使用,不建议一般使用。

将项目添加到存储库

也许最简单的方法是将项目添加到您自己的项目工作副本的子文件夹中。但是,这样做有一个缺点,即您必须手动更新和升级此外部项目。

为了帮助升级,TortoiseSVN 在资源管理器右键拖动上下文菜单中提供了一个命令。只需将解压缩的外部库新版本的文件夹右键拖动到工作副本中的文件夹,然后选择 上下文菜单SVN 供应商分支在此处。这将把新文件复制到目标文件夹,同时自动添加新文件并删除新版本中不再存在的文件。

TortoiseSVN 主页