2011-04-04 56 views
2

我在工作中有一個項目,我想通過使用Git爲我的本地源的控制,使不必要的複雜容易。我們在工作中使用TFS,但我還必須將源代碼推送到客戶端的SVN服務器以進行產品發佈。 TFS需要成爲正式的記錄來源[直到我可以做一個令人信服的案例來切換:-)],SVN只是里程碑,我很樂意讓git成爲日常的工作環境。如何在同一個源代碼樹中使用GIT-TFS和GIT-SVN?

我一直在使用git-svn第二部分,基本上只是承諾在里程碑的Git,然後推到SVN。

我想移動到使用Git代替TFS爲更積極的發展也一樣,但我不知道如何/如果我能在同一時間都映射設置。我看到的所有git-tfs和git-svn的示例都是從克隆存儲庫開始的,這需要存儲庫爲空。是否有某種我可以添加的元數據,而不是克隆來設置TFS映射?

的映射也有點怪異(這是一個CMS的網站,所以我們沒有核心文件存儲在源代碼控制,只有我們的自定義):

  • 標籤(僅使用SVN)
  • 分支(從SVN,未使用)
  • 中繼線(從SVN,符號鏈接到網站)
  • 網站
    • DesktopModules(在TFS映射)
    • 門戶(TFS中映射)
    • 提供商(TFS中映射)

威爾混帳能夠處理在根和進一步映射的TFS庫映射SVN庫?

將它的工作,以刪除TFS映射的文件夾,然後從混帳TFS克隆呢?

+0

我打算+1將git-tfs引起我的注意。這會讓我的生活變得更好:) – 2011-04-04 14:07:25

回答

1

您可以通過添加適當的節到.git/config嫁接git-svn到任何存儲庫(檢查任何工作git-svn回購,看看是什麼樣子),其次是git-svn fetch來填充它。這是不可能的,無論git-svngit-tfs將產生相同的樹相同的SHA(例如,由於像用戶名映射或日期,或類似元數據git-svn少瑣碎的事情瑣碎的事情放入提交默認消息),但合併應該是微不足道的。您可以使用svn.noMetadata禁用將SVN修訂版映射到git commit的每次提交中的額外行。唯一的缺點是,rev_map將成爲這些信息的唯一來源,如果它被刪除(或者如果你克隆你的工作副本),git-svn連接將被中斷。

+0

.git/config對於git-svn有以下部分:https://gist.github.com/904097 – bdukes 2011-04-05 17:47:07

+0

git-tfs部分看起來像這樣:https:// gist .github.com/904110 – bdukes 2011-04-05 17:50:31

0

我認爲目前你不能。當你提交給tfs時 - git-tfs有效地將你的提交改寫爲新的,並且具有相同的樹和修改後的註釋(在原始註釋結尾添加類似git-tfs-id: [http://tfs:8080/tfs]$/Project;C666的內容)。

有一些thoughts關於與git notes更換評論改變。但目前它還沒有計劃。

相關問題