日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Gitolite搭建Gitserver

發(fā)布時間:2023/12/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Gitolite搭建Gitserver 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ???Gitolite是一款Perl語言開發(fā)的Git服務(wù)管理工具。通過公鑰對用戶進(jìn)行認(rèn)證。并可以通過配置文件對些操作進(jìn)行基于分支和路徑的精細(xì)控制。

Gitolite採用的是SSH協(xié)議而且使用SSH公鑰認(rèn)證。因此不管是管理員還是普通用戶。都須要對SSH有所了解。Gitolite的官網(wǎng)是:https://github.com/sitaramc/gitolite。以下就來細(xì)說使用Gitolite搭建Gitserver的過程吧。

? ? ? ? ?硬件需求:Ubuntu電腦(或虛擬機(jī))。正常網(wǎng)絡(luò)訪問。

? ? ? ? ?軟件需求:git-core,gitolite, openssh-server, git-daemon-run(ubuntu),msysgit(windows)

? ? ? ? ?Gitolite的搭建過程中,Gitweb、Apache不是必須的,Gitweb、Apache跟Gitolite一起使用。看到的效果類似于?http://git.chromium.org/gitweb/。

1. 安裝配置Gitserver(IP:10.203.138.129)

???????? 安裝Git和openssh。

?????????$ sudo apt-get install git-core openssh-server

?????????新建用戶git,該用戶作為全部代碼倉庫和用戶權(quán)限的管理者。

?????????$ sudo groupadd git

???????? $ sudo useradd git –g git –m

???????? $ sudo passwd git?(須要設(shè)置用戶git的password)


2. 下載gitolite

???????? 初始化server的全局設(shè)置,為安裝gitolite做準(zhǔn)備。

在不論什么一臺機(jī)器上使用git。第一次必需要先設(shè)置user.name和user.email。

?????????$ git config --global user.name “david”

???????? $ git config --global user.email “david@server-pc”(name和email任意)

???????? 安裝一下python的setup tool。

?????????$ sudo apt-get install python-setuptools

???????? 獲取gitolite包。

?????????$ git clone https://github.com/sitaramc/gitolite.git(或者到網(wǎng)上下載相應(yīng)的gitolite)

? ? ? ??當(dāng)然,我們也能夠使用包管理器進(jìn)行安裝。

? ? ? ??$ sudo aptitude install gitolite


3. 配置gitolite

???????? 在git管理員的PC上,先安裝msysgit(windows系統(tǒng))。安裝后,打開gitbash。執(zhí)行例如以下命令生成管理員密鑰:

?????????$ ssh-keygen –t rsa

?????????執(zhí)行以上命令后。能夠默認(rèn)提示直接回車。回車后在當(dāng)前用戶文件夾下生成了.ssh/id_rsa和.ssh/id_rsa.pub。

當(dāng)中.ssh/id_rsa是私玥,.ssh/id_rsa.pub是公鑰。接下來能夠使用例如以下命令將git管理員的公鑰上傳到gitserver。也能夠直接復(fù)制到gitserver。

?????????$ scp xxx/.ssh/id_rsa.pub webgod@10.203.138.129:/tmp/admin.pub


? ? ? ???回到Gitserver上。

?????????$ sudo chmod a+r /tmp/id_rsa.pub

? ? ? ???運(yùn)行Gitolite安裝。

? ? ? ???$ gl-setup /tmp/admin.pub

?????????Initialized empty Git repository in /home/repo/gitolite-admin.git/

Reinitialized existing Git repository in /home/repo/gitolite-admin.git/

?????????Gitolite是通過一個git倉庫來管理配置文件。倉庫放在/home/git/repositories/gitolite-admin.git。

???????? 設(shè)置git倉庫權(quán)限

?????????$ sudo chown git:git /home/git/repositories

???????? $ sudo chmod 755 /home/git/repositories

???????? $ sudo chmod 755 /home/git/repositories/gitolite-admin.git/hooks/post-update



4. 在server上新建測試項目倉庫

???????? 在server上新建一個空的項目倉庫可。叫“test”。

???????? 切換到git用戶:

?????????$ su – git

???????? $ cd repositories

???????? $ git init --bare test.git

???????? $ exit

?????????到這里,test僅僅是一個空倉庫。它是不能clone下來的。

為了能做clone,必須先讓管理員或有權(quán)限的人放一個初始化的版本號到倉庫中。

所以,我們必須先改動一個gitolite-admin。


5. 管理gitolite的配置文件

???????? Gitolite本身的配置也是通過git來實現(xiàn)的。

在剛剛上傳公鑰的機(jī)器上,把gitolite-admin.git這個倉庫clone下來,就能夠以管理員的身份改動配置了。

???????? 新建一個目錄,如git129:

?????????$ mkdir git129

???????? $ cd git129

???????? $ git clone git@10.203.138.129:gitolite-admin.git(或使用全路徑)

???????? 注:訪問git用戶倉庫的默認(rèn)路徑是/home/git/repositories/

?????????$ cd gitolite-admin

?????????該文件夾下的keydir文件夾是用來存放全部須要訪問gitserver的用戶的ssh公鑰。

各個用戶依照前面提到的辦法生成各自的ssh公鑰文件后,把全部人的ssh公鑰文件按名字又一次命名一下,然后復(fù)制到keydir文件夾下,然后改動gitolite.conf文件,做對應(yīng)的配置:

?????????[gitolite]

???????? [group gitolite-admin]

???????? writable = gitolite-admin

???????? members = david@DAVID-PC ?tom@TOM-PC

???????? [group team]

???????? writable = test

???????? members = david@DAVID-PC ?tom@TOM-PC ?pitter@PITTER-PC

?????????這個配置文件表達(dá)了例如以下含有:gitolite-admin組成員有david,tom,該組對gitolite-admin倉庫有讀寫權(quán)限;test組有david,tom,pitter三個成員,該組對test倉庫有讀寫權(quán)限。眼下這些配置文件的改動僅僅是在本地,必須推送到遠(yuǎn)程的gitserver上才干真正生效。

???????? 增加新文件、提交并push到Gitserver:

?????????$ git add .

???????? $ git commit –m “add test and someusers”

???????? $ git push origin master

? ? ? ???$ sudo chmod a+r /tmp/id_rsa.pub


6. 初始化測試項目

???????? 如今server搭建完成,而且有一個空的項目test在server上。接下來,須要測試一下,空倉庫是不能clone的。所以須要某個有寫權(quán)限的人初始化一個版本號。

在client運(yùn)行:

?????????$ mkdir test-ori

???????? $ cd test-ori

???????? $ git init?(在client運(yùn)行,初始化一個本地的版本號庫)

?????????$ echo “/* add something */” > hello.c

???????? $ git add .

???????? $ git commit –m “initial version”

???????? $ git remote add origin git@10.203.138.129:test.git

???????? $ git push origin master

?????????到此為止,test已經(jīng)有了一個版本號了,team的其它成員僅僅要先clone一下test倉庫就能夠了。并且gitolite.conf中賦予的讀寫權(quán)限。


7. 加入已有g(shù)it項目

???????? 假設(shè)想將一個現(xiàn)成的git倉庫,放到Gitserver上供team使用(比方clone了一個官方的kernel倉庫,想在內(nèi)部使用它作為基礎(chǔ)倉庫)。能夠這樣操作:

???????? 首先須要從你的工作倉庫中得到一個純倉庫。比方你的工作文件夾為~/kernel,你想將該純倉庫復(fù)制到Gitserver上使用。Gitserver的管理員拿到這個純倉庫(~/kernel)后,將其復(fù)制到/home/repo/下,同一時候配置gitolite相關(guān)配置文件。比方說:下載ALSA庫。

?????????$ git clone git://android.git.kernel.org/platform/external/alsa-lib.git

?????????$ git clone git://android.git.kernel.org/platform/external/alsa-utils.git

?????????生成bare庫:

?????????$ git clone --bare alsa-lib alsa-lib.git

???????? $ git clone --bare alsa-utils alsa-utils.git

?????????將bare庫移動到Gitserver文件夾:

?????????$ cp alsa-lib.git /home/repo

? ? ? ???注意變更全部者。以獲取提交權(quán)限。

? ? ? ???$ chown -R git alsa-lib.git


8. Gitweb和Git Daemon的支持


? ? ? ???Gitolite和Gitweb的整合提供了兩個方面的內(nèi)容。一個是能夠設(shè)置版本號庫的描寫敘述信息,用于在Gitweb項目列表中顯示。還有一個則是自己主動生成項目的列表文件共Gitweb參考,避免Gitweb使用低效率的文件夾遞歸搜索查找Git版本號庫列表。

能夠在授權(quán)文件里設(shè)定版本號庫的描寫敘述信息,并在gitolite-admin管理庫更新時創(chuàng)建到版本號庫的description文件里。 ? ? ? ???repo name = "one line of description" ? ? ? ???repo name "owner name" = "one line of description" ? ? ? ???第一行為名為reponame的版本號庫設(shè)定描寫敘述。 ? ? ? ???第二行同一時候設(shè)定版本號庫的屬主名稱,以及一行版本號庫描寫敘述。

? ? ? ???對于通配符版本號庫。使用這樣的方法就不現(xiàn)實了。Gitolite提供了SSH子命令共版本號庫的創(chuàng)建者使用。 ? ? ? ???$ ssh git@server setdesc path/to/repo.git ? ? ? ???$ ssh git@server getdesc path/to/repo.git ? ? ? ???第一條指令用于設(shè)置版本號庫的描寫敘述信息。 ? ? ? ???第二條指令顯示版本號庫的描寫敘述信息。
? ? ? ???Git服務(wù)由git-daemon的服務(wù)軟件提供。

盡管git-daemon能夠支持寫操作,但由于git-daemon沒有提供認(rèn)證支持。因此非常少人會配置git-daemon來提供匿名的寫服務(wù)。

使用git-daemon提供的Git版本號庫僅僅讀服務(wù)效率非常高。

故,git-daemon一直是Git版本號庫僅僅讀服務(wù)的首選。

? ? ? ???假設(shè)想使用git協(xié)議,那么就須要安裝git-daemon。

?????????$ sudo apt-get install git-daemon-run

?????????編輯git-daemon配置文件:

?????????$ sudo gedit /etc/sv/git-daemon/run

? ? ? ??

?????????#!/bin/bash

???????? exec2>&1

???????? echo‘git-daemon starting.’

???????? execchpst -ugitdaemon

?????????????????? “$(git--exec-path)”/git-daemon --verbose?--export-all--enable=receive-pack --enable=upload-pack --enable=upload-archive?--reuseaddr --base-path=/home/webgod/? ? ??


?????????說明:

???????? --base-path????? 指向Gitserver的根文件夾

???????? --enable=receive-pack

???????? --enable=upload-pack

???????? --enable=upload-archive

???????? 以上三個是與git-clone,git-push。git-pull相關(guān)的。

查看詳情使用命令:$ man git-daemon查看。

????????

???????? 重新啟動gitserver:

?????????$ sudo sv restart git-daemon


? ? ? ? ?在Gitserver上:

?????????$ cd /home/webgod

???????? $ mkdir RepoServer

???????? $ cd RepoServer

???????? $ git init --bare manifest.git

????????

?????????切換到其它文件夾:

?????????$ cd ~/test

???????? $ git clonegit://127.0.0.1/RepoServer/manifest.git

?????????(è $ git clone git@127.0.0.1:/home/webgod/RepoServer/manifest.git)

???????? 這里就實現(xiàn)了所謂的“匿名訪問”。



轉(zhuǎn)載于:https://www.cnblogs.com/claireyuancy/p/7229837.html

總結(jié)

以上是生活随笔為你收集整理的使用Gitolite搭建Gitserver的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。