简单的;从SVN获取所有新提交,并将它们放入一个真正的GIT中,即';svn';“分行”;设置?

简单的;从SVN获取所有新提交,并将它们放入一个真正的GIT中,即';svn';“分行”;设置?,git,svn,github,git-svn,Git,Svn,Github,Git Svn,这是我第一次尝试制作git svn项目。我有直接访问的Debian服务器 信息: -本地SVN是一个分支,我不会进行任何本地或远程提交 我要归档的内容: 创建真正的GIT本地存储库。这很简单:-] 创建(一个分支)的SVN本地副本(或git SVN repo?我不知道witch在这种情况下会更好),然后通过一些检测远程更改的脚本自动获取所有更改,然后运行“SVN更新” 以某种方式从本地SVN repo到本地GIT repo和一个名为“Miranda SVN”的分支逐个获取所有“更改”(文件和提交

这是我第一次尝试制作git svn项目。我有直接访问的Debian服务器

信息: -本地SVN是一个分支,我不会进行任何本地或远程提交

我要归档的内容:

  • 创建真正的GIT本地存储库。这很简单:-]

  • 创建(一个分支)的SVN本地副本(或git SVN repo?我不知道witch在这种情况下会更好),然后通过一些检测远程更改的脚本自动获取所有更改,然后运行“SVN更新”

  • 以某种方式从本地SVN repo到本地GIT repo和一个名为“Miranda SVN”的分支逐个获取所有“更改”(文件和提交消息)。因此,当您查看此特定分支的提交/日志时,您将看到与以前相同的消息

  • 将“Miranda svn”分支推送到远程github.com帐户,项目名称为“Test”,分支名称为“Miranda svn”

  • 将分支“Miranda svn”与“master”合并


  • 有人能帮我吗?有这样的设置示例吗?

    这对于Git来说非常简单

    首先使用git svn“克隆”远程存储库

    git svn init --trunk=trunk http://miranda.googlecode.com/svn miranda
    cd miranda
    git svn fetch
    git checkout -b Miranda-svn remotes/trunk 
    
    注意:您可能希望限制使用
    -r start:end
    开关获取的修订数

    然后为github添加一个新的远程服务器

    git remote add origin git@github.com:myuser/test.git
    
    最后,将更改推送到github远程服务器

    git push origin Miranda-svn
    
    要使用SVN中的内容更新Git分支,请执行以下操作:

    git checkout Miranda-svn # Just to be sure that we are on the correct branch
    git svn rebase
    git push origin Miranda-svn
    
    将SVN更改合并到另一个Git分支:

    git checkout master # Or whatever branch you want
    git merge --no-ff Miranda-svn
    

    注意!由于SVN具有线性历史记录,“SVN”分支将在每次“拉动”时重新设置基础,因此您不希望通过此设置将任何内容提交到Miranda SVN分支。

    但是如何在“git SVN clone Miranda”之后获得进一步的更新/提交?在我看来,它是一次性操作,我需要从svn repo到git/Test/Miranda svn branch.git svn dcommit的不断更新,git svn重新更新了答案,根据请求将“master”分支重命名为Miranda svn svn。我不想对本地/远程svn repo做任何提交。git svn rebase-它是否会包含所有提交消息?或者,当远程SVN repo将获得新的提交时,有必要在每个tme运行此命令?是的,您需要在每次希望从SVN repo获得更改时运行此命令。新修订的数量无关紧要,git svn将获取它将找到的所有新修订。就像使用svn时进行svn更新一样。您还必须记住,SVN具有线性历史,因此对SVN分支重定基址是维护它的唯一选项。只要您不想提交从Git到SVN的任何内容,就应该可以了。