提交自己的更改时,是否可以自动更新SVN外部版本的钉修订?

时间:2019-04-12 10:59:05

标签: svn tortoisesvn svn-externals

我正在使用TortoiseSVN(版本1.9.7),并且刚开始使用Table2。我想使用它在同一存储库中的不同项目之间共享一些通用功能。因此,回购布局将类似于:

svn:externals

然后我使用/projectA /projectB /projectC /sharedLibs /sharedLibs/lib1 /sharedLibs/lib2 ,例如svn:externals上的,以将某些共享库链接到当前项目。例如/projectA/lib

按照文档中的建议,我使用显式版本号(peg修订版)。现在,我可以在工作副本^/sharedLib/lib1中更改一些代码,TortoiseSVN为我提供了将其提交到/projectA/lib/lib1的功能,以便使更改适用于所有项目。

但是,如果我想更新/sharedLibs/lib1的外部以指向我自己所做的更改,则必须做出另一个提交,仅更改{{1} /projectA/lib的}属性(具有TortoiseSVN的外部编辑对话框提供的“调整至HEAD”选项)。

此过程是否有任何捷径,以便每次更改外部文件(指向同一存储库中的另一个文件夹)时都不必额外提交?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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