【问题标题】:Is there a way to automatically update the peg revision of an SVN external when commiting own changes?有没有办法在提交自己的更改时自动更新外部 SVN 的 peg 修订?
【发布时间】:2019-04-12 10:59:05
【问题描述】:

我正在使用 TortoiseSVN(版本 1.9.7)并且刚刚开始使用 svn:externals。我想用它在同一个存储库中的不同项目之间共享一些通用功能。所以 repo 布局类似于:

/projectA
/projectB
/projectC
/sharedLibs
/sharedLibs/lib1
/sharedLibs/lib2

然后我使用svn:externals,例如在/projectA/lib 上,将一些共享库链接到当前项目。例如^/sharedLib/lib1。

按照文档中的建议,我使用明确的版本号(挂钩版本)。现在,我可以更改我的工作副本/projectA/lib/lib1 中的一些代码,TortoiseSVN 让我将其提交给/sharedLibs/lib1,以便我的更改可用于所有项目。

但是,如果我想更新 /projectA/lib 的外部以指向我自己所做的更改,我必须让 another 提交只是为了更改 @ 的 svn:external 属性987654330@(使用 TortoiseSVN 的外部编辑对话框提供的“调整到 HEAD”选项)。

此过程是否有任何快捷方式,这样我每次更改外部内容(指向同一存储库中的另一个文件夹)时都不必进行额外的提交?

【问题讨论】:

    标签: svn tortoisesvn svn-externals


    【解决方案1】:

    在和 TortoiseSVN 一起玩了一段时间 svn:externals 之后,我的问题现在对我来说有点傻......我会在这里陈述我目前的理解,因为它可能总是有(很小的)机会帮助某人。

    基本上可以尝试(手动)将所有内容压缩到一个提交中,但这无法反映实际发生的情况,并且可能会使阅读提交日志的人感到困惑。

    使用问题中的示例,会发生以下情况:

    1. /projectA/lib/lib1 中的本地修改将提交给/sharedLibs/lib1。
    2. 必须告知文件夹 /projectA/lib 获取在步骤 1 中创建的 /sharedLibs/lib1 的新修订版。这是通过更新文件夹的 svn:externals 属性来完成的。

    因此更改实际上发生在两个完全不同的地方,因此使用两次提交是有意义的。另一个原因是我们希望将/projectA/lib/lib1 指向/sharedLibs/lib1 的特定修订版(挂钩修订版)。在提交更改之前(在上面的步骤 1 中),我们无法知道这个新的修订号。我们可以尝试猜测新提交获得的修订号,但如果其他人在我们的 update 和 commit 操作之间提交任何内容,这可能会失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2012-08-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 2019-07-01
      相关资源
      最近更新 更多