svn - 有没有办法在提交自己的更改时自动更新外部 SVN 的 peg 修订?
问题描述
我正在使用 TortoiseSVN(版本 1.9.7)并且刚刚开始使用svn:externals
. 我想用它在同一个存储库中的不同项目之间共享一些通用功能。所以回购布局将是这样的:
/projectA
/projectB
/projectC
/sharedLibs
/sharedLibs/lib1
/sharedLibs/lib2
然后我使用svn:externals
,例如 on /projectA/lib
,将一些共享库链接到当前项目。例如 ^/sharedLib/lib1
.
按照文档中的建议,我使用明确的版本号(挂钩版本)。现在,我可以更改我的工作副本中的一些代码,/projectA/lib/lib1
TortoiseSVN 允许我提交这些代码,/sharedLibs/lib1
以使我的更改可用于所有项目。
但是,如果我想更新外部的/projectA/lib
以指向我自己所做的更改,我必须再次提交以更改的svn:external
属性/projectA/lib
(使用 TortoiseSVN 的外部编辑对话框提供的“调整到 HEAD”选项) .
此过程是否有任何快捷方式,以便我每次更改外部内容(指向同一存储库中的另一个文件夹)时都不必进行额外的提交?
解决方案
在与 TortoiseSVN 一起玩svn:externals
了一段时间之后,我的问题现在对我来说看起来有点傻......我将在这里陈述我目前的理解,因为它总是有一个(很小的)机会可以帮助某人。
基本上可以尝试(手动)将所有内容压缩到一个提交中,但这无法反映实际发生的情况,并且可能会使阅读提交日志的人感到困惑。
使用问题中的示例,会发生以下情况:
- 中的本地修改
/projectA/lib/lib1
将提交给/sharedLibs/lib1
. - 必须告知文件夹
/projectA/lib
获取/sharedLibs/lib1
在步骤 1 中创建的 的新修订版。这是通过更新svn:externals
文件夹的属性来完成的。
因此更改实际上发生在两个完全不同的地方,因此使用两次提交是有意义的。另一个原因是我们要/projectA/lib/lib1
指向. 在提交更改之前(在上面的步骤 1 中),我们无法知道这个新的修订号。我们可以尝试猜测新提交获得的修订号,但如果其他人在我们和操作之间提交任何内容,这可能会失败。/sharedLibs/lib1
update
commit
推荐阅读
- javascript - 按日期和值过滤数组
- python - 涉及多个输入的python中的名称错误
- c++ - 每个语句间接改变相同值两次的结果是否未定义?
- java - Spring Boot Request Scoped Beans Autowired not Populated
- laravel - Laravel,通过父母和孩子获得结果
- java - 洛蒂动画出现故障
- java - Java中必需的类变量?
- spring - Springboot 2.x 需要 c3p0 吗?
- python - 无法在 Flask JWT Extended 中获取授权标头
- angular - Angular 和 AWS 中的静态网站定义和部署