Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn Subversion标记文件的子集_Svn - Fatal编程技术网

Svn Subversion标记文件的子集

Svn Subversion标记文件的子集,svn,Svn,对于Subversion,是否有一种简单的方法来标记主干中的一部分文件 我想做多个标签的主干。一个标签包含主干中的所有文件,几个标签包含选定的文件子集。子集标签的内容将交付给具有不同需求的不同客户。大多数文件将进入所有标记中,但不包括所有 它可能是这样的: tags/v1.0.0 (contains everything from trunk) tags/v1.0.0_xxx (subset xxx from trunk) tags/v1.0.0_yyy tags/v1.

对于Subversion,是否有一种简单的方法来标记主干中的一部分文件

我想做多个标签的主干。一个标签包含主干中的所有文件,几个标签包含选定的文件子集。子集标签的内容将交付给具有不同需求的不同客户。大多数文件将进入所有标记中,但不包括所有

它可能是这样的:

tags/v1.0.0         (contains everything from trunk)
tags/v1.0.0_xxx     (subset xxx from trunk)
tags/v1.0.0_yyy
tags/v1.0.0_zzz
__version__ = "1.2.4-dev"
当然,可以编写一个脚本,读取每个标记变量的文件列表,并将文件从主干中逐个复制到repo中正确的标记文件夹中。但这需要大量的工作,并将产生数千个svn修订号。如果它可以在一个动作中完成,那么svn修订号只会增加一点点,那就太好了

有人知道一个简单的方法吗?
谢谢

制作高度定制的Subversion标记的最简单方法是使用Subversion客户端的所谓“WC到REPO”复制机制——即,一个
svn copy
操作(或其GUI等效操作),其“源”是您的工作副本,“目标”是存储库中的URL

假设您想制作一个与当前的
主干/
完全相同的标记,但它已删除或修改了一些文件。首先,在头部修订处获取该
trunk/
的本地工作副本(通过
svn checkout
svn update
)。现在,修改工作副本,直到它与您希望标记的内容完全相同。确保对任何添加或删除文件和目录的操作都使用Subversion操作(
svn mkdir
svn add
svn rm
,…)

现在,不要提交更改。而是使用
svn copy
将工作副本复制到新的标记URL

$ svn copy . http://svn.myserver.com/repo/tags/my-new-branch -m "Make a custom tag"
Subversion客户端将在存储库中的标记位置高效地构建它在工作副本中找到的内容的副本

许多项目(如Subversion和ViewVC项目)正是使用这种方法从发布分支创建发布标记的。通常,有些源代码文件包含软件的版本字符串,您不希望未发布的代码包含一个版本字符串,该字符串表明代码实际上已经发布。因此,在发布分支(
branchs/1.2.x/
)中,源代码文件可能有如下内容:

tags/v1.0.0         (contains everything from trunk)
tags/v1.0.0_xxx     (subset xxx from trunk)
tags/v1.0.0_yyy
tags/v1.0.0_zzz
__version__ = "1.2.4-dev"
一旦该发布分支经过测试并准备发布,项目就可以标记该分支,然后在后续提交中通过删除“-dev”位来修复
\uuuu version\uuuu
字符串

但这意味着有一个时间窗口,在这个时间窗口中,标签没有您想要的确切信息

使用WC-to-REPO拷贝是一种非常简单的方式,而且不存在争用条件

$ svn checkout .../branches/1.2.x my-working-copy
$ cd my-working-copy
$ vi ./lib/version.py # change the __version__ string to drop the "-dev"
$ # test, test, and test some more
$ svn cp . ^/tags/1.2.4 -m "Tag the 1.2.4 release."
此时,您可以执行以下两种操作之一。您可以将(尚未提交的)本地修改恢复到发布分支:

$ svn revert -R . # undo the local release branch mods
或者,您可以进行并提交进一步的本地修改,以便为以下未来版本准备分支:

$ vi ./lib/version.py # change the __version__ string now to "1.2.5-dev"
$ svn commit -m "Begin a new release cycle."

您可以同时
svn cp
多个文件:
svn cp fileA fileB fileC fileD tags/v1.0.0\u xxx
。我希望正确理解你的问题。