来自多个中继位置的svn释放标签

来自多个中继位置的svn释放标签,svn,tortoisesvn,Svn,Tortoisesvn,我希望这对每个人都有意义。我所在的团队编写测试脚本,用于测试硬件。我们将脚本存储在SVN中,如下所示: /trunk/ ....../test1/ ............/test1_exes/ ............/test1.py ....../test2/ ............/test2_exes/ ............/test2.py 当我们发布这些脚本以在硬件上使用时,将使用以下目录结构: \test1_exes\ \test2_ex

我希望这对每个人都有意义。我所在的团队编写测试脚本,用于测试硬件。我们将脚本存储在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并对测试文件夹的内容进行全选并执行标记来实现这一点。不幸的是,这样做时,标记/分支选项不可用。只有在选择父测试文件夹时,标记/分支选项才可用。这将产生一个与第一个目录示例匹配的发布结构

有人知道我需要做什么的方法吗?或者我会被困在多次svn调用中,分别标记每个子文件/文件夹吗


提前感谢您的回复。

SVN中的标记只是现有结构的廉价副本,因此您试图实现的目标与SVN不太一样。标记不应涉及任何更改,因为标记应指向单个修订

我认为SVN唯一正确的方式是: 在完整文件夹结构上创建标准标记,然后将其签出到本地计算机,并调用将创建所需文件夹结构的脚本。您的部署过程不应该与您的repo结构混合在一起-如果有一天您需要对多个客户机进行部署,每个客户机需要不同的文件夹结构,那么您每次都会弄乱您的repo标记结构吗

如果仍要执行此操作,请执行以下操作: 在TorotiseSVN存储库资源管理器中,您可以将文件夹右键拖动到新文件夹中,确保复制而不是移动它们。但您必须分别为每个测试文件夹执行此操作,您不能从所有测试文件夹中选择所有文件,至少我不知道。但每一个复制操作都将是新的修订

另一种方法是创建shell脚本,它将进入repo中的每个测试文件夹,并将它们复制到目标文件夹。同样,每个复制操作都将是新的修订版,尽管您可以使用该工具使其成为单个修订版

这种方法至少有一个缺点:由于不推荐使用标记,如果在您的发行版中发现错误,您如何修复它

方法是:

您可能需要对所发布的版本进行进一步的更改 已经标记了。正确的处理方法是创建一个新的 首先从标记进行分支并提交分支。您的更改是否在上 然后从该新分支创建一个新标记,例如。 版本1.0.1


现在,您应该创建结构完全不同于标准分支的标记分支。听起来很糟糕。

谢谢你的回答,伊万。我知道我的建议并不完全是使用SVN的有效方法,但它应该比我们一直在做的更好,即将SVN中的每个测试导出到共享驱动器中。这意味着无法跟踪更改。至少这种方法,连同你的建议,提供了某种程度的控制。