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