第 8 章 新建VCS模块

点击某个VCS定义页面里面的New Module(新建模块)图标。 如果定义了多个VCS模块,那么Luntbuild会按序依次检出这些模块。 如果后面模块目标路径和前一个模块有部分重叠,那么这部分重叠的路径将会被后一个模块覆盖。 例如:假设您定义了一个模块,其目标路径为"/foo/bar", 然后又定义了第二个模块,其目标路径为"/foo", 那么从第二个模块检出的内容将完全覆盖第一个模块。 反过来,如果第一个模块的目标路径为"/foo", 第二个模块的目标路径为"/foo/bar",那么第一个模块检出的"/foo/bar"下的内容会被第二个模块覆盖, 而在检出代码中的其他路径比如/foo/another_bar,将不会被覆盖。

8.1. 设置AccuRev模块信息

Label(标签)

标签在AccuRev里面是用于同步的事务编号。在此指定您希望基于哪个事务编号进行构建。

Depot(存储位置)

用于检出代码 Accurev储存位置。

Backing stream(回溯流)

构建模块的回溯流的名字。 The backing stream should be able to have streams created from it by the build user.

Build stream(构建流)

指定同回溯流关联的构建流名称 (如果该构建流 存在,它将被自动创建)。 基于这个流,一个相关的引用树将会被创建(树的名称为流的名称加上"_reference"后缀)。

8.2. 设置cvs模块信息

Source path(源路径)

指定从CVS代码库中获取代码的路径,例如:testcvs/src

Branch(分支)

指定前面的源路径的分支。该选项是可选的。如果没有设置相应的值,那么将把主分支作为默认值。

Label(标签)

指定前面的源路径的标签。该选项也是可选的。 如果指定了该值,那么该值将优先于分支的值。如果没有设置相应的值,就会检出上述指定分支里面的最新代码。

"Source path"(源路径)代表了CVS代码库中模块的意思,例如"/testcvs", "/testcvs/web",或者"testcvs"。 但是不能用"/"或者"\"这两个字符来定义源路径。 "Branch"(分支)就是CVS分支(branch),而"Label"(标签)就是CVS的标签(tag)。 对于某个模块,这二个属性(branch和label)中只有一个的值有效。 如果都不为空,那么标签将优于分支。 如果都为空,Luntbuild则从主分支获取最新的代码。

8.3. 设置Perforce模块信息。

Depot path(存储位置路径)

指定Perforce存储位置的路径,例如"//depot/testperforce/...".

Label(标签)

指定前面的存储位置路径上的标签。该属性是可选的。 如果为空,那么将会检出该存储路径上最新的版本。

Client path(客户端路径)

指定客户端的路径,例如"//myclient/testperforce/...".

注意

某些文件和目录要排除在外,那么对于需要排除在外的每一个文件和目录都需要创建一个独立的模块,而且 在Depot路径的属性前需要加上减号((-))作为前缀:
        Depot path:  -//depot.side
        Client path: //client.side
        

Perforce的模块定义把代码库的Depot路径("Depot path")映射到客户端路径("Client path")。 Luntbuild也支持Perfoce的标签属性。 Depot路径("Depot path")表示Perforce代码库中的路径,例如 "//depot/testperforce/..." 客户端路径("Client path")表示客户端的路径(也就是Depot路径下的内容检出之后保存在客户端的什么目录下), 例如"//myclient/testperforce/..." "Label"是Perfoce标签,如果您想获取指定的Depot路径下的内容的某个时刻的快照,那么就需要使用标签。 如果标签为空,那么获得的Depot路径下的内容为head版本。 客户端路径对应的目录不一定要存在。 如果不存在那么Luntbuild会自动创建相应的目录。 在Perfoce的连接信息中指定的用户应该有足够的权限来创建或者修改Perforce的参数。

8.4. 设置Subversion模块信息

Source path(源路径)

即Subversion代码库中的路径,例如"testsvn", "testsvn/web", 或者 "/testsvn"。 当"branch"(分支) 或者 "label"(标签)属性指定的时候,本路径会映射到svn代码库的另一个路径。

Branch(分支)

指定以上源路径的分支。该属性为可选项,如果不设置,那么将使用默认值trunk。

注意

在subverion里面没有分支的概念。在此指定的值会被Luntbuild映射到相应的源路径,效果就像cvs的分支一样。

Label(标签)

指定以上源路径的标签。该属性为可选的。如果设置了该属性,其优先级高于分支。如果不设置,就采用指定分支的head version。

注意

同样,subversion也没有标签的概念。在此指定的值会被Luntbuild映射到相应的源路径,效果就像cvs的标签一样。

Destination path(目标路径)

该属性为可选的。目标路径相对于项目的工作目录,如果设置了相应的值,那么从subversion代码库中获取的代码将保存在该目录下。 否则将会在项目的工作目录下创建一个以源路径命名的目录,从subversion获取的代码将保存在该目录下。

"Source path"(源路径)即Subversion代码库中的路径,例如"testsvn", "testsvn/web", 或者 "/testsvn"。 Luntbuild在其他的属性值基础上将该路径映射到Svn代码库中的路径。 我们定义了以下属性来描述这种映射方式:

Repository url base: svn://localhost
Directory for trunk: trunk
Directory for branches: branches
Directory for tags: tags

可以试验一下下面的模块设置和路径映射:

Source path: testsvn/web, branch: <empty>, label: <empty>, destination path: <empty>

Luntbuild从ulr"svn://localhost/trunk/testsvn/web"下检出代码, 并保存在"<project work directory>/testsvn/web"下面。

Source path: testsvn/web, branch: simplified-chinese, label: <empty>, destination path: <empty>

Luntbuild从ulr "svn://localhost/branches/simplified-chinese/testsvn/web"下检出代码, 并保存在"<project work directory>/testsvn/web"下面。

Source path: testsvn/web, branch: <empty>, label: v1_0, destination path: <empty>

Luntbuild从ulr "svn://localhost/tags/v1_0/testsvn/web"下检出代码, 并保存在"<project work directory>/testsvn/web"下面。

Source path: testsvn/web, branch: simplified-chinese, label: v1_0, destination path: testsvn/web/simplified-chinese

Luntbuild从ulr "svn://localhost/tags/v1_0/testsvn/web" 下检出代码, 并保存在"<project work directory>/testsvn/web/simplified-chinese"下面。

注意

这里定义的分支无效,因为同时定义了分支和标签,那么标签优先。

当Luntbuild给检出到目录"<project work directory>/testsvn/web"下的代码打上标签,例如是"v1_0", 会执行下面的代码:"svn copy <project work directory>/testsvn/web svn://localhost/tags/v1_0/testsvn/web"

如果将"Directory for trunk","Branch"和"Label"三个属性都设置为空值,就可以避免上面的url映射。 通过这种方式,只设置"Source path" 和 "Destination path"属性,您就可以控制从什么地方检出代码,并将检出的代码保存在什么地方。 这种情况下,源路径只会把"repository url base"属性的值作为前缀。

8.5. 设置VSS模块信息

Source path(源路径)

在此指定在VSS代码库中的路径,例如"testvss", 或者"/testvss".

注意

不用在路径前添加$符号,如果指的是整个代码库,只需要输入"/"就可以了。

Label(标签)

在此指定上面设置的源路径上的标签,该属性为可选的,如果为空,就使用最新的版本。

Destination path(目标路径)

指定相对于项目工作目录的目标目录,从源目录下获取的代码就保存在这个目录下。 该属性为可选的,如果该属性为空,Luntbuild会在项目工作目录下建一个和源目录的目录结构一致的目录, 并将检出的代码保存在这个目录下。

源路径其实就是相对于VSS代码库根目录的的项目路径,例如"testvss", "/testvss", 或者 "/testvss/web"等等。 使用"/" 或者 "\",都可以获取整个代码库的内容。 标签指VSS标签。VSS通过创建一个新的共享的项目来实现分支功能。 因此您需要配置不同的模块,这样才能从不同的分支获取代码。 如果某个模块的标签为空,Luntbuild则从VSS获取该模块的最新代码。 如果定义目标路径属性,那么从VSS获取的代码将会保存在相对于项目工作目录的目标目录下。 否则会保存在相对于项目工作目录并且和源目录的目录结构一样的目录下。

8.6. 设置StarTeam模块信息

StarTeam view(StarTeam视图)

在此指定StarTeam视图。该属性为可选属性。如果为空,Luntbuild使用当前的StarTeam项目的根view。

Source path(源路径)

在此指定相对于StarTeam视图的路径。"/"代表根路径。

Label(标签)

指定以上StarTeam视图的标签。该属性为可选属性。如果为空,就以指定视图上的最新代码为准。

Destination path(目标路径)

指定相对于项目工作目录的目标目录,从源目录下获取的代码就保存在这个目录下。 该属性为可选的,如果该属性为空,Luntbuild会在项目工作目录下建一个和源目录的目录结构一致的目录, 并将检出的代码保存在这个目录下。

"StarTeam view"指StarTeam的视图,"Label"指StarTeam视图的标签。 如果"StarTeam view"为空,Luntbuild就使用StarTeam的根视图。 "Source path"是相对指定的StarTeam视图根目录的路径。 如果定义了"Destination path"性,那么从StarTeam代码库获取的代码将会保存在相对于项目工作目录的目标目录下。 否则会保存在相对于项目工作目录并且和源目录的目录结构一样的目录下。