如何让TortoiseSVN永远冻结标签的svn:externals

时间:2009-12-30 21:15:44

标签: svn tortoisesvn svn-externals

这是否可以使用tortoiseSVN?:

始终冻结svn:externals代码

方案是我们的主干将始终使用'HEAD'修订版的外部,但是当我们创建'标签'时,我们希望他们有一个外部版本设置,以便在特定时间点正确“冻结”它们

更新

感谢大家的反馈/信息。

由于我找不到任何可以完全满足我们需求的内容(尝试smartsvnsvncopy.pl),我创建了一个控制台应用程序,到目前为止已经通过了我们所有的测试用例。

高级概述:应用程序获取存储库URL然后查找所有外部因素并为它们添加最后一次提交修订 - 我执行svn info并获取“提交修订”。

该应用程序适用于文件夹和单文件外部。

以下是源代码和完整的安装文件: http://svnxf.codeplex.com/

8 个答案:

答案 0 :(得分:6)

建议的最佳做法是始终在外部定义中使用显式修订(而不是HEAD)。来自documentation

  

您应该认真考虑在所有外部使用显式修订号   定义。这样做意味着您可以决定何时下拉不同的快照   外部信息,以及确切的快照。 ...对于软件   项目,这可能是旧的成功和失败的构建之间的差异   复杂代码库的快照。

直接回答您的问题:不,在使用TortoiseSVN进行标记时,无法自动更改外部定义。必须在创建标记时手动完成。

答案 1 :(得分:6)

我今天发现这篇文章,因为我找到了完全相同问题的解决方案。最终我发现TortoiseSVN在他们的最新版本中支持这个所需的功能:TortoiseSVN 1.7 Release Notes

希望这可以帮助那些在研究同一问题时找到这篇文章的人。

答案 2 :(得分:3)

你可以尝试svncopy.pl(在google上找到它) 这是一个满足您需求的perl脚本。

答案 3 :(得分:2)

您应该尝试SmartSVN,在创建标记或分支时,可以选择将HEAD外部转换为固定的外部。您可以在添加标记/添加分支对话框的底部找到此选项(外部修订:(o)保持原样()修复所有()下面的修复除外)。

答案 4 :(得分:1)

我会第二个迈克尔。

此外,SVN文档的建议:

  • 在svn:externals中使用非固定版本会更难将工作副本更新到指定版本(例如在错误调查期间)
  • 使用svn:externals的目录日志将不完整,这可能会提供有关修订之间的更改集的错误信息
  • 分支和合并可能会变得更加复杂

通常,SVN似乎主要是为公共目录中包含的代码而设计的。 svn:externals(甚至通过名称)被添加用于引用外部存储库。所以我希望上面还提到其他问题。

根据我的经验,对于非固定版本使用svn:externals的需求通常来自存储库中的错误结构。

可能不是你的情况,我只是建议考虑这些要点......

答案 5 :(得分:1)

更新

感谢大家的反馈/信息。

由于我找不到任何能完全满足我们需求的东西(尝试过smartsvn和svncopy.pl),我制作了一个控制台应用程序,到目前为止已经通过了我们所有的测试用例。

高级概述:应用程序获取存储库URL然后查找所有外部并为其添加最后一次提交修订 - 我执行“svn info”并获取“提交修订”。

该应用程序适用于文件夹和单文件外部。

以下是源代码和完整的设置文件:http://svnxf.codeplex.com/

答案 6 :(得分:0)

您可以在外部指定修订:

third-party/skins -r148        http://svn.example.com/skinproj

请参阅svnbook

答案 7 :(得分:0)

我知道这不适用于tortoiseSVN,但如果你使用颠覆性的eclipse,你可以右键单击该项目并选择team->标签。 Subversive默认冻结外部,并很好地格式化属性。

相关问题