svn 从多个中继位置释放标签
svn release tag from multiple trunk locations
我希望这对每个人都有意义。我的工作小组编写了我们用来测试硬件的测试脚本。我们将脚本存储在 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 并执行标记来做到这一点。不幸的是,这样做时 tag/branch 选项不可用。只有选择 parent 测试文件夹时, tag/branch 选项才可用。这导致与第一个目录示例匹配的发布结构。
有没有人知道一种方法来做我需要的事情,或者我会被困在进行多次 svn 调用以分别标记每个 child file/folder 吗?
提前感谢您的任何回复。
SVN 中的标记只是现有结构的廉价副本,因此您要实现的目标与 SVN 的实现方式并不完全相同。 标记不应涉及任何更改,因为标记应指向单个修订版。
我看到的唯一 "SVN proper" 方式是:
在完整文件夹结构上创建标准 "Tag",然后将其检出到本地计算机,并调用将创建您需要的文件夹结构的脚本。你的部署过程不应该与你的回购结构混合——如果有一天你需要对多个客户端进行部署,每个客户端都需要不同的文件夹结构,你会不会每次都弄乱你的回购标签结构?
如果您还想这样做:
在 TorotiseSVN 资源库浏览器中,您可以 right-drag
您的文件夹到新文件夹(确保您复制它们,而不是移动它们)。但是你必须分别为每个 "test" 文件夹执行此操作,你不能 "select-all" 来自所有 "test" 文件夹的文件(至少我不知道)。但是每一个复制动作都会是新的修改。
其他方法是创建 shell 脚本,该脚本将针对您存储库中的每个测试文件夹并将它们复制到目标文件夹。同样,每个复制操作都是新修订版(尽管您可以使用 svnmucc 工具使其成为单一修订版)。
这种方法(至少)有一个缺点:由于不推荐使用 Tag,如果在您的版本中发现错误,您将如何修复它?
Recommended方式是:
It may be that you need to make further changes to a release which you
have already tagged. The correct way to handle this is to create a new
branch from the tag first and commit the branch. Do your Changes on
this branch and then create a new tag from this new branch, e.g.
Version_1.0.1.
现在您应该创建 "tag" 分支,其结构与 "standard" 分支完全不同。听起来很糟糕。
我希望这对每个人都有意义。我的工作小组编写了我们用来测试硬件的测试脚本。我们将脚本存储在 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 并执行标记来做到这一点。不幸的是,这样做时 tag/branch 选项不可用。只有选择 parent 测试文件夹时, tag/branch 选项才可用。这导致与第一个目录示例匹配的发布结构。
有没有人知道一种方法来做我需要的事情,或者我会被困在进行多次 svn 调用以分别标记每个 child file/folder 吗?
提前感谢您的任何回复。
SVN 中的标记只是现有结构的廉价副本,因此您要实现的目标与 SVN 的实现方式并不完全相同。 标记不应涉及任何更改,因为标记应指向单个修订版。
我看到的唯一 "SVN proper" 方式是:
在完整文件夹结构上创建标准 "Tag",然后将其检出到本地计算机,并调用将创建您需要的文件夹结构的脚本。你的部署过程不应该与你的回购结构混合——如果有一天你需要对多个客户端进行部署,每个客户端都需要不同的文件夹结构,你会不会每次都弄乱你的回购标签结构?
如果您还想这样做:
在 TorotiseSVN 资源库浏览器中,您可以 right-drag
您的文件夹到新文件夹(确保您复制它们,而不是移动它们)。但是你必须分别为每个 "test" 文件夹执行此操作,你不能 "select-all" 来自所有 "test" 文件夹的文件(至少我不知道)。但是每一个复制动作都会是新的修改。
其他方法是创建 shell 脚本,该脚本将针对您存储库中的每个测试文件夹并将它们复制到目标文件夹。同样,每个复制操作都是新修订版(尽管您可以使用 svnmucc 工具使其成为单一修订版)。
这种方法(至少)有一个缺点:由于不推荐使用 Tag,如果在您的版本中发现错误,您将如何修复它?
Recommended方式是:
It may be that you need to make further changes to a release which you have already tagged. The correct way to handle this is to create a new branch from the tag first and commit the branch. Do your Changes on this branch and then create a new tag from this new branch, e.g. Version_1.0.1.
现在您应该创建 "tag" 分支,其结构与 "standard" 分支完全不同。听起来很糟糕。