如何正确使用git svn、svn ers签出svnrepo和git ers克隆gitrepo、不小心提交

如何正确使用git svn、svn ers签出svnrepo和git ers克隆gitrepo、不小心提交,git,svn,git-svn,Git,Svn,Git Svn,在我的公司,我们使用SVN,但希望将来无缝切换到GIT。这就是为什么我开始学习git svn,它承诺将作为svn存储库的前端 我尝试在以下设置中使用它: SVNREPO-主svn存储库 GITREPO-SVNREPO的git svn克隆 报告1,报告2,…-代表git ER的GITREPO的git克隆 这些要求是: [ManyGitUsers]许多Giter可以从GITREPO克隆/推送到GITREPO [ManySvnUsers]许多SVNER都向SVNREPO承诺 [SyncHook]

在我的公司,我们使用SVN,但希望将来无缝切换到GIT。这就是为什么我开始学习git svn,它承诺将作为svn存储库的前端

我尝试在以下设置中使用它:

  • SVNREPO-主svn存储库
  • GITREPO-SVNREPO的git svn克隆
  • 报告1,报告2,…-代表git ER的GITREPO的git克隆
这些要求是:

  • [ManyGitUsers]
    许多Giter可以从GITREPO克隆/推送到GITREPO
  • [ManySvnUsers]
    许多SVNER都向SVNREPO承诺
  • [SyncHook]
    GITREPO和SVNREPO之间的同步可以通过hook完成,也可以在开发hook之前由管理员手动完成
  • [NoInteraction]
    giters不想知道任何关于SVNREPO的事情,反之亦然
  • [NoProactivity]
    用户在发生问题(冲突)时解决所有问题;他们不与其他人同步以避免他们
问题:

  • git svn可以进行这种设置吗?如果有更好的,建议其他的
  • 我应该如何配置GITREPO
  • giters需要知道特殊的后端吗,还是一切都是透明的

  • 到目前为止,我的实验表明它几乎不起作用,但是提交到SVNREPO会破坏与git同步的可能性。我只是认为原因是我发出了错误的命令…

    它起作用了。搜索/阅读文档。还有很多书都是关于这个的

    基本上GIT用户有所有的责任,SVN端的一切都保持不变


    每次SVN提交GIT时,GIT用户都必须执行
    GIT SVN rebase
    。在每次GIT提交时,GIT用户都必须执行GIT svn dcommit

    首先,让我谈谈如何进行svn镜像:

    通常,有一个主回购和一个从回购(通常在不同的位置,因此需要)。SVNER在主位置签出并从主位置提交。从机位置的签出和从机位置的提交。但实际的设置是,每当有人提交到镜像时,从机上的提交首先提交到主机,然后镜像回从机(svnsync)。最终用户不知道这一点。这确保了回购协议的同步。有关此设置的详细说明:

    现在,引入Git,这变得很困难。问题是,在bot-Git-repo和SVN-repo中几乎可以同时提交。如果SVN中的commit得到应用,并且新的commit来自Git(Git没有在SVN中看到新的commit),那么您将遇到很多麻烦

    您可以进行的设置是,所有用户都使用
    git svn
    直接“克隆”svn repo。然后,他们可以像其他svn客户机一样使用git repo


    或者像你提到的那样有一个中心git回购(使用git svn克隆),所有Giter都从中克隆并推送到它。中央回购协议中有一个连接到git svn rebase和git svn dcommit的钩子,但当事情破裂时,有人会手动修复回购协议。

    git svn还有一个替代方案,看起来可以满足您的需要:。我正在从事SubGit项目,但我希望这个答案是相关的,不会被认为是垃圾邮件

    SubGit是一种工具,您可以在服务器端将其安装到存储库中。然后,您将能够使用“git clone”或签出作为Subversion工作副本来克隆该存储库。Git用户将像处理普通Git存储库一样工作,不需要特殊命令。对于Subversion用户也是如此


    Git和Subversion端由自动保持同步。

    如果这意味着Git用户必须持续主动地检查svn提交,那么这样的系统就不可用了。我想要的是,正常的工作流程——我提交,提交,提交,偶尔推/拉,而不必在意。稍微多做一些工作来解决冲突是可以接受的,但没有主动性。我仍然相信这是可能的,但我的测试表明,不仅仅是我描述的方式,那么也许你不能像你想的那样使用GIT。通常,SVN是“主要”repos,GIT用户从SVN repos和向SVN repos拉edit commit。您不能像使用另一个SVN一样使用GIT,这两种工具都存在是有原因的。当然,但我希望像平常一样使用GIT,也就是说,不必主动检查远程提交。对我来说,分布式VCS意味着我大部分时间没有连接,因此无法进行任何检查。我不确定你说的主动检查提交是什么意思。正常git中也没有远程更改的自动检查。您需要手动执行“git远程更新”或“git获取”。它应该与“git svn rebase”类似。基本上,您使用本地git repo作为svn客户端。您说所有用户都必须直接克隆git svn。。。但是,这真的有效吗?我的理解是,“git svn rebase”将在新收到的svn提交之上重新应用所有本地git提交,其效果是更改所有本地提交的修订号,这总是会破坏存储库,并阻止我执行任何进一步的提交或推送。这是正确的吗?我刚刚发现了这个问题:(感谢相关专栏!)提供的解释证实了坏消息:git svn适合一次性迁移,而不是在较长的过渡期内连续使用:(