mac搭建git服務器

http://blog.csdn.net/kesalin/article/details/6943770python

 

XCode 4 默認支持 Git 做爲代碼倉庫,當咱們新建一個倉庫的時候,能夠勾選建立默認倉庫,只不過這個倉庫是在本地的。本文介紹如何在 mac 機器上建立 Git 服務器,整體思路是:使用 gitosis 來簡化建立過程,在用做服務器的機器上建立一個名爲 git 的帳戶來建立 git 服務器,其餘客戶端經過 ssh 機制訪問 git 服務器。git

本文文檔:點此下載web

 

一,建立 git 帳戶
1,在用做服務器的機器 Server 上建立 git 帳戶。咱們能夠經過 System Preferences->accounts 來添加。在這裏我添加一個 git 的 administrator 帳戶,administrator 不是必須的,在這裏僅僅爲了方便。bash

 

2,設置遠程訪問
logout 當前帳戶,使用 git 帳戶登陸;在 System Preferences->Sharing 中,勾選:Web Sharing 和 Remote Logig。

二,下載安裝 gitosis
1,Mac Snow默認已經爲咱們安裝了 Git 和 Python,可使用以下命令查看其版本信息:服務器

yourname:~ git$ git --version
git version 1.7.3.4
yourname:~ git$ python --version
Python 2.6.1


2,經過命令 "git clone git://eagain.net/gitosis.git" 來下載 gitosisssh

yourname:~ git$ git clone git://eagain.net/gitosis.git
Cloning into gitosis
remote: Counting objects: 614, done.
remote: Compressing objects: 100% (183/183), done.
remote: Total 614 (delta 434), reused 594 (delta 422)
Receiving objects: 100% (614/614), 93.82 KiB | 45 KiB/s, done.
Resolving deltas: 100% (434/434), done.


3,進入 gitosis 目錄,使用命令 "sudo python setup.py install" 來執行 python 腳原本安裝 gitosis。編輯器

yourname:~ git$ cd gitosis/
yourname:gitosis git$ sudo python setup.py install
running install
running bdist_egg
running egg_info
creating gitosis.egg-info
……
Using /Library/Python/2.6/site-packages/setuptools-0.6c9-py2.6.egg
Finished processing dependencies for gitosis==0.2


三,製做 ssh rsa 公鑰
1,回到 client 機器上,製做 ssh 公鑰。在這裏個人使用同一臺機器上的另外一個帳戶做爲 client。若是做爲 client 的機器與做爲 server 的機器不是同一臺,也是類型的流程:製做公鑰,放置到服務的 /tmp 目錄下。只不過在同一臺機器上,咱們能夠經過開啓另外一個 terminal,使用 su 切換到 local 帳戶就能夠同時操做兩個帳戶。ide

yourname:~ git$ su local_account
Password:
bash-3.2$ cd ~
bash-3.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/local_account/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/local_account/.ssh/id_rsa.
Your public key has been saved in /Users/local_account/.ssh/id_rsa.pub.

bash-3.2$ cd .ssh
bash-3.2$ ls
id_rsa        id_rsa.pub
bash-3.2$ cp id_rsa.pub /tmp/ yourame.pub


在上面的命令裏,首先經過 su 切換到 local 帳戶(只有在同一臺機器上纔有效),而後進入到 local 帳戶的 home 目錄,使用 ssh-keygen -t rsa 生成 id_rsa.pub,最後將該文件拷貝放置到  /tmp/yourname.pub,這樣 git 帳戶就能夠訪問 yourname.pub了,在這裏更名是爲了便於在 git 中辨識多個 client。

四,使用 ssh 公鑰初始化 gitosis
1,不論你是以那種方式(郵件,usb等等)拷貝 yourname.pub 至服務器的 /tmp/yourname.pub。下面的流程都是同樣,登入服務器機器的 git 帳戶,進入先前提到 gitosis 目錄,進行以下操做初始化 gitosis,初始化完成後,會在 git 的 home 下建立 repositories 目錄。post

yourname:gitosis git$ sudo -H -u git gitosis-init < /tmp/yourname.pub
Initialized empty Git repository in /Users/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /Users/git/repositories/gitosis-admin.git/


在這裏,會將該 client 當作認證受信任的帳戶,所以在 git 的 home 目錄下會有記錄,文件 authorized_keys 的內容與 yourname.pub 差很少。測試

yourname:~ git$ cd ~
yourname:~ git$ cd .ssh
yourname:.ssh git$ ls
authorized_keys


咱們須要將 authorizd_keys 稍作修改,用文本編輯器打開它,刪除裏面的"command="gitosis-serve yourname",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " 這一行:

yourname:.ssh git$ open -e authorized_keys 

 

 

而後,咱們對 post-update 賦予可寫權限,以便 client 端能夠提交更改。

yourname:gitosis git$ sudo chmod 755 /Users/git/repositories//gitosis-admin.git/hooks/post-update
Password:
yourname:.ssh git$ cd ~
yourname:~ git$ cd repositories/
yourname:repositories git$ ls
gitosis-admin.git
yourname:repositories git$


在上面的命令中能夠看到,gitosis 也是做爲倉庫的形式給出,咱們能夠在其餘帳戶下 checkout,而後對 gitosis 進行配置管理等等,而無需使用服務器的 git 帳戶進行。

最後一步,修改 git 帳戶的 PATH 路徑。

yourname:gitosis git$ touch ~/.bashrc
yourname:gitosis git$ echo PATH=/usr/local/bin:/usr/local/git/bin:\$PATH > .bashrc
yourname:gitosis git$ echo export PATH >> .bashrc
yourname:gitosis git$ cat .bashrc 
PATH=/usr/local/bin:/usr/local/git/bin:$PATH
export PATH


至此,服務器的配置完成。

五,client 配置
1,回到 local 帳戶,首先在 terminal 輸入以下命令修改 local 的 git 配置:

bash-3.2$ git config --global user.name  "yourgitname"
bash-3.2$ git config --global user.email "yourmail@yourcom.com"


2,測試服務器是否鏈接正確,將 10.1.4.211 換成你服務的名稱或服務器地址便可。

yourname:~ local_account$ ssh git@10.1.4.211
Last login: Mon Nov  7 13:11:38 2011 from 10.1.4.211


3,在本地 clone 服務器倉庫,下面以 gitosis-admin.git 爲例:

bash-3.2$ git clone git@10.1.4.211:repositories/gitosis-admin.git
Cloning into gitosis-admin
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.
bash-3.2$ ls
Desktop        InstallApp    Music        Sites
Documents    Library        Pictures    gitosis-admin
Downloads    Movies        Public
bash-3.2$ git 


在上面的輸出中能夠看到,咱們已經成功 clone 服務器的 gitosis-admin 倉庫至本地了。

4,在本地管理 gitosis-admin:
進入 gitosis-admin 目錄,咱們來查看一下其目錄結構:gitosis.conf 文件是一個配置文件,裏面定義哪些用戶能夠訪問哪些倉庫,咱們能夠修改這個配置;keydir 是存放ssh 公鑰的地方。

bash-3.2$ cd gitosis-admin/
bash-3.2$ ls
gitosis.conf keydir
bash-3.2$ cd keydir/
bash-3.2$ ls
yourname.pub

 

咱們只須要將其餘 client 產生的 ssh 公鑰添加到 keydir 目錄下,並在 gitosis.conf 文件中配置這些用戶能夠訪問的倉庫(用戶名與放置在 keydir 下sh 公鑰名相同,這就是在前面咱們要修改ssh 公鑰名的緣由),而後將改動提交至服務器,這樣就可讓其餘的 client 端訪問服務器的代碼倉庫了。
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1) 在 server 端建立空的 repository

$ cd path/to
$ mkdir newrepo.git $ cd newrepo.git $ git init --bare
# --bare flag 只是用來存儲 pushes,不會當作本地 repository 來使用的。

    2) 在 client 端,建立 local repository 並 push

複製代碼
$ cd path/to
$ mkdir newrepo
$ cd newrepo
$ git init
$ touch README
$ git add .
$ git commit -m "initial commit"
$ git remote add origin git@yourComputerName:/path/to/newrepo.git # 若是直接以前在 server 端建立的 newrepo.git 是在 home 目錄,則這裏地址爲:git@yourComputerName:newrepo.git
$ git push origin master
相關文章
相關標籤/搜索