linux git服务器搭建管理android代码

A、 简要说明
         linux git服务器的搭建这个文档是刚毕业开始工作没多久给公司弄的,最近都在把这些年的一些经验总结一下,唯一遗憾的就是没有保留一些错误以及错误的处理过程。由于这个是实际搭建过程,有些名称不太方便写出来,所以进行修改,可能有些错误

B、搭建目的

基于工作的要求,为了更好的管理项目代码,本次在服务器)面搭建 git 服务器,服务器系统为 Ubuntu 14.04.2 LTS, 客户端机器系统也为 Ubuntu 14.04.2 LTS,当然两者是不同的两台电脑。 服务器端为了将 git 仓库与各个用户分开,专门创建一个 git 用户来存放代码仓库,同时通过 gitosis 工具管理各个用户及其访问仓库的权限。本次的目标是: Git 服务器搭建好后可以通过其他机器或者服务器的其他用户进行代码 clone。

C、搭建步骤

1、服务器端创建git用户以管理和存放代码

2、服务器和客户端安装git相关工具

3、gitosis工具的安装和配置

4、创建一个管理者(manager)来对git仓库进行管理

5、manager如何管理git仓库

6、创建一个新的项目库并为项目的开发人员分配权限

7、chenqw用户对test仓库进行push和clone

 

具体搭建过程================================================================================

一、服务器端创建git用户以管理和存放代码

aaa@server-PC:/home$ sudo adduser git
[sudo] password for telpo:
Adding user `git' ...
Adding new group `git' (1001) ...
Adding new user `git' (1001) with group `git' ...
Creating home directory `/home/git' ...
Copying files from `/etc/skel' ...

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for git
Enter the new value, or press ENTER for the default
Full Name []:Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

除密码外,一路回车。在服务器上创建了 git 用户然后切换至 git 用户来搭建 git 服务器,其实完全可以不用切换至 git 用户,为了操作方便,我还是切换,切换方法 : su git

二、服务器和客户端安装git相关工具

sudo apt-get install git git-core
安装完成后可以通过以下命令查看 git 的版本
git@server-PC:~$ git version
git version 1.9.1
此时 git 服务器安装好,就是这么简单,当然后面更精彩

三、gitosis工具的安装和配置

为了更好的管理访问服务器的各个用户的权限,我们采用 gitosis 工具来管理首先安装 gitosis

git@server-PC:~$ git clone https://github.com/res0nat0r/gitosis.git

此时在当前目录下会有一个 gitosis 文件,就是我们权限管理工具

然后初始化进入 gitosis 目录去初始化我们的权限管理工具
git@server-PC:~$ cd gitosis/
git@server-PC:~/gitosis$ sudo python setup.py install
此时出现如下错误:

原因是缺少 python-setuptools 包, 装下就行
git@server-PC:~/gitosis$ sudo apt-get install python-setuptools
重新初始化我们的 gitosis 工具:
git@server-PC:~/gitosis$ sudo python setup.py install

到此我们已经创建了一个git账户用来存放代码,也准备好一个工具来管理git账号上的代码,为此我们还需要创建一个账户通过gitosis 工具来对git仓库进行权限的管理

四、创建一个管理者(manager)来对git仓库进行管理

1、创建manager账户

aaa@server-PC:/home$ sudo adduser manager
[sudo] password for telpo:
Adding user `git' ...
Adding new group `git' (1001) ...
Adding new user `git' (1001) with group `git' ...
Creating home directory `/home/git' ...
Copying files from `/etc/skel' ...

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for git
Enter the new value, or press ENTER for the default
Full Name []:Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

除密码外,一路回车

2、生成密钥

切换到manager账号

su manager

生成密钥

manager@server-PC:~$ ssh-keygen -t rsa
直接回车得到以下输出

在当前manager用户下会生成一个.ssh 文件夹,里面有个id_rsa.pub文件

3、配置manager用户为git仓库的管理者(通过gitosis工具配置)

将 id_rsa.pub 拷贝到我们服务器的 git 用户上,因为我们gitosis工具也是在这个用户上

scp .ssh/id_rsa.pub git@192.168.0.0:/home/git 

scp 用不了的时候,可以通过 apt 安装 openssh-server openssh-client ,这里的git用户所在服务器的地址要根据自己的来确定,这里随便搞个192.168.0.0来代替

4、通过密匙初始化仓库管理者
在 git 用户(服务器)上执行如下:
git@server-PC:~$ sudo -H -u git gitosis-init < id_rsa.pub    //这个id_rsa.pub是哪个用户的,哪个用户就是管理者,这里是manager用户,完成后会生成一个gitosis-admin.git 仓库,这个仓库专门用来存放其他用户访问git的权限,得到以下即为成功

接着修改一下权限
git@server-PC:~$ sudo chmod
755/home/git/repositories/gitosis-admin.git/hooks/post-update
此时manager正式成为了 git仓库的管理者了

五、manager如何管理git仓库

按照第四部分,会生成一个gitosis-admin.git仓库,这个仓库是用来存放各个用户访问git源码仓库的权限信息,因而要想对git源码仓库进行管理,就要得到这个仓库,而且第四部分已经用manager的密钥进行初始化了,所以manager是有权限获取gitosis-admin.git仓库,并对其维护

1、manager6用户获得 gitosis-admin.git 仓库

manager@server-PC:~$ git clone git@192.168.0.0:gitosis-admin.git
期间要输入密码的时候,就要输入创建 git 用户时的密码,显示如下即为成功:

此时在当前目录下会有一个gitosis-admin 目录

对这两个东西进行修改就可以管理我们的 git 权限,到此已经 telpo 用户已经可以完全掌控我们的 git 了,第六部分讲解一下创建项目库并分配开发人员权限

六、创建一个新的项目库并为项目的开发人员分配权限
这里创建一个 test 项目,项目成员为 chenqw,为chenqw赋予test项目仓库的读写权限。git仓库的管理是通过密钥来进行的,所以任何一个用户想要访问git仓库的内容必须要有密钥

1、chenqw 用户创建密匙,获得密匙的方法和上面一样
chenqw@my-PC:~$ ssh-keygen -t rsa

一直回车,然后得到 .ssh/id_rsa.pub,打开 id_rsa.pub 可以看到最后有一句话 ….. chenqw@my-PC
这个便是我们的用户名以及机器名,我们这个文件就叫这个名字吧,为了好区别
chenqw@my-PC:~$ mv .ssh/id_rsa.pub .ssh/chenqw@my-PC.pub


2、然后chenqw把他的这个密钥给manager,什么方式给都行,manager将chenqw的密钥放到gitosis-admin/keydir/ 中
 

3、将chenqw用户添加到test用户中,并赋予读写权限

修改 gitosis-admin 中的 gitosis.conf 文件(红色除了注释为添加)如下,
[gitosis]
[group gitosis-admin]
members = manager@server-PC
writable = gitosis-admin


[group test] //项目组
members = chenqw@my-PC //文件对应,即除了.pub 前面的字
writable = test //项目库名称,最终为 test.git

4、将修改的gitosis文件和chenqw的key提交到gitosis-admin.git仓库

添加所以文件
manager@server-PC:~/gitosis-admin$ git add .
添加修改信息
manager@server-PC:~/gitosis-admin$ git commit -am "add test project and members"
推到服务器上
manager@server-PC:~/gitosis-admin$ git push origin master
如下即为成功

此时chenqw用户已经可以对git仓库里的test项目代码进行读写了,只是这时候test项目还是空的

七、chenqw用户对test仓库进行push和clone

1、先创建一个目录来放我的代码
chenqw@my-PC:~$ mkdir source_test
chenqw@my-PC:~$ cd source_test/
2、初始化我们的仓库:
chenqw@my-PC:~/source_test$ git init

输出这个表示初始化成功,此时是空仓库
Initialized empty Git repository in /home/chenqw/source_test/.git/
3、添加一个说明文件
chenqw@my-PC:~/source_test$ touch readme.txt
chenqw@my-PC:~/source_test$ git add readme.txt
chenqw@my-PC:~/source_test$ git commit -am "init test git repertory"
输出如下即为成功:

4、chenqw@my-PC:~/source_test$ git commit -am "init tps390 git repertory"
[master (root-commit) cea5753] init test git repertory
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 readme.txt
如果是第一次操作,在commit的时候需要你初始化名字和email后再执行commit命令

输入相关信息即可

git config --global user.name "chenqw"
git config --global user.email "xxxx163.com”

6、接着关联远程仓库:
chenqw@my-PC:~/source_test$ git remote add origin git@192.168.0.0:test.git
chenqw@my-PC:~/source_test$ git push origin master
此时就把仓库建好了,在 git 用户目录下就有了我们的项目仓库:

到此已经完成所有的工作,当然后续要把整个代码搬到仓库里如果添加其他成员则需要该成员提供密匙文件,然后管理员修改 gitosis-admin 仓库,并提交,这时候新成员才可以有权限操作,不管该成员是和服务器处于同一台机器还是不同,操作过程都是一样

八、错误处理

第一个问题 在我安装过程中遇到对多的就是
Cloning into 'gitosis-admin'...
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly

这个问题的原因有很多:
1、 密匙不对
2、 修改 gitosis-admin 后没提交
3、 关联远程仓库的时候 git 服务器路径不对,可以使用
git remote add origin git@192.168.0.0:test.git 或者 git remote add origin git@192.168.0.0:仓库的绝对路径

第二个问题:
error: src refspec master does not match any.
该问题是由于远程的仓库不存在,将本地空仓库提交到远程(只进行了 init, 没有 add
和 commit)

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值