19

使用 tortoiseSVN 可以吗?:

总是冻结svn:externals标签

场景是我们的主干将始终对外部使用“HEAD”修订,但是当我们创建“标签”时,我们希望它们为外部设置一个修订集,以便在特定时间点正确“冻结”它们。

更新

感谢大家的反馈/信息。

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

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

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

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

4

8 回答 8

7

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

希望这将帮助其他在研究相同问题时找到这篇文章的人。

于 2013-10-09T17:57:40.403 回答
6

推荐的最佳实践是始终在外部定义中使用显式修订(而不是 HEAD)。从文档中:

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

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

于 2009-12-30T21:30:05.080 回答
3

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

于 2010-01-06T09:12:37.597 回答
2

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

于 2009-12-31T07:51:51.880 回答
1

我会第二个迈克尔。

除了 SVN 文档的推荐之外:

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

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

根据我的经验,需要使用 svn:externals 进行非固定修订经常来自存储库中的错误结构。

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

于 2010-01-06T10:30:56.590 回答
1

更新

感谢大家的反馈/信息。

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

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

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

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

于 2013-01-17T03:20:43.843 回答
0

我知道这不适用于 tortoiseSVN,但是如果您使用带有颠覆性的 eclipse,您可以右键单击该项目并选择 team->tag。Subversive 默认情况下会冻结外部对象并很好地格式化属性。

于 2010-12-23T22:49:24.577 回答
0

您可以在 externals 中指定修订:

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

svnbook

于 2009-12-30T21:19:33.543 回答