Git gitolite 伺服器搭建

2021-09-30 13:19:07 字數 3675 閱讀 8816

<?xml version="1.0" encoding="utf-8"?>

上面即是部分xml檔案,一下兩個解釋如下 :

remote表示 遠端伺服器 , name=「origin」 , 表示該伺服器用 origin表示

default表示預設project的分支歸屬。   上述表示每個project如果沒有自己的說明將屬於git分支:refs/heads/lhznj-19r17-android-4.4

這句表示乙個project 位於當前工程根目錄的 art目錄, 它屬於的git分支是: android/platform/art

以上說了些 .repo目錄下的結構,可以發現  git init操作是從 url2獲取了完整的 repo工具 , 然後從 url1獲得專案的 git倉庫組織結構檔案  manifest.xml檔案 。然後在使用repo sync的時候根據 manifest.xml檔案從伺服器獲取** 。

正文 :

1 :git-daemon-run  安裝

apt-get install git-daemon-run

目前對於 git-daemon認識比較淺顯 ,他是乙個用於搭建 乙個無口令登入訪問git版本庫的工具:

a、 可以確定伺服器上git倉庫所在的位置 。 比如 使用 repo -u  url 的時候 ,當安裝了 git-daemon就只需要把url寫成   ip:/倉庫名子 就可以了 , 因為在 git-daemon中配置了這個倉庫的路徑了, 否則 就要寫上倉庫的絕對路徑 ,那樣很麻煩 。

b、git-deamon可以控制git客戶端的訪問, 管理客戶端的訪問許可權 。

c.如果對於版本庫的提交許可權有限制 可以使用gitolite工具,這樣就不用安裝 git-daemon-run 工具。

2. 安裝git工具  和 生成公鑰

這部分內容網上很多,此處略去。。。。

3. 搭建android工程

a  新建目錄reposerver ,將   manifest.git 和 git-repo.git 複製到這個目錄

b  使用 git clone  將manifest。git 轉殖到本地 , 按照 現在工程中檔案的分布 重新建立乙份 manifests.xml 檔案 , 注意該檔案中 版本庫和目錄的對應關係, 如下

表示 工程目錄中的build 對應到版本庫 android/platform/build , 所以在使用 repo sync的時候 repo會  這樣去取版本:

git clone  gitserv@ip: path/android/platform/build   build   

既然是這樣 ,我們可以按照 工程目錄的結構 來建立版本庫 。  這裡有個方法 , 我們修改 manifests.xml 檔案 , 按照已有的 android的 工程目錄檔案 結構 構建版本庫

的目錄結構 ,例如:

注意這裡的檔案的當前目錄是   manifest.git所在的目錄, 所以上面兩句就表示 在當前目錄下有   build.git  和  kernel.git兩個 版本庫 , 分別會抽取到**工程根目下 的       

build 和 kernel 目錄 。所以我們要在伺服器上 建立 這兩個版本庫並提交我們已有的**檔案。

在建立版本庫的時候 如果使用git init命令 , 建立的版本庫可以被轉殖但是無法提交, 需要設定該庫的config檔案中   bare = true ,這樣才可以提交 。  但對於 gitolite ,由

於安裝gitolite後 它會自動去找  目標+.git的庫 ,  並且該庫要使用  git  init --bare 命令建立, 所以還是建議使用 git init --bare 建立版本庫 , 並且庫名使用  .git字尾 ,  例如

kernel.git   ,  免得和 gitolite出現衝突。

依次類推建立所有用到的版本 ,這樣git庫就搭建好了 。

當然這裡很麻煩, 應為庫很多  , 這裡就需要用指令碼了 。 

使用 repo forall   -c   " echo  $repo_path" >   repo_path.txt ,    這樣所有要建立的版本庫路徑就在 repo_path.txt檔案中了 ,然後運用指令碼就能搞定了  。

4. 搭建 gitolite伺服器

當git 伺服器搭建好之後 , 我們需要對  其進行提交許可權的控制 , 這是需要安裝 gitolite工具。

在ubuntu系統系操作如下 :

a。 sudo apt-get isntall  gitolite

b.    cp   /home/admoin/.ssh/id_rsa.pub   /home/gitserv/admin.pub     #拷貝admin使用者的 公鑰檔案到 安裝gitolite伺服器的賬戶 , 這個賬戶和 建立 git庫的賬戶一致

c .   gl-setup   /home/gitserv/admin.pub    #此步初始化 gitolite , admin.pub指定為 gitolite的管理員賬戶 , 可以對 gitolite 控制的版本庫進行 許可權設定 。同時也將 admin.pub也寫入了  當前使用者的  authorized_keys 檔案中,   這樣  admin使用者就成了第乙個可以訪問  gitserv@【本機ip】:gitolite-admin.git 庫的使用者 。

d.   c之後安裝就完成了 ,完成之後會在  /home/gitserv/ 目錄下生成 repositories 目錄 , 這個目錄就是 gitolite 所管理的版本庫的位置 , 在/home/gitserv/ 目錄下 還生成了.gitolite.rc檔案  和 .gitolite目錄  。

.gitolite.rc檔案是用來配置 gitolite伺服器的 , 預設的gitolite伺服器不能再 許可權檔案中使用萬用字元 , 所以將 .gitolite.rc 檔案中的  gl_wildrepos = 0;    改為 gl_wildrepos = 1;        

e.         進入admin'賬戶, 將 c中的  gitserv@【本機ip】:gitolite-admin.git   庫取下來, 修改 gitolite-admin/conf/gitolite.conf 檔案 , 這個檔案管理了   gitolite所控制下版本庫的許可權 。     也可以將自己已經建立好的版本庫加入其中 。  加入 我們的版本庫目錄叫做  reposerver , 我們可以再 該檔案中加入如下 :

repo    ^repo-server/.+$

c   = @admin

r = @all

w+ =@gitserv

上述表示    c (版本庫建立者) 是all (所有人) ,    那麼僅有admin就對此版本庫有全部許可權

r 表示唯讀

w表示可寫 , + 表示可以強制提交 。   

當然 reposerver很大 , 不方便移動的話我們可以用鏈結,同樣可以起到授權的作用 。

5 .關於 git庫的建立

對於批量的建庫操作可以使用指令碼完成 , 可以在 伺服器上 本地操作建立 ,  也可以是用 git賬戶遠端建立 。

本地建立 :   git init  --bare

遠端建立:

mkdir   kernal.git

cd   kernel.git

git init --bare 

git  remote add  origin [email protected]:/repo-server/kernel.git

git push origin master



windows git daemon 伺服器搭建

安裝git 使用不再贅 在資料夾repo 中執行git init新建git倉庫 在 repo目錄下執行git config local receive.denycurrentbranch updateinstead執行git config global sendpack.sideband false...

自搭ngrok伺服器

在阿里雲伺服器自己搭 ngrok 的伺服器,步驟基本跟著 1,2 一步步來,本人需要用到 這裡僅提幾點注意 我那個阿里雲伺服器有個網域名稱,在管理頁可以看的,生成證書時設定export ngrok domain 那個網域名稱 就是用這個網域名稱,後面 ngrokd 的執行引數 client 端的配置...

CentOs下LinuxWeb伺服器的搭建

注意細節,祝大家都能避坑 一 安裝web伺服器所需軟體,設定伺服器的ip為192.168.1.2 1 安裝apache服務程式 apache服務的軟體包名稱叫做httpd yum install httpd y2 將apache服務新增到 開機自啟中 3 設定ip ifconfig ens33 19...