用GitBlit 和 VS GitSourceControlProvider 搭建基於 Http(s) 的 Git 工作平台
說明:
該方案可用於搭建基於Http(s)的git服務器,且客戶端與visual studio集成,是一套很實用的企業內部git部署架構。
試過好幾套window平台下的git方案,這套方案是最簡單的,安全權限上也很容易控制。希望對大家有用~
架構:
服務器端:msysgit+gitblit
客戶端:msysgit+tortoiseGit+ visual studio git source control provider
特點:
服務器端和客戶端用https進行通訊(不用SSH,簡單)
服務器端有網站支持,可進行用戶權限控制,跟蹤、統計,很直觀
服務器端可派發證書給用戶,用戶安裝證書后才可以訪問服務器端GIT資源,安全
服務器端
1.安裝msysgit
Msysgit是windows版本的git環境
下載地址:http://code.google.com/p/msysgit/
安裝:
(1)為了避免路徑問題,安裝目錄最好沒有空格和中文(如c:\git\)。
(2)其它的一路默認下去即可
最好設置下系統路徑:
path C:\ Git\bin;C:\Git\libexec\git-core;%PATH%
2.安裝GitBlit
2.1簡介
Gitblit是用java寫的git服務端網站(類似github),以http/https方式提供git服務,可進行用戶權限控制,跟蹤、統計,直觀、簡單、強大、易用。
官方網站:http://gitblit.com/
下載完畢后解壓到一個目錄(如d:\gitblit\ )
2.2提供http服務
(1)先確保安裝了java sdk
(2)運行gitblit.cmd即可,即可創建git網站.
(3)如果端口沖突跑不起來,打開data\gitblit.properties文件修改下端口參數,如:
server.httpPort = 8080 # http服務端口
server.httpBindInterface = localhost # http 綁定的地址(域名或ip)
(4)可打開瀏覽器查看:http://localhost:8080
首次登錄,管理員賬戶密碼均為admin,請改掉!
進入后可設置代碼庫(respository),用戶(user),團隊(team)
默認的git倉庫都建在data/git/ 文件夾內
更詳細的操作可查看docs/文件夾內的文檔
(5)可用git 命令進行操作,如:
Git clone http://admin@localhost:8080/git/test.git
2.3提供https服務
Gitblit可提供https服務,可在公網上提供安全訪問渠道,可有效的鑒權、防竊聽和防篡改。詳細步驟可參照http://gitblit.com/setup.html。以下為簡要說明:
(1)修改/data/gitblit.properties文件,如
Server.httpPort = 0 # 設置為0的話會關閉http服務
Server.httpsPort = 8443 # 設置https服務端口
Server.httpsBindInterface = xxx.com # https 服務綁定的主機地址(域名或IP)
Server.certificateAlias = xxx.com # https ca證書綁定的主機地址(域名或IP)
Server.requireClientCertificates = true # 客戶端要訪問必須強制使用https協議
(2)創建https ssl證書
運行authority.cmd,進入Gitblit certificates authority 授權設置窗口:
錄入CA證書基本信息
點擊按鈕,彈出CA證書基本信息的錄入窗口(該窗口在首次運行的時候也會彈出,填寫一次就可以了)
Site name里面寫該主機的ip地址或域名
創建主機CA證書(用於聲明該主機的身份)
點擊按鈕,彈出創建主機CA證書的窗口,錄入保存。
創建用戶個人證書(用於聲明該用戶的身份)
選中某個用戶,點擊右側的new certificate按鈕
查看證書
這兩步操作完成后,可在/data/ certs/目錄下看到生成的證書
可直接將里面的zip壓縮包發給團隊成員安裝。
(3)用電子郵件將證書發送給團隊成員(可選步驟)
設置郵件服務器信息:
若有需要,可修改郵件模版文件
在之前的CA證書窗口中選擇用戶,點擊按鈕將證書包發郵件給用戶
(4)重新啟動 gitblit.cmd
客戶端安裝壓縮包內的.p12證書 后,即可以https方式(ie或chrome)訪問網站:https://www.xxx.com:8443/
更詳盡的客戶端使用說明請參考后繼章節。
客戶端
1.安裝msysgit
Msysgit是windows版本的git環境
下載地址:http://code.google.com/p/msysgit/
安裝注意:
(1)為了避免路徑問題,安裝目錄最好沒有空格和中文(如c:\git\)。
(2)可不用集成資源管理器菜單,因為后面的tortoisegit還會集成。
(3)其它的一路默認下去即可
最好設置下系統路徑:
path C:\ Git\bin;C:\Git\libexec\git-core;%PATH%
2.安裝HTTPS SSL客戶端證書
2.1 查看管理員發給你的證書包
里面有若干的證書文件(假設用戶名為cjh,且保存在d:\gitclient\_keys\ssl\cjh\目錄下):
![]() |
Cjh.p12 包含了私鑰和公鑰和CA證書(供瀏覽器用) Cjh.pem 包含了私鑰和公鑰和CA證書(供git客戶端用) -------------------------------------------------------------------------------------- Cjh.cer 私鑰 Ca.cer 服務器端公鑰證書 Readme.txt 安裝指導 |
2.2 安裝.p12證書
該.p12證書是供瀏覽器用的。雙擊安裝.p12文件,一路默認,會提示你輸入保護密碼(問管理員)。安裝完畢后可用IE和chrome訪問服務端網站,firefox的p12安裝請看安裝指導。結束后可在internet選型->內容->證書內找到兩個證書:
(1)受信任的根證書頒發機構: git.xxx.com的CA證書,用於標志該網站的身份
(2)個人證書:客戶端用該證書連接git.xxx.com的https服務。
安裝p12證書后,即可訪問GIT服務器端網站,如 https://git.xxx.com:8443/
2.3 配置pem證書
該證書是git客戶端用的。
openssl rsa -in "d:\gitclient\_keys\ssl\cjh\cjh.pem" -out "d:\gitclient\_keys\ssl\cjh\cjh.key"
git config --global http.sslcert "d:\gitclient\_keys\ssl\cjh\cjh.pem"
git config --global http.sslkey "d:\gitclient\_keys\ssl\cjh\cjh.key"
git config --global http.sslVerify false
git config --global --list
設置.pem證書成功后就可以用git訪問服務器https git服務了
3.安裝tortoiseGit
http://code.google.com/p/tortoisegit/wiki/Download
一路默認過去即可。安裝成功后,資源管理器右鍵菜單將集成TortoiseGit。
4.安裝VisualStudio GIT插件
工具->擴展管理器->搜索並安裝git source control provider,重新啟動visual studio
工具->選項->源代碼管理(source control): 選擇git source control provider
設置git source control provider中的tortosegit路徑C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe
5.GIT基本操作
5.1 clone倉庫
在d:\gitclient\目錄內空白處,右鍵菜單->Git Clone,從服務器端將庫克隆下來,地址
https://admin@git.xxx.com:8443/git/test.git
也可以直接打命令行:
git clone https://admin@git.xxx.com:8443/git/test.git d:\gitclient\test
Cloning into 'test'...
remote: Counting objects: 11, done
remote: Finding sources: 100% (11/11)
remote: Getting sizes: 100% (7/7)
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
5.2 Commit(到本地庫)
在visualstudio中用右鍵菜單進行commit操作(若未安裝tortoisegit,可直接用git bash命令行工具)
Commit時必須寫點東西;commit結束后可以push到服務器端。
注:commit全選文件的技巧:用shift鍵全選,再點擊checkbox。
5.3 Push(到服務器庫)