这是否可以使用tortoiseSVN?:
始终冻结svn:externals
代码
方案是我们的主干将始终使用'HEAD'修订版的外部,但是当我们创建'标签'时,我们希望他们有一个外部版本设置,以便在特定时间点正确“冻结”它们
更新
感谢大家的反馈/信息。
由于我找不到任何可以完全满足我们需求的内容(尝试smartsvn
和svncopy.pl
),我创建了一个控制台应用程序,到目前为止已经通过了我们所有的测试用例。
高级概述:应用程序获取存储库URL然后查找所有外部因素并为它们添加最后一次提交修订 - 我执行svn info
并获取“提交修订”。
该应用程序适用于文件夹和单文件外部。
以下是源代码和完整的安装文件: http://svnxf.codeplex.com/
答案 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似乎主要是为公共目录中包含的代码而设计的。 svn:externals(甚至通过名称)被添加用于引用外部存储库。所以我希望上面还提到其他问题。
根据我的经验,对于非固定版本使用svn:externals的需求通常来自存储库中的错误结构。
可能不是你的情况,我只是建议考虑这些要点......
答案 5 :(得分:1)
更新
感谢大家的反馈/信息。
由于我找不到任何能完全满足我们需求的东西(尝试过smartsvn和svncopy.pl),我制作了一个控制台应用程序,到目前为止已经通过了我们所有的测试用例。
高级概述:应用程序获取存储库URL然后查找所有外部并为其添加最后一次提交修订 - 我执行“svn info”并获取“提交修订”。
该应用程序适用于文件夹和单文件外部。
以下是源代码和完整的设置文件:http://svnxf.codeplex.com/
答案 6 :(得分:0)
答案 7 :(得分:0)
我知道这不适用于tortoiseSVN,但如果你使用颠覆性的eclipse,你可以右键单击该项目并选择team->标签。 Subversive默认冻结外部,并很好地格式化属性。