2013-11-02 53 views
1

我是Mercurial用戶。我正在遷移到git,原因是我不會介入。git遠程集羣和筆記本電腦設置爲一個開發人員 - 爲什麼一個「裸」存儲庫?

我主要是一個開發團隊,雖然未來有合作者的可能性。我過去曾使用過Mercurial來跟蹤變化,並管理筆記本電腦以及大學集羣上相同代碼庫的開發。

在Mercurial中,爲了使我的筆記本電腦和集羣保持最新狀態,我會在筆記本電腦上創建一個存儲庫,將其克隆到集羣,然後從(如果我一直在使用筆記本電腦)或拉到(如果我一直在集羣上工作)我的筆記本電腦,並根據需要合併。

我已經成功將我的mercurial存儲庫遷移到git。從網絡上閱讀許多git的討論,它看起來像那麼我(意譯http://thelucid.com/2008/12/02/git-setting-up-a-remote-repository-and-doing-an-initial-push/

ssh [email protected]_cluster.edu 
mkdir my_project.git 
cd my_project.git 
git init --bare 
git update-server-info # I skipped this 
exit 

,然後在我的筆記本電腦:

cd my_project 
git remote add origin [email protected]_cluster.edu:my_project.git 
git push -u origin master 

我的問題,然後:

這似乎更比Mercurial中的複雜。這真的是「最佳實踐」方法嗎?我認爲分佈式源代碼控制(DSC)的整個想法是,存儲庫直接相互交流,並且合併很容易。爲什麼「中間人」使用git「裸」存儲庫的方法?看來這樣會導致必須在遠程計算機上維護兩個目錄(裸存儲庫和正在運行的存儲庫),並且每次需要從一個平臺切換到另一個平臺時,執行兩次「事務」。也就是說,每檯筆記本電腦集羣交換機都需要推送到遠程裸倉庫,然後從遠程裸倉庫中提取數據,在這之前我只需按下(如果在我的筆記本電腦上完成)或拉出(如果從我的筆記本電腦上啓動)。

我希望我不會邀請Mercurial/Git的火焰戰爭,我只是想用這個理解git哲學。

回答

2

當您推送更改時,Git不會更新遠程倉庫的工作副本。 (這使得很多事情變得更簡單,而遠程回購的所有者沒有在他面前改變文件。)一個非裸回購會看到它的頭部和工作副本與每次推動不同步。所以Git不會推動非裸回購,除非你強制執行。

相關問題