使用Gitolite搭建輕量級的Git服務(wù)器

發(fā)布時(shí)間:2024-02-25
在git服務(wù)管理工具這個(gè)領(lǐng)域,主要有三種流行的方案,它們分別是
gitosis– 輕量級, 開源項(xiàng)目,使用ssh公鑰認(rèn)證,只能做到庫級的權(quán)限控制。目前項(xiàng)目已經(jīng)停止開發(fā),不再維護(hù)。
gitolite– 輕量級,開源項(xiàng)目,使用ssh公鑰認(rèn)證,能做到分支級的權(quán)限控制。
git repo gerrit– 超級重量級,集版本控制,庫管理和代碼審核為一身。可管理大型及超大型項(xiàng)目。
大名鼎鼎的android平臺就是使用的 git repo gerrit。對于個(gè)人,中小型企業(yè)及一些開源項(xiàng)目而言,如果沒有特殊的要求,其實(shí)沒有
必要去架設(shè)上面第三種方案git服務(wù)器。gitolite提供的服務(wù)已經(jīng)足夠用。下面將詳細(xì)講解怎么搭建gitolite服務(wù)器。
安裝gitolite
gitolite的安裝需要分別在客戶端和服務(wù)器端操作。搭建gitolite的步驟如圖所示
在ubuntu12.04 lts上搭建gitolite服務(wù)器的詳細(xì)步驟,假設(shè)客戶端和服務(wù)器端已經(jīng)安裝好了git。如果還沒有安裝git,請分別在
客戶端和服務(wù)器端運(yùn)行下面的命令安裝git。
$ sudo apt-get install git
生成ssh key(客戶端)
$ ssh-keygen -t rsa -c hf
運(yùn)行命令后,一直按回車鍵直到ssh key生成。
將生成的ssh public key拷貝到服務(wù)器(客戶端)
這里注意,為了區(qū)分ssh public key,請將ssh public key重命名,最好是用用戶名命名。例如.pub
$ mv /home/ubuntuusers/hf/.ssh/id_rsa.pub hf.pub
$ scp hf.pub hf@ubuntu-12.04-lts:/tmp
創(chuàng)建git用戶(服務(wù)器端)
$ sudo adduser
> –system
> –shell /bin/bash
> –gecos \\\’git scm user\\\’
> –group
> –disabled-password
> –home /home/git git
下載gitolite源碼(服務(wù)器端)【1】
$ sudo su git
$ cd $home
$ git clone http://github.com/sitaramc/gitolite
安裝gitolite(服務(wù)器端)
$ mkdir -p ${home}/bin
$ ${home}/gitolite/install -to ${home}/bin
設(shè)置ssh public key(服務(wù)器端)
$ ${home}/bin/gitolite setup -pk /tmp/hf.pub
其實(shí),到這里,gitolite已經(jīng)安裝完成。接下來就是添加git項(xiàng)目,用戶和設(shè)置git項(xiàng)目的訪問權(quán)限了。
但是如果你的服務(wù)器對ssh的權(quán)限做了限制,例如只有在sshusers用戶組里的用戶才可以ssh到服務(wù)器,那么你還需要做一個(gè)額外的設(shè)置
那就是添加git用戶及以后的gitolite的用戶到sshusers用戶組。否則,當(dāng)你克隆git項(xiàng)目時(shí),你將被提示輸入密碼。如下圖:
添加git用戶sshusers用戶組(服務(wù)器端)
克隆gitolite管理庫(客戶端)
$ git clone git@ubuntu-12.04-lts:gitolite-admin.git
你可以看到在管理庫里,有兩個(gè)目錄, conf/和keydir/,其中conf/下面有個(gè)名為gitolite.conf的配置文件。
conf/gitolite.conf 用于git項(xiàng)目配置,訪問權(quán)限設(shè)置。
keydir/ 用于存儲用戶的ssh public key(公鑰)。
git項(xiàng)目配置和訪問權(quán)限設(shè)置請看gitolite的 readme.txt文檔。
配置git項(xiàng)目(客戶端)【2】
為了增加git項(xiàng)目到gitolite服務(wù)器,有兩種方法:
添加一個(gè)新的git項(xiàng)目
修改gitolite.conf
例如,新建一個(gè)名為foo的git項(xiàng)目,首先你需要在conf/gitolite.conf里注冊foo項(xiàng)目。
假設(shè)你已經(jīng)克隆了gitolite-admin.git項(xiàng)目,編輯conf/gitolite.conf,增加下面的內(nèi)容【3】。
repo foo
rw = @all
然后提交這部分修改,并push到遠(yuǎn)程。
設(shè)置git項(xiàng)目
hf@ubuntu-12.04-lts:~$mkdir foo
hf@ubuntu-12.04-lts:~$cd foo
hf@ubuntu-12.04-lts:~/foo$git init
initialized empty git repository in /home/ubuntuusers/hf/foo/.git/
hf@ubuntu-12.04-lts:~/foo (master)$git remote add origin hf@ubuntu-12.04-lts.git
hf@ubuntu-12.04-lts:~/foo (master)$ touch readme
hf@ubuntu-12.04-lts:~/foo (master)$ git add readme
hf@ubuntu-12.04-lts:~/foo (master)$ git commit -m "initial commit"
[master (root-commit) 997d5d8] initial commit
0 files changed, 0 insertions( ), 0 deletions(-)
create mode 100644 readme
hf@ubuntu-12.04-lts:~/foo (master)$git push origin master:refs/heads/master
counting objects: 3, done.
writing objects: 100% (3/3), 217 bytes, done.
total 3 (delta 0), reused 0 (delta 0)
to hf@ubuntu-12.04-lts:foo.git
* [new branch] master -> master
現(xiàn)在git項(xiàng)目foo已經(jīng)設(shè)置好了。用戶可以從服務(wù)器上克隆foo了 【4】。
hf@ubuntu-12.04-lts:~$ git clone hf@ubuntu-12.04-lts:foo.git
cloning into \\\’foo\\\’…
remote: counting objects: 3, done.
remote: total 3 (delta 0), reused 0 (delta 0)
receiving objects: 100% (3/3), done.
添加一個(gè)存在的git項(xiàng)目
如果你有一個(gè)已經(jīng)存在的項(xiàng)目,也想將其添加到gitolite的服務(wù)器里。這很簡單,但是首先你依然需要在gitolite.conf里注冊
這個(gè)項(xiàng)目。然后執(zhí)行下面的操作:
cd foo
git remote rm origin
git remote add origin hf@ubuntu-12.04-lts.foo.git
git push origin master
如果你有多個(gè)branch,那么checkout到那個(gè)branch,執(zhí)行
git push origin
注:
【1】 如果是企業(yè)內(nèi)部網(wǎng)絡(luò),可能你需要設(shè)置http代理,方法如下:
$ export http_proxy=http://proxy..com:/
例如: export http_proxy=http://proxy.server.com:8080/
【2】 此步驟僅gitolite的管理員才有權(quán)限執(zhí)行。
【3】 在這里,我們把foo項(xiàng)目的讀寫權(quán)限給了所有的gitolite用戶,實(shí)際的項(xiàng)目中,你
最好不要這樣做。請為不同級別的用戶設(shè)置不同的權(quán)限。
【4】 由于我的客戶端和服務(wù)器是同一臺pc,所以這里域名都是ubuntu-12.04-lts。
上一個(gè):硬盤結(jié)構(gòu)圖解說明,摩托車結(jié)構(gòu)圖解與說明
下一個(gè):高配置的電腦,電腦高配置的電腦

華碩a555l加內(nèi)存條效果明顯嗎(華碩a555l能不能加內(nèi)存)
申請工傷認(rèn)定期限是多久
電腦主機(jī)回收價(jià)格表(電腦主機(jī)回收多少錢一臺)
網(wǎng)絡(luò)交易被騙多少錢才能立案
監(jiān)理工程資料管理要求,一下子就清楚了!
windows10如何安裝windows7(win10如何安裝win7系統(tǒng))
養(yǎng)花有什么好處?
購物網(wǎng)站定制有什么流程?購物網(wǎng)站定制有什么優(yōu)勢?
配件店鋪取名,手機(jī)配件店取一個(gè)名字大氣點(diǎn)的謝謝
厚聲0201WMF1072TEE今日行情、最新報(bào)價(jià)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos