2012-12-04 204 views
1

我正在使用一个项目,该项目使用SVN作为与Netbeans SVN插件结合使用的存储库。我发现Netbeans SVN diff缺少显示几个差异的对方,因此想用git-svn来使用git gui如何保持本地svn-git仓库与.svn同步?

现在的问题是保持两个存储库同步。我现在的工作流程是:

  • 更新(没有本地更改):

    svn up 
    git stash -u # include new files too 
    git svn rebase 
    git stash drop 
    
  • Comitting:

    git commit 
    git commit ... 
    git svn dcommit 
    

这些基础的情况下做的工作,但事实并非如此如果我有本地未分配/未配置的更改,则可以很好地工作。

什么是更好的方式来保持本地git-svn和.svn同步?

+0

此[GIT中和Subversion章](http://git-scm.com/book/en/Git-and-Other-Systems-Git - 和 - Subversion)Pro Git书可能会有所帮助。 – Mightymuke

+0

@Mightymuke不,它不给我新的见解或解决问题。 – Lekensteyn

回答

0

我发现了一个很好的解决方法。这个想法是使用subversion保持文件更新,并让git只更新其历史记录,而不触及工作树中的任何文件。 git svn创建了一个特殊的git-svn分支,其中包含一次获取的最新Subversion代码。

的命令来更新你的文件,随后的git回购历史更新:

svn up 
git svn fetch 
git reset --mixed git-svn 

最后git reset --mixed命令是必要的,以确保git的知道你的文件是从最后的SVN版本。请注意,该命令将重置您使用git commit进行的任何提交(删除提交消息,而不是更改)。作为解决方案,通过svn commit提交并获取您的历史记录,如上所示。

git reset --mixed git-svn莫名其妙地无法承诺使用dcommit。运行git reset --mixed git-svn后,按照下列顺序用git提交:

git stash 
git svn rebase 
git stash pop 
git commit ... 
git svn dcommit 
相关问题