我使用 subgit 通过中间存储库来双向同步 SVN 和 Gitlab 存储库(如 official docs for connecting to Github 中所述。这是从当前 SVN 到 Git 的非常缓慢的过渡过程的一部分。
我不知道我的问题是否与这个特定情况有关,但我注意到 SubGit 也在同步根文件夹上设置的属性 - 这些属性是 Subgit 本身设置的一些锁定时间戳(如 subgit:lock 2018-02-12T17:00:24.067
)。对于 SVN 端开发人员而言,这些属性完全无关,也不需要。
属性仅从 Git 端移动到 SVN。当来自 SVN 时,没有什么特别的地方。
有没有办法阻止 SubGit 这样做?我已经在 config
文件中使用了同步过滤,但仅适用于某些特定文件。我该如何对属性做同样的事情?
Note: For those interested, my scenario was a bit specific: SVN repo is behind VPN, while Gitlab is on a live server, which doesn't have the access to that VPN.
The sync was done through local machine (which had the VPN access) as a proxy.
And it all needed to keep accepting the commits from both SVN and Git(lab) side.
最佳答案
这个subgit:lock
(和它类似)用于处理2个用户同时提交到SVN和Git的情况。在早期版本中,SubGit 只是发送了一个命令来删除此属性(即使未设置),并且“hack”解决了这种情况。
自 Subversion 1.9 起,此功能不再起作用,并且 Subversion 开始忽略删除不存在的属性。因此 SubGit 开始每次都将 subgit:lock
设置为唯一的字符串。不幸的是,这导致了 merge 冲突( SGT-1215 ),并且在编写这些行时,它设置了一个具有唯一名称但每次都带有 subgit:lock
前缀的属性。
由于很难区分 1.8 和 1.9 Subverion 服务器版本,SubGit 对于 SVN 1.8+ 版本具有此行为,但对于 1.7 之前的版本,它仍然具有其旧行为:删除不存在的属性。 此外,它还具有旧的 file:///协议(protocol)访问行为,因为它不依赖于 Subversion 软件版本。
目前没有选项可以关闭此新行为,但如果这确实对您造成伤害,我认为我们可以实现这样的选项,在 SubGit issue tracker 中创建一个问题那么。
如果没有 subgit:lock
属性,如果您一次推送 1 个提交,则不会发生任何重大变化。但是,如果你同时推送 A 和 B,同时有人将修订版 C 提交到 SVN,则 SVN 中以 C,A,B 或 A,C,B 修订版结束的可能性会更高存储库作为结果。所以,没什么真正严重的。
我是 SubGit 开发人员之一。
关于git - Subgit - 停止属性同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48750660/