svn - 如何搭建异构多用户git/svn环境

标签 svn git git-svn

我在一个使用 Subversion 作为主要 VCS 的团队工作,但几乎每个人都开始通过 git-svn 在本地使用 git。现在我们正在考虑完全切换到 git。

作为中间步骤,最好同时使用它们一段时间。问题不在于大多数乐于切换到 git 的用户,而是我们围绕 Subversion 构建的持续集成/构建基础设施。管理层当然不会因为巨大的变化导致的任何停机而感到兴奋,我们每两周发布一次新功能,几乎每天都会发布错误修复和其他小东西。理想情况下,并行运行这些系统将使最终的切换不成问题。

问题似乎是没有源自 Subversion 存储库的共享 git 存储库。每个并行 git svn merge/rebase 都会创建重复的新 git 提交。并行我的意思是两个开发人员在他们自己的同一个 git 存储库的克隆中进行 merge 或 rebase 。更糟糕的是,git svn dcommits 似乎改变了 git commit 的 id。

那么这种环境是否可能,或者 git-svn 真的只是一个单用户工具?

最佳答案

首先,我建议不要费心尝试做两个中央存储库,一个 svn 和一个 git,当然不要将 svn 作为核心存储库。 SVN 倾向于忽略 git 的哈希提交标识,因此这不是一条简单的双向 channel 。

现在咬紧牙关总比以后处理一团糟要好。

SVN只读镜像

我认为 svn 的一个目的是有效的,如果对持续的 svn 用户来说不是非常有用的话,那就是作为一个只读存储库。换句话说,您可以设置 svn 来镜像 git 存储库(至少是 master 分支),允许 checkout ,但不允许提交回 svn。这样,如果有人想审查代码或行为,并且熟悉 svn 或 svn 工具,他们就可以利用这些知识。他们只是不会处于完整的开发模式。

轻松过渡到 Git

继续使用 svn 而不是 git 的原因主要是熟悉程度,所以最好的选择可能是 A:

使用基本命令集进行教育,使某人能够将他们最基本的行为从 svn 思维方式转换为 git 用法 (http://git.or.cz/course/svn.html)。这样他们可能无法做 git 必须提供的最好的事情,但他们将能够做需要 git promise 的简单基础。

和乙:

委托(delegate)一段时间。当一些人正在学习 git 时,让他们在上游向知识更渊博的 git 用户提供补丁/分支以 merge 功能,并协助他们直到他们跟上速度并熟悉该工具。

最后,ftp 之于 svn 就像 svn 之于 git 这一事实并没有太多解决的办法,要利用这些优势,您需要充分尝试一下。

关于svn - 如何搭建异构多用户git/svn环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515030/

相关文章:

svn - 是什么让 Git 在 merge 方面比 Subversion 更好?

svn - 如何设置 Continuum 以构建 svn 提交?

git - 如何在 cygwin 上构建和使用最新版本的 git?

git - 使用 Gitolite 自动部署 PHP 脚本

git - 如何部分导出 git 存储库?

svn - Subversion 将未修改的文件标记为已修改

git - 如何处理 .git 目录?

svn - 是否有可能使 git svn dcommit 导致单个 svn 提交?

svn - Git - 最佳实践(一般来说,从前 SVN 用户的角度来看。)

svn - SVNKit是否支持Subversion 1.9