Pro Git 4.10 Git 託管服務

出自DILA Wiki

如果不想經歷自己架設 Git 伺服器的麻煩,網路上有幾個專業的倉庫託管服務可供選擇。這樣做有幾大優點:託管帳戶的建立通常比較省時,方便專案的啟動,而且不涉及主機維護和監控。即使在內部建置了自己的伺服器,為開源的代碼專案使用一個公共託管網站還是有好處——讓開源社區更方便的找到該專案並給予幫助。

目前,可供選擇的託管服務數量繁多,各有利弊。在 Git 官方 wiki 上的 Githosting 頁面有一個持續更新的託管服務清單:

http://git.or.cz/gitwiki/GitHosting

由於本書無法全部一一介紹它們,而本人(譯注:指本書作者 Scott Chacon )剛好在其中之一工作,我們將在這一節介紹一下在 GitHub 建立帳戶和開啟新專案的過程。為你提供一個使用託管服務的大致印象。

GitHub 是到目前為止最大的開源 Git 託管服務,並且是少數同時提供公共託管和私人託管服務的網站之一,所以你可以在一個網站同時保存開源和商業代碼。事實上,本書正是私下使用 GitHub 合寫的。(譯注:而本書的翻譯也是在 GitHub 上進行公共合作的)。

GitHub

GitHub 和大多數的代碼託管網站在處理專案命名空間的方式上略有不同。GitHub 的設計更側重於用戶,而不是全部基於專案。意謂本人在 GitHub 上託管一個 grit 項目的話,它將不會出現在 github.com/grit,而是在 github.com/shacon/grit (譯注:作者在 GitHub 上的用戶名是 shacon)。不存在所謂某個專案的官方版本,所以假如第一作者放棄了某個項目,它可以無縫轉移到其它用戶的旗下。

GitHub 同時也是一個向使用私有倉庫的用戶收取費用的商業公司,不過所有人都可以快速的得到一個免費帳戶並且在上面託管任意多的開源專案。我們將快速介紹一下該過程。

建立帳戶

第一個必要步驟是註冊一個免費的帳戶。訪問 Pricing and Signup (價格與註冊)頁面 http://github.com/plans 並點擊 Free acount (免費帳戶)的「Sign Up(註冊)」按鈕(見圖 4-2),進入註冊頁面。

Pro-git-4-2.png Figure 4-2. GitHub 服務簡介頁面

這裡要求選擇一個系統中尚未存在的用戶名,提供一個與之相連的電子郵件位址,以及一個密碼(見圖 4-3)。

Pro-git-4-3.png Figure 4-3. The GitHub user signup form

如果事先有準備,可以順便提供 SSH 公開金鑰。我們在前文中的「小型安裝」一節介紹過產生新公開金鑰的方法。把產生的一對鑰匙之中的公開金鑰粘貼到 SSH Public Key (SSH 公開金鑰)文字方塊中。點擊「explain ssh keys」連結可以獲取在所有主流作業系統上完成該步驟的介紹。 點擊「I agree,sign me up(同意條款,讓我註冊)」按鈕就能進入新使用者的控制台(見圖 4-4)。

Pro-git-4-4.png Figure 4-4. GitHub 用戶面板

然後就可以建立新倉庫了。

建立新倉庫

點擊用戶面板上倉庫旁邊的「create a new one(新建)」連結。進入 Create a New Repository (新建倉庫)表格(見圖 4-5)。

Pro-git-4-5.png Figure 4-5. 在 GitHub 建立新倉庫

唯一必填的只是提供一個專案名稱,當然也可以添加一點描述。搞定這些以後,點「Create Repository(建立倉庫)」按鈕。新倉庫就建立起來了(見圖4-6)。

Pro-git-4-6.png Figure 4-6. GitHub 專案頭資訊

由於還沒有提交代碼,GitHub 會展示如何創建一個新專案,如何推送一個現存專案,以及如何從一個公共的 Subversion 倉庫導入專案(譯注:這簡直是公開挖 google code 和 sourceforge 的牆角)(見圖 4-7)。

Pro-git-4-7.png Figure 4-7. 新倉庫指南

該指南和本書前文中的介紹類似。要把一個非 Git 項目變成 Git 項目,執行

$ git init
$ git add .
$ git commit -m 'initial commit'

一旦擁有一個本地 Git 倉庫,把 GitHub 添加為遠端倉庫並推送 master 分支:

$ git remote add origin git@github.com:testinguser/iphone_project.git
$ git push origin master

這時該專案就託管在 GitHub 上了。你可以把它的 URL 發給每個希望分享該工程的人。本例的 URL 是 http://github.com/testinguser/iphone_project。你將在專案頁面的頭部發現有兩個 Git URL(見圖 4-8)。

Pro-git-4-8.png Figure 4-8. 專案開頭的公共 URL 和私有 URL 。

Public Clone URL(公共克隆 URL)是一個公開的,唯讀的 Git URL,任何人都可以通過它克隆該專案。可以隨意的散播這個 URL,發步到個人網站之類的地方。

Your Clone URL(私用克隆 URL)是一個給予 SSH 的讀寫 URL,只有使用與上傳的 SSH 公開金鑰對應的金鑰來連接時,才能通過它進行讀寫操作。其他使用者訪問專案頁面的時候看不到該URL——只有公共的那個。

從 Subversion 中匯入專案

如果想把某個公共 Subversion 專案匯入 Git,GitHub 可以幫忙。在指南的最後有一個指到「匯入 Subversion」頁面的連結。點擊它,可以得到一個表格,它包含著有關匯入流程的資訊以及一個用來粘貼公共 Subversion 專案 URL 的文字方塊(見圖 4-9)。

Pro-git-4-9.png Figure 4-9. Subversion 匯入介面

如果專案很大,採用非標準結構,或者是私有的,那麼該流程將不適用。在第七章,你將瞭解到手動匯入複雜工程的方法。

開始合作

現在把團隊裡其他的人也加進來。如果 John,Josie 和 Jessica 都在 GitHub 註冊了帳戶,要給他們向倉庫推送的訪問權,可以把它們加為專案合作者。這樣他們的公開金鑰就能用來向倉庫推送了。

點擊專案頁面上方的「edit(編輯)」按鈕或者頂部的 Admin (管理)標籤進入專案管理頁面(見圖 4-10)。

Pro-git-4-10.png Figure 4-10. GitHub 管理頁面

為了授予專案的寫入許可權給另一個用戶,點擊「Add another collaborator(添加另一個合作者)」連結。一個新文字方塊會出現,用來輸入用戶名。在輸入用戶名的同時將會跳出一個説明提示,顯示出可能匹配的用戶名。找到正確的用戶名以後,點 Add (添加)按鈕,把它變成該專案的合作者(見圖 4-11)。

Pro-git-4-11.png Figure 4-11. 為專案添加合作者

添加完合作者以後,就可以在 Repository Collaborators (倉庫合作者)區域看到他們的清單(見圖 4-12)。

Pro-git-4-12.png Figure 4-12. 專案合作者列表

如果需要取消某人的訪問權,點擊「revoke(撤銷)」,他的推送許可權就被刪除了。在未來的專案中,可以通過複製現存專案的許可權設定來得到相同的合作者群組。

專案頁面

在推送或從 Subversion 匯入專案之後,你會得到一個類似圖 4-13 的專案主頁。

Pro-git-4-13.png Figure 4-13. GitHub 專案主頁

其他人訪問你的專案時,他們會看到該頁面。它包含了該專案不同方面的標籤。Commits 標籤將按時間展示逆序的 commit 列表,與 git log 命令的輸出類似。Network 標籤展示所有 fork 了該專案並做出貢獻的用戶的關係圖。Downloads 標籤允許你上傳專案的二進位檔案,並提供了指向該專案所有標記過的位置的 tar/zip 打包下載連接。Wiki 標籤提供了一個用來撰寫文檔或其他專案相關資訊的 wiki。Graphs 標籤包含了一些視覺化的專案資訊與資料。剛開始進入的 Source 標籤頁面列出了專案的主目錄;並且在下方自動展示 README 檔的內容(如果該檔存在的話)。該標籤還包含了最近一次提交的相關資訊。

派生(forking)專案

如果想向一個自己沒有推送許可權的項目貢獻代碼,GitHub 提倡使用派生(forking)。在你發現一個感興趣的項目,打算在上面 Hack 一把的時候,可以點擊頁面上方的「fork(派生)」按鈕,GitHub 會為你的用戶複製一份該專案,這樣你就可以向它推送內容了。

使用這個辦法,專案維護者不用操心為了推送許可權把其他人加為合作者的麻煩。大家可以派生一個專案副本並進行推送,而後專案的主要維護者可以把這些副本添加為遠端倉庫,從中拉取更新的內容進行合併。

要派生一個專案,到該專案的頁面(本例中是 mojombo/chronic)點擊上面的「fork」按鈕(見圖 4-14)。

Pro-git-4-14.png Figure 4-14. 點擊「fork」按鈕來獲得任意專案的可寫副本

幾秒鐘以後,你將進入新建的專案頁面,顯示出該專案是派生自另一個專案的副本(見圖 4-15)。

Pro-git-4-15.png Figure 4-15. 你派生的項目副本

GitHub 小結

GitHub 就介紹這麼多,不過意識到做到這些是多麼快捷十分重要。不過幾分鐘的時間,你就能創建一個帳戶,添加一個新的專案並開始推送。如果你的專案是開源的,它還同時獲得了對龐大的開發者社區的可視性,社區成員可能會派生它並做出貢獻。退一萬步講,這至少是個快速開始嘗試 Git 的好辦法。