參考網上資料搭建git服務器過程記錄以下:css
1 //安裝git和openssh: 2 a@server:~$ sudo apt-get install git-core openssh-server openssh-client 3 //新加用戶git, 該用戶將做爲全部代碼倉庫和用戶權限的管理者: 4 a@server:~$ sudo useradd -m git 5 a@server:~$ sudo passwd git 6 //創建一個git倉庫的存儲點: 7 a@server:~$ sudo mkdir /home/repo 8 //讓除了git之外的用戶對此目錄無任何權限: 9 a@server:~$ sudo chown git:git /home/repo 10 a@server:~$ sudo chmod 700 /home/repo
1 //初始化一下服務器的git用戶,這一步實際上是爲了安裝gitosis作準備。在任何一 臺機器上使用git,第一次必需要初始化一下: 2 a@server:~$ git config –global user.name 「myname」 3 a@server:~$ git config –global user.email 「myname@server 「 4 //安裝一下python的setup tool, 這個也是爲了gitosis作準備: 5 a@server:~$ sudo apt-get install python-setuptools 6 //得到gitosis包: 7 a@server:~$ cd /tmp 8 a@server:/tmp$ git clone https://github.com/res0nat0r/gitosis.git 9 a@server:/tmp$ cd gitosis 10 a@server:/tmp/gitosis$ sudo python setup.py install 11 //切換到git用戶下: 12 a@server:/tmp/gitosis$ su git 13 //默認狀態下,gitosis會將git倉庫放在 git用戶的home下,因此咱們作一個連接到/home/repo 14 $ ln -s /home/repo /home/git/repositories 15 //再次返回到默認用戶 16 $ exit 17 //若是你將做爲git服務器的管理員,那麼在你的電 腦上(另外一臺pc)生成ssh公鑰: 18 usr@pc1:~$ ssh-keygen -t rsa 19 將公鑰拷貝到服務器的/tmp下: 20 usr@pc1:~$ scp .ssh/id_rsa.pub git@<server>:/tmp 21 //回到git服務器上 22 a@server:/tmp/gitosis$ sudo chmod a+r /tmp/id_rsa.pub 23 //讓gitosis運行起來: 24 a@server:/tmp/gitosis$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub 25 Initialized empty Git repository in /home/repo/gitosis-admin.git/ 26 Reinitialized existing Git repository in /home/repo/gitosis-admin.git/ 27 //gitosis的有趣之處在於,它經過一個git倉庫來管理配置文件,倉庫就放在了/home/repo/gitosis- admin.git。咱們須要爲一個文件加上可執行權限: 28 a@server:/home/git$ sudo passwd root 29 a@server:/home/git$ su 30 root@server:/home/git # cd repositories 31 root@server:/home/git/repositories # cd gitosis-admin.git/ 32 root@server:/home/git/repositories/gitosis-admin.gi t # sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update 33 34 root@server:/home/git/repositories/gitosis-admin.git # exit
我建了一個叫「teamwork」的倉庫。
切換到git用戶:
python
1 a@ubuntu:/home/git$ su - git 2 $ cd /home/prj_git 3 $ mkdir teamwork.git 4 $ cd teamwork.git 5 $ git init --bare 6 $ exit
剛剛提到,gitosis自己的配置也是經過git來實現的。在你本身的開發機裏,把gitosis-admin.git這個倉庫clone下來,就能夠以管理員的身份修改配置了。linux
1 usr@pc1:~/work$ sudo git clone git@<Server-IP>:/home/prj_git/gitosis-admin.git 2 usr@pc1:~/work$ cd gitosis-admin/
1 usr@pc1:~/work/gitosis-admin$ su root 2 root@server:/home/a/work/gitosis-admin # cp /path/to/.ssh/id_rsa.pub ./keydir/b.pub 3 root@server:/home/a/work/gitosis-admin # exit
1 [gitosis] 2 [group gitosis-admin] 3 writable = gitosis-admin 4 members = a@server usr@pc1 5 [group hello] 6 writable = teamwork 7 members = a@server b 8 [group hello_ro] 9 readonly = teamwork 10 members = lz
1 usr@pc1:~/work/gitosis-admin$ git add . 2 usr@pc1:~/work/gitosis-admin$ git commit -am 「add teamweok prj and users」 3 usr@pc1:~/work/gitosis-admin$ git push origin master
1 usr@pc1:~/work$ mkdir teamwork-ori 2 usr@pc1:~/work$ cd teamwork-ori/ 3 usr@pc1:~/work/teamwork-ori$ git init 4 usr@pc1:~/work/teamwork-ori$ echo 「/*add something*/」 > hello 5 usr@pc1:~/work/teamwork-ori$ git add . 6 usr@pc1:~/work/teamwork-ori$ git commit -am 「initial version」 7 usr@pc1:~/work/teamwork-ori$ git remote add origin git@<server>:teamwork.git 8 usr@pc1:~/work/teamwork-ori$ git push origin master
1 usr@pc1:~/work/teamwork-ori$ su b 2 $ cd /home/b 3 $ git clone git@<server>:teamwork.git 4 $ cd teamwork 5 $ vim hello 6 $ git add . 7 $ git commit -am 「b add」 8 $ git push origin master 9 $ exit
1 //首先須要從你的工做倉庫中獲得一個純倉庫, 好比你的工做目錄爲~/kernel, 你想導出純倉庫到你的優盤裏,而後拷貝到gitserver上去。 2 $ git clone –bare ~/kernel /media/udisk 3 //而後就拿着優盤,交給gitserver的管理員,讓他拷貝到/home/repo/下,同時須要配置 gitosis相關配置文件哦,這個就不用再說了吧。好比:下載ALSA庫: 4 git clone git://android.git.kernel.org/platform/external/alsa-lib.git 5 git clone git://android.git.kernel.org/platform/external/alsa-utils.git 6 //生成bare庫 7 git clone –bare alsa-lib alsa-lib.git 8 git clone –bare alsa-utils alsa-utils.git 9 //將bare 庫移動到git服務器目錄 10 cp alsa-lib.git /home/repo 11 //注意變動全部者,以獲取提交權限。 12 chown -R git alsa-lib.git
1. 安裝gitweb android
sudo apt-get install gitweb
2. 安裝apache2git
sudo apt-get install apache2
3. 配置gitweb
(1)默認沒有 css 加載,把 gitweb 要用的靜態文件鏈接到 DocumentRoot 下:github
1 cd /var/ www/ 2 sudo ln -s / usr/ share/ gitweb/* .
(注意後面的點)web
(2)修改配置:
apache
sudo vi /etc/ gitweb.conf
將 $projectroot 改成gitosis-admin.git所在目錄: /home/git/repositoriesubuntu
(3)修改 /home/git/repositories權限,默認狀況下,gitosis將 repositories權限設置爲不可讀的
vim
sudo chmod 777 -R /home/git/repositories
11.編輯apache2配置文件,創建web站點 (默認狀況下能夠忽略此步驟)
(1) 編輯apache2配置文件
ubuntu中默認的web目錄是/var/www,默認的cgi目錄是 /usr/lib/cgi-bin/,安裝完成gitweb後,gitweb的gitweb.cgi會自動放置
到該目錄下。若是你的cgi路徑不是默認的/usr/lib/cgi-bin/,須要將gitweb安裝在/usr/lib/cgi-bin中的gitweb.cgi複製到原來配置
的cgi-bin路徑,並修改apache的配置文件/etc/apache2/apache.conf:
SetEnv GITWEB_CONFIG /etc/gitweb.conf
gitweb.conf配置文件形如:(可自行修改,這裏不作詳細介紹)
1 <Directory "/srv/www/cgi-bin/gitweb"> 2 Options FollowSymlinks ExecCGI 3 Allow from all 4 AllowOverride all 5 Order allow,deny 6 7 <Files gitweb.cgi> 8 SetHandler cgi-script 9 </Files> 10 RewriteEngine on 11 RewriteCond %{REQUEST_FILENAME} !-f 12 RewriteCond %{REQUEST_FILENAME} !-d 13 RewriteRule ^.* /gitweb.cgi/$0 [L,PT] 14 </Directory>
(2)從新啓動apache:sudo /etc/init.d/apache2 restart,訪問http://localhost/cgi-bin/gitweb.cgi
配置web訪問方式:
1 git clone git://git.kernel.org/pub/scm/git/git.git 2 cd git 3 make GITWEB_PROJECTROOT=」/home/repo」 prefix=/usr gitweb/gitweb.cgi 4 cd gitweb 5 cp -av git* /home/repo/
1 <VirtualHost 172.20.146.39:80> 2 ServerName 172.20.146.39 3 DocumentRoot /home/repo 4 ScriptAlias /cgi-bin/ /home/repo 5 <Directory /home/repo> 6 Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch 7 AllowOverride All 8 order allow,deny 9 Allow from all 10 AddHandler cgi-script cgi 11 DirectoryIndex gitweb.cgi 12 </Directory> 13 </VirtualHost>
1 chgrp -R www-data /home/repo 2 chmod a+r repo 3 chmod a+x repo 4 mv hooks/post-update.sample hooks/post-update
1 git clone http://192.168.1.1/alsa-lib.git 2 git clone http://192.168.1.1/alsa-utils.git
1 git clone git@192.168.1.1:alsa-lib.git
4.(1)git@hello:/home/git$ git add . error: readlink(「external/openssl/apps/md4.c」): No such file or directory error: unable to index file external/openssl/apps/md4.c fatal: adding files failed (2)root@/external/openssl# git init Initialized empty Git repository in /external/openssl/.git/ root@/external/openssl # git add . error: readlink(「apps/md4.c」): No such file or directory error: unable to index file apps/md4.c fatal: adding files failed (3) root@android-2.1_r2$ rm -Rf .repo root@android-2.1_r2 $ find . -name 「.git」 | xargs rm -Rf