git - Subgit - 停止属性同步

标签 git svn synchronization gitlab subgit

我使用 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/

相关文章:

git - 在 git stash 中列出修改后的文件名

GitHub v3 API : How to create initial commit for my shiny new repository?

git - Composer 从 bitbucket 创建项目

svn - 保护代码存储库免受破坏或错误提交的方法?

c++ - Windows下C++代码同步API失败

git - 致命的 : bad object xxx

svn - svn 命令的所有短代码是什么?

macos - 如何在OSX上使用 Homebrew 软件安装Subversion

java - 如何允许对 Guava 多重映射的不同部分(使用不同的键)进行并发写入

c++ - 为什么 'wait with predicate'解决了条件变量的 'lost wakeup'?