2014-11-03 73 views
26

我們遇到了從hg切換到git(業務需求)時的一些工作流問題。在hg中,我們通過創建具有特定權限設置的subrepos來限制外包工作室訪問專有代碼。然後,我們的主要hg回購將有分支指向適當的Source或DLL subrepos,以便它們可以輕鬆地在兩者之間切換。從Hg切換到Git的Subrepo工作流問題

我們遇到的問題是,在git中模擬這種設置似乎是不可能的。將分支轉換爲不包含特定子模塊的分支不會在本地刪除該子模塊的文件(預期的git行爲)。這造成了一個單調乏味的手動刪除步驟,如果我們將其推廣到辦公室技術較差的人員,可能會導致問題。我們需要一個系統,人們可以從歷史記錄中的任何其他提交中檢出提示,並保證有一個工作項目,如果在當前系統中未刪除子模塊內容,則該項目不會發生。

git中有沒有其他的選擇,我們正在嘗試做什麼?

+0

我們正在考慮在SourceTree中添加一個自定義動作,它調用git clean -ffd,它允許我們使用舊的工作流,但是在我們團隊的進程中增加了一個額外的步驟 – Konstantin 2014-11-03 16:23:38

+0

[push a git repo到一個新的遠程(github),隱藏其歷史](http://stackoverflow.com/questions/4020553/push-a-branch-of-a-git-repo-to-a-new-remote-github-hiding -its-history) – 2014-11-11 23:10:47

+0

這篇文章有點相關。我們都有着相同的目標,但從完全不同的角度來看待它。可能有一個解決方案可以爲我們兩個人工作,但我不確定。 – Konstantin 2014-11-13 15:47:22

回答

1

您可以使用post-checkout客戶端掛鉤。基本上,當您將分支切換到使用其他子模塊的分支時,將運行post-checkout掛鉤。在該鉤子中,您可以簡單地添加代碼以刪除當前分支未使用的所有子模塊。

由於掛鉤在遠程和本地回購之間未同步,因此您可以按照this的建議獲取將克隆存儲庫的人員的掛鉤。