公司規模不大,成立之初,選擇了svn作為版本控制系統。這對於用慣了git的我來說,將就了一段時間後,極為不爽,切換到git-svn勉強能用。隨後,因為產品需要釋出不同的版本,而git-svn對遠端分支的支援又甚為不好,於是提出搭建git環境的想法。鑑於呆過的前公司,沒有一家使用svn不出事的(印象最深的是,阿里雲OS就出現了一次svn重大事故),我不是svn黑,領導欣然同意。
需求
一共php,android,ios三個小團隊,所以分別為php,android端,ios端搭建三個git倉庫。
當然三十個git倉庫都可以,和三個倉庫是一樣。
環境
這裡以ubuntu為例(工作上實際使用的是centos)
安裝軟體
sudo apt-get install git
sudo apt-get install openssh-server
ssh配置相關操作:
# 編輯ssh配置
sudo vim /etc/ssh/sshd_config
# 檢視ssh server是否啟動
# 如果只有ssh-agent那ssh-server還沒有啟動,如果看到sshd那說明ssh-server已經啟動了
ps -e | grep ssh
# 啟動ssh服務
sudo /etc/init.d/ssh start
# 重啟ssh服務
sudo /etc/init.d/ssh resart
# 停止ssh服務
sudo /etc/init.d/ssh stop
建立git使用者
專門建立git使用者,便於控制許可權和管理
# 新增git使用者
sudo adduser git
# 設定git密碼為jayfeng
sudo passwd jayfeng
初始化倉庫
以android為例子,建立一個對應的倉庫
# 以git使用者身份登陸後,切換到主目錄
cd
# 建立所有git倉庫的總目錄
mkdir git-repo
cd git-repo
# 為android建立ANDROID_CODE倉庫
git init --bare ANDROID_CODE.git
配置ssh key
如果不做這一步,後面從區域網clone程式碼的時候每次都要輸入git使用者的密碼,所以這一步的目的是通過配置ssh認證,實現免密碼同步程式碼。
下圖展示瞭如何生成ssh key的私鑰和公鑰:
私鑰id_rsa自己用,把公鑰id_rsa.pub配置到伺服器端git使用者的~/.ssh/authorized_keys(即,把id_rsa.pub的內容新增到authorized_keys新一行),同時配置許可權:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
並把生成的私鑰id_rsa共享給團隊的開發人員。
區域網訪問
如果伺服器的IP是192.168.1.18,那麼區域網的機器就可以通過下面的方式訪問了:
# 拷貝私鑰id_rsa到.ssh目錄
mv id_rsa ~/.ssh
# 如果提示許可權不對(bad permission 或者 permission too open),請按如下配置
cd ~/.ssh
chmod 700 id_rsa
# 團隊成員訪問git倉庫
git clone git@192.168.1.18:~/git-repo/ANDROID_CODE.git
小結
小團隊使用git,一方面要利用起git的強大功能,一方面要還要摒棄冗餘的配置。本次記錄了區域網內的git環境搭建。接下來的難點就是如何在公司中培訓推廣git的使用,克服初學git的陡峭曲線>(相對於svn來說)。
同步釋出:http://www.jayfeng.com/2015/07/25/記一次小團隊Git實踐(上)/