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

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

轉(zhuǎn)載 2018年4月12日 11:10:28

轉(zhuǎn)自【http://blog.chinaunix.net/uid-15174104-id-3843570.html】

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

By?Harrison Feng

在Git服務(wù)管理工具這個(gè)領(lǐng)域,主要有三種流行的方案,它們分別是?

Gitosis- 輕量級(jí)艺沼, 開源項(xiàng)目雷客,使用SSH公鑰認(rèn)證稚虎,只能做到庫級(jí)的權(quán)限控制窗骑。目前項(xiàng)目已經(jīng)停止開發(fā),不再維護(hù)持灰。

Gitolite- 輕量級(jí)榨乎,開源項(xiàng)目怎燥,使用SSH公鑰認(rèn)證,能做到分支級(jí)的權(quán)限控制蜜暑。

Git?+?Repo?+?Gerrit- 超級(jí)重量級(jí)铐姚,集版本控制,庫管理和代碼審核為一身肛捍∫啵可管理大型及超大型項(xiàng)目。

大名鼎鼎的Android平臺(tái)就是使用的 Git + Repo + Gerrit拙毫。對(duì)于個(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,請(qǐng)分別在

客戶端和服務(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夭谤,請(qǐng)將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ù)器對(duì)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/ 用于存儲(chǔ)用戶的SSH public key(公鑰)。

Git項(xiàng)目配置和訪問權(quán)限設(shè)置請(qǐng)看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里注冊(cè)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里注冊(cè)

這個(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)目中,你

????? 最好不要這樣做灶伊。請(qǐng)為不同級(jí)別的用戶設(shè)置不同的權(quán)限疆前。

【4】 由于我的客戶端和服務(wù)器是同一臺(tái)PC,所以這里域名都是ubuntu-12.04-LTS聘萨。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末峡继,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匈挖,更是在濱河造成了極大的恐慌碾牌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儡循,死亡現(xiàn)場離奇詭異舶吗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)择膝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門誓琼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肴捉,你說我怎么就攤上這事腹侣。” “怎么了齿穗?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵傲隶,是天一觀的道長。 經(jīng)常有香客問我窃页,道長跺株,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任脖卖,我火速辦了婚禮乒省,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畦木。我一直安慰自己袖扛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布十籍。 她就那樣靜靜地躺著蛆封,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妓雾。 梳的紋絲不亂的頭發(fā)上娶吞,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音械姻,去河邊找鬼妒蛇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛楷拳,可吹牛的內(nèi)容都是我干的绣夺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼欢揖,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼陶耍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起她混,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤烈钞,失蹤者是張志新(化名)和其女友劉穎泊碑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毯欣,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馒过,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酗钞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腹忽。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖砚作,靈堂內(nèi)的尸體忽然破棺而出窘奏,到底是詐尸還是另有隱情,我是刑警寧澤葫录,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布着裹,位于F島的核電站,受9級(jí)特大地震影響压昼,放射性物質(zhì)發(fā)生泄漏求冷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一窍霞、第九天 我趴在偏房一處隱蔽的房頂上張望匠题。 院中可真熱鬧,春花似錦但金、人聲如沸韭山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钱磅。三九已至,卻和暖如春似枕,著一層夾襖步出監(jiān)牢的瞬間盖淡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工凿歼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褪迟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓答憔,卻偏偏與公主長得像味赃,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虐拓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容