我的项目在网络文件系统上有一个 Subversion 存储库,一个新团队希望使用 Git 访问它,并能够提交它并从中获取更新。
我的想法是git-svn
在同一个网络文件系统上创建一个新的 Subversion 存储库的裸克隆,并确保两个存储库相对于彼此始终是最新的。
这样做的方法可能是为 Subversion 和新的 Git 存储库添加一个 post-commit 挂钩,这将各自更新对方的存储库。
Subversion post-commit 钩子将包括git svn rebase
, 和 Git 一个git svn dcommit
.
问题是我将不得不使用某种锁来确保没有人提交到任一存储库,而其他存储库也被提交,因为在任何提交之前它们始终必须保持同步。这有几个缺点,其中包括提交到 Subversion 或推送到 Git 存储库所需的时间(它必须等待钩子完成),以及一些用户可能无法运行的事实git svn
(因为它是未安装在他们的机器上),这意味着他们在提交/推送时无法更新其他存储库。
我该如何解决这些问题?Subversion 和 Git 挂钩会是什么样子?