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

问题描述 投票:17回答:8

这对tortoiseSVN有可能吗?:

始终冻结svn:externals标签

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

更新

感谢大家的反馈/信息。

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

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

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

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

svn tortoisesvn svn-externals
8个回答
6
投票

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

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


6
投票

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

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

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


3
投票

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


2
投票

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


1
投票

我会第二个迈克尔。

除了SVN文档的推荐:

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

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

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

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


1
投票

更新

感谢大家的反馈/信息。

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

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

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

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


0
投票

您可以在外部指定修订:

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

svnbook


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.