2011-03-09 23 views
6

我已经习惯了git,我非常喜欢它,但我的客户之一是(仍然?)使用颠覆,我现在不是真的关于svn,但我知道有一个git-svn包。我可以使用git-svn,看起来像我使用SVN,如果是的话,怎么样?

我知道它有可能从svn获取一个回购协议,但我可以使用git而不是svn并仍然提交,并“推”到中央svn服务器?

我想使用git而不是svn,如果我可以你可以指点我任何教程来做到这一点?

谢谢

编辑:

我其实不在乎获取所有提交,只有10/20前一个就足以作为应用程序处于工作状态,这就是只是做了改进,所以如果实际需要的话,我只会提取所有的提交历史记录。

+2

“看起来像我正在使用SVN” - 如果其他svn用户都知道你一直在使用git真的很重要,那么请小心不要提交你的'。gitignore'文件或类似的东西,而且从来没有'git svn dcommit'多次提交,因为它们在svn日志中相隔几秒钟。但除此之外,你可以将git看作是一个非常花哨的svn客户端,没有人会知道其中的差异。 – MatrixFrog 2011-03-10 03:22:38

回答

5

git-svn提供了Git和SVN的桥梁。它将在本地表现得像香草Git,但只要您尝试向主控制器发送或从主控制器发出更改,它就会完全不同。

而不是推送,你将使用git commit本地提交,并且git svn dcommit推送您的本地提交到SVN。

git-svn documentation解释了如何从SVN存储库中提取。请注意,它是极端慢(与正常的git相比),因为它从SVN获取每个修订。请参阅文档底部的示例。

这我已经使用了一个典型的方式:

  1. git svn clone http://svn.example.com/project -T trunk -b branches -t tags - 该网址是您SVN回购,并指定了-T,-b和-t切换到指定的子路径的SVN目录。然后,Git将使用这些SVN目录查找分支和标签,并将主干作为主干。
  2. 代码做一些更改
  3. git add...上演更改
  4. git commit...本地提交更改。
  5. git svn dcommit将本地提交推送到SVN。对于每个本地提交,Git都会在SVN服务器上进行这些单独的提交。
+0

我试过了你的git svn clone命令,但是什么也没做,我以前检查过svn repo(用svn)它好像没有任何trunk,tags或branches文件夹,所有的代码都在根目录下想法? – 2011-03-09 16:06:56

+0

没关系,我没有指定任何参数来实现克隆 – 2011-03-09 16:16:13

+0

@EricP:这是处理它的方式,是的。 – vcsjones 2011-03-09 17:13:13

0

这是可能的,但我认为最好的是一个变化的版本控制应用程序:)

得到SVN承诺的git(你有后已经混帐svn的初始化它当然)

git svn fetch

要取得git进入SVN信息

git commit git svn dcommit

+0

我不认为我的客户会接受从svn迁移到git :)但是我希望:D – 2011-03-09 16:01:57

相关问题