2011-07-11 24 views
4

這是一個recurring問題對我來說,但我想重申。Git工作流程,當你不能推或拉

快速解釋我的情況:我處於一種環境中,我沒有git服務器,也沒有共享分區或編碼器之間的任何共同點。沒有,不會有,不可能有。期。

我試圖想出一個工作流程解決方案,即使在我們管理的環境中,我們的代表也需要合理的同步。

我想目前該解決方案採用一個討論小組分發補丁,兩個主要分支,並用一個看似簡短的工作流程,如下:

  • 分支是marsteryours
  • master是同步分支,它可以讓你保持最新狀態並跟蹤其他的deve仍然沒有你的代碼。
  • yours將成爲您的新主人,並且您最終的代碼應該在哪裏。你不在master工作。
  • 大家發送補丁到討論列表。
  • 我正在考慮很少有兩個人會在同一個文件中工作。

有工作流中的兩個主要動作:

生成補丁:

  1. yours
  2. 生成mastergit format-patch master
  3. 轉到master
  4. 補丁
  5. 合併yoursmaster
  6. >轉到yours,繼續yours

應用補丁的工作:

  1. 轉到master分支
  2. 申請獲得補丁
  3. 轉到yours分支
  4. 合併masteryours
  5. >繼續yours

工作如果我猜中了,這應該合理地同步保持master分支與其他人。

不是說yours分支只是爲了幫助跟蹤其他人有沒有。

有我想要的數字,如果將太多的麻煩了幾個問題:應用補丁的

  • 訂單?
  • 如何避免和檢測有人錯過補丁?
  • 有人錯過補丁時可能會出現多少問題?
  • 這可以產生的其他問題我甚至沒有想過?

謝謝!

+1

我認爲設置所有團隊成員都可以訪問的git服務器會更容易。 afaik'format-patch' /'am'將爲每個存儲庫(不同的提交者)生成唯一的提交哈希。因此,即使存儲庫中的樹相同且歷史記錄基本相同,合併/比較和討論某個特定的提交也將是一個皮塔(因爲每個人都有不同的提交,而這些提交恰好對相同的補丁進行評估)。節省您的麻煩,並設置服務器或在衆多託管站點之一獲取帳戶(github,gitourious等) - 他們也提供私人存儲庫。 – knittl

+0

男人..我*知道*,這將是最好的。但現在,正如我所說的,我不能(真的不能),說實話,有點不想 - 只是爲了試圖找出一種方法的挑戰:) – filippo

+0

爲什麼你不能?如果你的項目是開源的,你甚至可以在上述網站上獲得免費賬戶(加上repo.or.cz)。對於大腦食品:你有沒有看過'git bundle'? – knittl

回答

2

而是有一個回購有兩個分支,我寧願有兩個回購:

  • 之一,在僅master分支它
  • 一個(從第一隻克隆)與masteryours

這樣我可以:

  • 合併我需要什麼FR OM yours分公司master在「yours」回購
  • 獲取從yours回購的master分支修改爲master回購的master分支
  • 建立從master回購一incremental bundle(導致在一個文件中,更容易溝通)
  • 郵件中的一個文件,用master回購

在接收端的SHA1一起,我想:

  • 拉從束引入master回購
  • 檢查其SHA1(這樣,我相信我沒有錯過任何東西)
  • 拉離master回購的master支進的master分支「你的回購
  • 合併我需要從master分支到yours分支。

有兩個單獨的回購的想法是有一個與SHA1可以在接收端進行檢查:它必須在兩個站點完全相同。

+0

所以,讓我們說3我們一起工作,我們都做了一些工作,並把我們的捆綁到maillings列表。溫我們在上午會有兩個捆綁我們每個人。所以我們都這樣做:從一個拉,從另一個拉,全部進入master0。從master0拉入masterMine。你說這一點,不管我們做了什麼樣的序列,所有masterMine(當時的三個)應該有相同的文件狀態(從而相同的SHA1)? (ofc我們不知道最後的SHA1,直到我們完成,但你明白了......) – filippo

+0

@filipo:關於SHA1,我在談論'master0',而不是'masterMine'(其中包括'yours''分支的內容可能差異很大)。但即使對於'master0'回購,...根據這個答案,沒有。 http://stackoverflow.com/questions/5632520/apparently-same-commits-give-different-sha1-why/5632680#5632680:提交的父母不同於'master0'回購到另一個'master0'回購。 – VonC

+0

@filipo:「相同的SHA1」方案可能與同樣的順序*(這可以通過「rebase --interactive」)完成,並且在所述提交的註釋中有一個良好的命名約定,以重新排序你只是拉)。但這不是一個簡單的解決方案。 – VonC