2010-07-02 55 views
11

這可能是不尋常的,所以讓我設置場景:同時在git和svn下管理源代碼 - 它有意義嗎?

我們有一個包含我們項目歷史的SVN回購 - 基於Linux的嵌入式系統。 SVN回購包含Linux內核,U-Boot,busybox等來源以及我們所有的內部應用程序,文件系統等。

Linux內核我們是老易怒的,我的工作移植到主線,這下我們的平臺(S)積極發展。我正在做git下的內核工作,並用「The Community」交易補丁。

我能得到的東西的工作和採取的內核源代碼的快照,並傾倒入SVN,但我想繼續獲得更新的能力,有當地的分支機構和管理補丁與飯桶。我可以保留兩個內核拷貝,一個由每個SCM管理,但這會有點混亂。使用git管理的內核源代碼也有開發和測試的風險,並且忘記將這些更改放入SVN中導致SVN版本損壞,其中非內核源不同步。

將整個項目遷移到git不是一個選項。使用git來管理內核源代碼,並在SVN中加入一堆粘合腳本和存儲的散列值是可能的,但是對於整個項目來說,從SVN獲得統一的歷史記錄/差異功能會更好。

我正在考慮試圖同時管理SVN下的內核源代碼,同時Git裏,在同一個目錄。

作爲一個內核開發我大多使用git,做一個SVN提交供內部使用,當事情看起來不錯。對於其他內部用戶,他們可以通過一個SVN簽出獲得完整的一致性資源,查看統一的歷史記錄,並且可以在SVN下對內核資源進行更改。後來我或另一個使用git的人可以SVN更新這些更改並將它們提交到適當的git。

一些讓git忽略.svn文件,反之亦然的努力將不得不完成。另外,我不太清楚如何使用普通的SVN簽出並告訴git開始管理內核子樹,但我確定git有一些不太實用的瑞士軍刀選項。

所以這是我的想法。這意味着大多數同事不必擔心git,我們可以在需要時悄悄忽略git和fork。

這裏的問題還真是,有沒有人做過這樣的事情,它是怎麼工作了,還是你想出什麼替代解決方案了?

+1

接下來,我已經做了一段時間,它運作良好。 – blueshift 2011-01-10 09:43:44

+0

如果您需要將此設置克隆到另一臺機器,那麼該怎麼辦?例如,如果我有一個在git控制下的目錄,然後用適當的忽略將它添加到svn,但是然後想在另一臺機器上進行相同的設置。我需要克隆git repo,然後嘗試將svn repo簽出到該目錄中嗎?另一種方式? – 2012-08-02 19:54:50

+1

想通了,你可以做我通過做git克隆然後'svn結帳 - 力'要求結合兩個回購。 – 2012-08-08 20:15:02

回答

6

我已經定期完成這項工作,而且效果很好。

,我需要做的唯一重大的事情是git的文件夾添加到顛覆忽略列表,以及.svn文件/文件夾到的.gitignore文件。

+0

有希望!感謝您的迴應。 – blueshift 2010-07-02 02:42:41