2011-08-03 106 views
2

我們正在將我們的源代碼控制從VSS移到Git(並非常高興)。我試圖確定Git中的最佳策略,以跟蹤我們的代碼的哪些版本部署在我們環境中的哪些框上。到目前爲止,我們只專注於我們的GitHub主分支,專門代表僅在生產中使用的產品。除非配置管理團隊記錄已成功應用於生產的內容,否則不會在此分支上發生任何提交。Git分支和環境部署跟蹤

人們是否也爲其所有環境創建獨立的分支或使用標籤?我已經看到了分支模型的提出,但似乎需要大量不必要的,潛在的痛苦,合併。

我認爲標籤將是一個很好的解決方案,但人們如何實現這一點?假設我有三個名爲QA1,QA2,QA3的QA環境。如果我剛剛從分支原產地/ hotfix42部署代碼到框QA2,我是否可以使用標籤命名法,如「QA2-060911_511pm」,告訴我哪個版本的代碼在什麼時間部署到哪個框?但如果我這樣做了,我的標籤數據庫隨着時間的推移將會增長到數百甚至數千。因此,如果我想查找部署到QA2的當前版本,將如何查詢所有標籤以查找最新版本?或....我是否總是添加一個名爲QA2_Current的額外標籤?但隨着部署的發生,持續不斷地移除該標籤並添加到其他版本中?

是否有任何其他機制添加元數據提交?例如,我可以添加一個env變量到我的提交,然後搜索env = QA2的提交嗎?

感謝

+1

至於在提交你可以使用元數據你的問題「混帳筆記」註釋提交,而無需修改提交自己和git日誌將默認顯示它。 – holygeek

回答

1

經驗是您使用的東西,永遠不會改變標籤(如1.0.0版本永遠指向同一個commit)的事情上做變化(如「最新的規則,並使用分支「版本)。

因此,我建議將部署到QA2的當前版本指定爲git branch QA2,並根據需要在該命令中添加-f。如果您只是將其用作「可移動標籤」,則無需進行復雜的合併。

如果您需要保留過去部署的歷史序列,您可能想要進行合併而不是僅移動分支的時間。在短時間內,您可以使用[email protected]{1}[email protected]{2}等,但最終會被git gc擦除。

另外,請記住,在git中合併比您可能習慣的痛苦小几個數量級。您可能想先試用這些模型,然後再解僱他們太難。

0

要回答你關於尋找最新的標籤問題,如果你是在Unix上你可以運行此列出的提交日期排序的標籤:

git tag | xargs [email protected] git log --format=format:"%ci %h @%n" -1 @ | sort 

請注意,您還可以啓動與管道任何其他的refs/sha哈希列表。 但是,如果你想列出地方分支機構,由於先導星,你必須做一些事情,如:

git branch | sed 's/^\*//' | xargs [email protected] git log --format=format:"%ci %h @%n" -1 @ | sort