2014-06-18 81 views
1

我正在考虑将我的服务器上的svn存储库转换为git,但我不确定对我有什么好处,因为我已经使用了SmartGit/hg,它创建了一个本地git仓库,并已提交所有本地git提交到svn。从git-over-svn迁移到GIT的好处

据我所知,在这里我没有真正需要迁移到git。

那么对我和我的同事来说,只有SmartGit/hg会有什么好处?

回答

1

我对SmartGit并不熟悉,但我知道使用git作为SVN客户端时的常见缺点,所以我会谈论这一点。

切换到远程git存储库将允许您有效地使用重工作流程branchmerge

这是什么意思?

在SVN中,你通常有一个单独的分支,所有的工作都被提交;另一方面,git可以更轻松地进行分支和合并,从而可以有效地使用具有多个分支的工作流程。

例如,您可以使用master分支和development分支。只有稳定版本才合并到master,而开发过程发生在development分支上。此外,您可以创建feature分支,这些分支绑定到特定主题,并且所有提交均在此feature分支上完成,直到主题完成;那么您可以将由该功能引入的更改合并到development分支中,并稍后作为master分支的发布。

为什么不可以使用SVN信息库?

Git处理合并与SVN不同;在Git中,merge是一个提交,它有多个父提交。这在SVN中是不可能的,在SVN中,每个提交都有一个父代,从来没有更多。

所以,如果你将合并提交推送到SVN仓库,合并历史将会丢失。虽然您将保留合并历史记录,但您的同事只会看到一个重大提交,它引入了您的合并分支提交的所有更改。你失去了信息。
这就是为什么当与SVN存储库交互时,建议只使用rebase而不是merge的原因。


这是使用git与远程git存储库而不是SVN之一的一个优点。你可以找到更多,如果你搜索。

+0

我不能使用SVN这个开发分支吗?如果我保留分支,我会保留关于单个提交和父母的信息,对吗? – rubo77

+0

@Zeeker“在SVN中,合并一个分支然后继续进行分支并不容易” - WTF?! RTFM! '--reintegrate'并不禁止在1.7版本中使用分支(与1.6相反),1.8+甚至更简化了同步合并 –

+0

@LazyBadger我承认我对SVN和Git并不熟悉,我的最后关于这个话题的信息是它不容易完成,但它完全有可能已经改变并且不再是真实的。尽管如此,git提供了一种比SVN更容易合并和分支的方法。 –

1

纯Git的解决方案,您会得到以下好处

  • 部分链接(1比3更好)是系统的共同
  • 更高的可靠性避免国外系统的使用率就是没有翻译的数据,在系统之间传输(较少失真的机会)