有没有办法在提交自己的更改时自动更新 SVN 外部的挂钩修订?
Is there a way to automatically update the peg revision of an SVN external when commiting own changes?
我正在使用 TortoiseSVN(版本 1.9.7)并且刚刚开始使用 svn:externals
。我想用它在同一个存储库中的不同项目之间共享一些通用功能。所以回购布局会是这样的:
/projectA
/projectB
/projectC
/sharedLibs
/sharedLibs/lib1
/sharedLibs/lib2
然后我使用 svn:externals
,例如在 /projectA/lib
上,将 link 一些共享库添加到当前项目中。例如 ^/sharedLib/lib1
.
按照文档中的建议,我使用了明确的版本号(peg 版本)。现在,我可以在我的工作副本 /projectA/lib/lib1
中更改一些代码,并且 TortoiseSVN 让我将其提交到 /sharedLibs/lib1
以便使我的更改可用于所有项目。
但是,如果我想更新 /projectA/lib
的外部以指向我自己所做的更改,我必须进行 另一个 提交才能更改/projectA/lib
的 svn:external
属性(使用 TortoiseSVN 的外部编辑对话框提供的“调整到 HEAD”选项)。
这个过程是否有任何捷径,这样我就不必在每次更改外部内容(指向同一存储库中的另一个文件夹)时都进行额外的提交?
在 svn:externals
与 TortoiseSVN 一起玩了一段时间之后,我的问题现在对我来说有点傻...我将在这里陈述我目前的理解,因为总是有一个(小) 它可能会对某人有所帮助。
基本上可以尝试(手动)将所有内容压缩到一次提交中,但这无法反映实际发生的情况,并且可能会使阅读提交日志的人感到困惑。
使用问题中的示例,会发生以下情况:
/projectA/lib/lib1
中的本地修改将提交给 /sharedLibs/lib1
。
- 必须告知文件夹
/projectA/lib
获取在步骤 1 中创建的 /sharedLibs/lib1
的新修订版。这是通过更新 svn:externals
[=文件夹的 36=]。
所以变化实际上发生在两个完全不同的地方,因此使用两次提交是有意义的。另一个原因是我们想将 /projectA/lib/lib1
指向 /sharedLibs/lib1
的 特定修订 (挂钩修订)。在提交更改之前(在上面的步骤 1 中),我们无法知道这个新的修订号。我们可以尝试猜测新提交获得的修订号,但如果其他人在我们的 update
和 commit
操作之间提交任何内容,这可能会失败。
我正在使用 TortoiseSVN(版本 1.9.7)并且刚刚开始使用 svn:externals
。我想用它在同一个存储库中的不同项目之间共享一些通用功能。所以回购布局会是这样的:
/projectA
/projectB
/projectC
/sharedLibs
/sharedLibs/lib1
/sharedLibs/lib2
然后我使用 svn:externals
,例如在 /projectA/lib
上,将 link 一些共享库添加到当前项目中。例如 ^/sharedLib/lib1
.
按照文档中的建议,我使用了明确的版本号(peg 版本)。现在,我可以在我的工作副本 /projectA/lib/lib1
中更改一些代码,并且 TortoiseSVN 让我将其提交到 /sharedLibs/lib1
以便使我的更改可用于所有项目。
但是,如果我想更新 /projectA/lib
的外部以指向我自己所做的更改,我必须进行 另一个 提交才能更改/projectA/lib
的 svn:external
属性(使用 TortoiseSVN 的外部编辑对话框提供的“调整到 HEAD”选项)。
这个过程是否有任何捷径,这样我就不必在每次更改外部内容(指向同一存储库中的另一个文件夹)时都进行额外的提交?
在 svn:externals
与 TortoiseSVN 一起玩了一段时间之后,我的问题现在对我来说有点傻...我将在这里陈述我目前的理解,因为总是有一个(小) 它可能会对某人有所帮助。
基本上可以尝试(手动)将所有内容压缩到一次提交中,但这无法反映实际发生的情况,并且可能会使阅读提交日志的人感到困惑。
使用问题中的示例,会发生以下情况:
/projectA/lib/lib1
中的本地修改将提交给/sharedLibs/lib1
。- 必须告知文件夹
/projectA/lib
获取在步骤 1 中创建的/sharedLibs/lib1
的新修订版。这是通过更新svn:externals
[=文件夹的 36=]。
所以变化实际上发生在两个完全不同的地方,因此使用两次提交是有意义的。另一个原因是我们想将 /projectA/lib/lib1
指向 /sharedLibs/lib1
的 特定修订 (挂钩修订)。在提交更改之前(在上面的步骤 1 中),我们无法知道这个新的修订号。我们可以尝试猜测新提交获得的修订号,但如果其他人在我们的 update
和 commit
操作之间提交任何内容,这可能会失败。