2014-06-18 83 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更好)是系統的共同
  • 更高的可靠性避免國外系統的使用率就是沒有翻譯的數據,在系統之間傳輸(較少失真的機會)