svn从多个中继位置释放标记

时间:2015-02-13 23:09:24

标签: svn tortoisesvn

我希望这对每个人都有意义。我的工作小组编写了我们用来测试硬件的测试脚本。我们将脚本存储在SVN中,如下所示:

/trunk/  
....../test1/  
............/test1_exes/  
............/test1.py  
....../test2/  
............/test2_exes/  
............/test2.py  

当我们发布这些脚本以便在硬件上使用时,使用以下目录结构:

\test1_exes\  
\test2_exes\  
test1.py  
test2.py  

换句话说,脚本和exe文件夹都存储在一个公共文件夹中,而不是像存储在SVN中一样。

我们想在第二个文件夹结构中标记属于特定版本的所有测试。这样我们就可以执行一个简单的svn导出,我们的测试文件夹就可以执行了。像这样:

/tag/release1/  
............./test1_exes/  
............./test2_exes/  
............./test1.py  
............./test2.py  

我曾希望通过使用TortoiseSVN并对测试文件夹的内容执行select-all并执行标记来实现此目的。不幸的是,这样做时标签/分支选项不可用。仅在选择父测试文件夹时才有可用的标记/分支选项。这会产生与第一个目录示例匹配的发布结构。

有没有人知道如何做我需要的方法,或者我会被困在多个svn调用来分别标记每个子文件/文件夹?

提前感谢您的回复。

1 个答案:

答案 0 :(得分:0)

SVN中的标记只是现有结构的廉价副本,因此您尝试实现的方式并不像SVN那样。 标记不应包含任何更改,因为标记应指向单个修订。

唯一的" SVN本身"我看到的方式是:

创建标准"标记"在完整文件夹结构上,然后将其签出到本地计算机,并调用将创建所需文件夹结构的脚本。您的部署过程不应与您的repo结构混合 - 如果有一天您需要对多个客户端进行部署,每个客户端需要不同的文件夹结构,那么您每次都会使用repo标记结构吗?

如果您仍想这样做:

在TorotiseSVN存储库资源管理器中,您可以right-drag将文件夹添加到新文件夹(确保复制它们,而不是移动它们)。但是你必须为每个"测试"单独的文件夹,你不能"选择所有"来自所有" test"的文件文件夹(至少我不知道)。但每一个复制动作都将是新版本。

其他方法是创建shell脚本,该脚本将在repo中的foreach test文件夹中复制并复制到目标文件夹。同样,每个复制操作都是新版本(尽管您可以使用svnmucc工具进行单一修订)。

这种方法有(至少)一个缺点:由于不推荐使用Tag,如果在您的版本中发现了错误,您如何解决?

Recommended方式是:

  

您可能需要对发布的内容进行进一步更改   已经标记过了。处理此问题的正确方法是创建一个新的   首先从标记分支并提交分支。做你的改变   这个分支然后从这个新分支创建一个新标签,例如   Version_1.0.1。

现在你应该创建"标签"分支结构完全不同于"标准"分支机构。听起来不错。