前言
一開始,打算在Windows上安裝git服務,折騰了一天,在Copssh(win2008、win7、win2003)上總是配置不成功,最終無功而返,最后只好先放棄Windows了,以后有時間再研究研究。
當然Windows版的還有其它軟件可用,比如Gitstack、Gitblit等,不想搞Windows版的了,不是這個限制就是那個問題,麻煩多,所以直接上Linux版的。
下面一段是Linux工具,引用自http://blog.chinaunix.net/uid-15174104-id-3843570.html
在Git服務管理工具這個領域,主要有三種流行的方案,它們分別是:
Gitosis - 輕量級,開源項目,使用SSH公鑰認證,只能做到庫級的權限控制。目前項目已經停止開發,不再維護。
Gitolite - 輕量級,開源項目,使用SSH公鑰認證,能做到分支級的權限控制。
Git + Repo + Gerrit - 超級重量級,集版本控制,庫管理和代碼審核為一身。可管理大型及超大型項目。
注:其實還有很多,如:gitlab、gitblit、gitbucket、gogs,請參考“幾個Git倉庫開源軟件的比較” http://dz.sdut.edu.cn/blog/subaochen/2016/01/github_like_softwares/
安裝
Step 1 安裝git
yum install perl openssh git
Step 2建立一個git用戶,並做初步配置
adduser --system --shell /bin/sh --create-home --home-dir /home/git git # 進入git用戶的home目錄 cd /home/git # 新建一個目錄,用於存放git的全部倉庫 mkdir repositories # 設置該目錄的所有權 chown git:git -R ./repositories # 修改該目錄的操作權限 chmod 700 ./repositories
Step 3生成一對公鑰證書(空密碼則直接回車)
# 可直接在服務器上生成,也可以在本地生成,在這里我直接在服務器上生成了。 ssh-keygen -t rsa # 最后生成兩個文件,分別為id_ras.pub(公鑰) 和id_rsa(私鑰) # 將公鑰移到/home/git/.ssh/目錄下,注意,公鑰文件名改了,公鑰名對應gitolite里配置的用戶名,admin我用於做系統管理員的賬號名。 mv id_rsa.pub /home/git/.ssh/admin.pub # 將私鑰id_rsa用SFTP下載回到本地Windows的C:\Users\Administrator\.ssh\目錄下,Administrator是我登錄Windows的賬號,你要改成自己電腦對應的目錄下,用於本地git登錄遠程服務器。
Step 4切換至剛建的git用戶,安裝gitolite
su git git clone git://github.com/sitaramc/gitolite mkdir -p $HOME/bin # 安裝gitolite gitolite/install -to $HOME/bin # 安裝時報錯,根據錯誤提示,百度了幾下,安裝相關的依賴 yum install wget perl-ExtUtils-MakeMaker gcc wget http://www.cpan.org/modules/by-module/Data/Data-Dumper-2.154.tar.gz tar xvzf Data-Dumper-2.154.tar.gz cd Data-Dumper-2.154 perl Makefile.PL make make install
Step 5配置gitolite
$HOME/bin/gitolite setup -pk admin.pub
# 完成后,在/home/git/repositories里面,生成兩個倉庫gitolite-admin.git和test.git,一個是管理倉庫用的,另一個是測試用的;下面我們主要對gitolite-admin.git倉庫進行操作,就可以管理服務器上的全部倉庫了。
Step 6管理gitolite
git clone git@172.16.13.229:gitolite-admin #完成后有兩個目錄,分別是conf和keydir,conf/gitolite.conf是用戶、倉庫的權限配置,keydir是放對應用戶的公鑰,修改好后push回服務器,就完成了管理操作。
下面,我們用個例子說明如何管理git倉庫。
1、 最初的conf/gitolite.conf內容如下:
repo gitolite-admin RW+ = admin repo testing RW+ = @all
2、 然后我們在gitolite.conf內容下面添加如下內容
@ android_group = zhangsan lisi
repo androidapp
RW+ = @android_group
3、 @ android_group = zhangsan lisi,定義了@android_group組,組員是zhangsan和lisi兩個人,當然,組里也可以包含另一組,人員或組之間用空格分開,我們修改后如下:
@ android_group = zhangsan lisi @ ios_group = zhangsan wanwu @ app_group = @android_group @ios_group repo androidapp RW+ = @android_group repo appdoc RW+ = @ app_group
4、 repo androidapp,定義了一個androidapp倉庫,該倉庫讀寫權限為@android_group,最后push回服務器后,我們就可以在本地執行
git remote add origin git@172.16.13.229: androidapp.git git push origin master
兩次命令來首次推送本地倉庫到遠程服務器倉庫,下次有修改再推送時直接git push即可。
Step 7給公司里每位童鞋分配私鑰證書
1、 生成證書
ssh-keygen -t rsa –C “zhangsan@example.com”
2、 將公鑰id_ras.pub改名為童鞋名字全拼,比如zhangsan.pub,並拷到gitolite-admin倉庫的keydir目錄下;
3、 將私鑰id_rsa飛Q發給相應的童鞋;
4、 重復1到3,直到全部發給每位童鞋;
5、 修改gitolite.conf,配置各個項目的訪問權限;
6、 推送gitolite-admin修改后的內容到服務器;
7、 完成分配工作。
注:人員名字全拼為公鑰文件名,同時也是gitolite.conf里的用戶名;私鑰id_rsa讓童鞋們放在C:\Users\Administrator\.ssh\目錄下。
Administrator是系統登錄名,如果你的不是這個名,那就改改。
當然了,也可以讓童鞋們自己生成公鑰對,然后把公鑰統一發給我。
在Windows下使用git圖形客戶端
1、 安裝Windows git,下載地址https://git-for-windows.github.io/,下載后一路next安裝即可。
2、 安裝TortoiseGit,TortoiseSVN的兄弟,下載地址https://tortoisegit.org/download/,也是一路next安裝。
3、 配置TortoiseGit,參考其他文章即可,網上文章還是比較多的,比如下面這篇寫得就很好http://blog.csdn.net/renfufei/article/details/41647937。