Git服务器gitolite的搭建

环境:Ubuntu server 14.04
1. 安装Git,需确保已安装ssh

root@cloud:~# apt-get update  
root@cloud:~# sudo apt-get install git
2. 在服务器端创建专用帐号,所有用户通过此帐号访问git库
root@cloud:~# sudo adduser --system --shell /bin/bash --group git 
Adding system user `git' (UID 107) ...
Adding new group `git' (GID 114) ...
Adding new user `git' (UID 107) with group `git' ...
Creating home directory `/home/git' ...
root@cloud:~# sudo adduser git ssh        //添加git用户到ssh用户组中
Adding user `git' to group `ssh' ...
Adding user git to group ssh
Done.
root@cloud:~# passwd git              //为git用户设置口令
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@cloud:~#
3. 切换到git用户,创建密码
root@cloud:~# su git
git@cloud:/root$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/git/.ssh/id_rsa): 
Created directory '/home/git/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/git/.ssh/id_rsa.
Your public key has been saved in /home/git/.ssh/id_rsa.pub.
The key fingerprint is:
f2:ac:fc:2d:ee:d2:7a:4f:8a:b4:de:a0:85:22:b9:d8 git@cloud
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|      . S        |
| .   . +         |
|o . . +.o .      |
|.+ . =.*++       |
|o E ..BB*oo      |
+-----------------+
git@cloud:/root$
git@cloud:/root$ cd /home/git/.ssh/
git@cloud:~/.ssh$ ls
id_rsa  id_rsa.pub
git@cloud:~/.ssh$ pwd    
/home/git/.ssh
git@cloud:~/.ssh$ cd ~
git@cloud:~$ pwd
/home/git
4. 安装gitolite服务器

git@cloud:~$ mkdir bin
git@cloud:~$ ls
bin
git@cloud:~$ git clone git://github.com/sitaramc/gitolite
Cloning into 'gitolite'...
remote: Counting objects: 9261, done.
remote: Total 9261 (delta 0), reused 0 (delta 0), pack-reused 9261
Receiving objects: 100% (9261/9261), 3.82 MiB | 741.00 KiB/s, done.
Resolving deltas: 100% (5295/5295), done.
Checking connectivity... done.
git@cloud:~$ ls
bin  gitolite
git@cloud:~$ gitolite/install -to ~/bin
git@cloud:~$ ~/bin/gitolite setup -pk .ssh/id_rsa.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
    (this is normal on a brand new install)
git@cloud:~$
5. 检查gitolite是否正常,成功安装后会自动生成两个仓库,testing用来测试,gitolite-admin用来管理gitolite库。如果出现输入密码的情况的话,说明gitolite运行不正常

git@cloud:~$ ssh git@127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is 98:20:ad:8d:58:e8:67:5c:c0:f7:e8:e7:a7:95:eb:31.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
PTY allocation request failed on channel 0
hello id_rsa, this is git@cloud running gitolite3 v3.6.5-9-g490b540 on git 1.9.1

 R W    gitolite-admin
 R W    testing
Connection to 127.0.0.1 closed.
git@cloud:~$  git clone git@127.0.0.1:gitolite-admin
Cloning into 'gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
Checking connectivity... done.
git@cloud:~$ ls
bin  gitolite  gitolite-admin  projects.list  repositories
6. 添加git用户,只需将信用户的公匙添加到gitolite-admin版本库的Keydir目录下,即完成新用户的添加,之后执行git add命令,将公钥添加到版本库
git@cloud:~$ cd gitolite-admin/
git@cloud:~/gitolite-admin$ ls
conf  keydir
git@cloud:~/gitolite-admin$ git status
On branch master
git@cloud:~/gitolite-admin$ git add .   //执行这一步时请先将用户公钥放在keydir目录下
git@cloud:~/gitolite-admin$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   conf/gitolite.conf
        new file:   keydir/blue.pub

git@cloud:~/gitolite-admin$ git commit -m '添加用户'
*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident name (for <git@cloud.(none)>) not allowed
//出现上述情况时,需添加用户信息,之后重新提交,并推送到服务器
git@cloud:~/gitolite-admin$ git config --global user.email “kstalen@163.com”
git@cloud:~/gitolite-admin$ git config --global user.name "kstalen"
git@cloud:~/gitolite-admin$ git commit -m '添加用户'
git@cloud:~/gitolite-admin$ git push origin master
7. 通过gitolite-admin创建demo版本库
git@cloud:~/gitolite-admin$ vim conf/gitolite.conf
repo gitolite-admin
    RW+     =   git      //将用户改为git

repo testing
    RW+     =   @all

repo demo                  //添加版本库repo
    RW+     =   git blue
git@cloud:~/gitolite-admin$ git add .
git@cloud:~/gitolite-admin$ git commit -m '添加版本库'
[master d0d5a93] 添加用户blue
 2 files changed, 5 insertions(+), 1 deletion(-)
 create mode 100644 keydir/blue.pub
git@cloud:~/gitolite-admin$ git push origin master
Counting objects: 10, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 817 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /home/git/repositories/demo.git/
To git@127.0.0.1:gitolite-admin
   5fcd13c..d0d5a93  master -> master
git@cloud:~/gitolite-admin$ cd ..
git@cloud:~$ ls
bin  gitolite  gitolite-admin  projects.list  repositories
git@cloud:~$
8. 客户端切换到blue用户后git clone代码
root@cloud:~# su blue
blue@cloud:~$   pwd
/home/blue
blue@cloud:~$ cd .ssh
blue@cloud:~/.ssh$ ls
id_rsa  id_rsa.pub  known_hosts
//用私钥登录远端的git服务器,如果能看到远端版本库则说明连接正常
blue@cloud:~/.ssh$ ssh -i id_rsa git@192.168.138.141
PTY allocation request failed on channel 0
hello blue, this is git@cloud running gitolite3 v3.6.5-9-g490b540 on git 1.9.1

 R W    demo
 R W    testing
Connection to 192.168.138.141 closed.
blue@cloud:~/.ssh$ 
//创建本地连接配置文件
blue@cloud:~/.ssh$ vim config
port 22
identityfile ~/.ssh/id_rsa
blue@cloud:~/.ssh$ cd ..
blue@cloud:~$ mkdir temp
blue@cloud:~$ ls
temp
blue@cloud:~$ cd temp/
blue@cloud:~/temp$ git clone git@192.168.138.141:demo.git
Cloning into 'demo'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
blue@cloud:~/temp$ cd demo
blue@cloud:~/temp/demo$ git status
On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)
blue@cloud:~/temp/demo$ 
//到这一步时,客户端正常检出代码,搭建完成,亲们亲自试一下哦!
  • 发布时间:2019-04-05