在自己服务器上用gitolite管理代码仓库
Posted 苏导
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在自己服务器上用gitolite管理代码仓库相关的知识,希望对你有一定的参考价值。
简述
在小型团队或公司项目中,一般都会有自己的服务器,而将项目代码放在服务器上管理,开发人员通过网络可以访问。这里主要对如何在自己的服务器上新建git代码仓库和管理。这里代码服务器系统用的是Linux(Ubuntu和Debian),客户端(团队开发人员电脑)用的是Win10系统。
因为是技术开发团队,所以使用gitolite作为git服务管理的工具(可以控制具体repo甚至branch的对于开发者的权限)。关于gitolite可以参考使用Gitolite搭建轻量级的Git服务器。
配置步骤
因此实际上git代码仓库创建,是需要Server和Client都相互协商进行的,而一般Server上的操作是交给运维管理人员来做。
具体过程
客户端git安装与key生成
这里客户端用的是Windows,首先安装git,直接下载git for windows软件进行安装即可,然后在Windows系统的任意的目录下,右键单击就可看到“Git Bash Here”的选项,
选择后就会进入git bash命令窗口了:
在该命令窗口下,需要进行配置和生成SSH public key。
配置用户与邮件名:
$git config --global user.name "XiaoSu"
$git config --global user.email "Xiaosu@126.com"
这个配置的客户端的用户和邮件名称,会在后续的git提交过程中显示,可以表明提交的用户和信息。
接下来是生成Key:
$ssh-keygen // 注释:也可以用$ ssh-keygen -t rsa -C XiaoSu
这个过程会需要输入一些确认信息,可以设置私钥的密码等,也可以不设置私钥密码,这个看自己的情况来定。
生成的Key在windows下一般是在“C:\\Users\\Administrator.ssh”目录下,
这里的id_rsa是本地私钥,需要保密,不能泄露,而id_rsa.pub是公钥,需要分发交给git服务器管理员放到git服务器上的,通过这一套key后续才能正确的通过SSH去访问服务器。
这时候需要将这个生成的id_rsa.pub重新命名一下(因为所有客户端生成的public key的文件名称都一样,这时候可以将id_rsa.pub重命名为XiaoSu.pub,便于后面在服务器上对不同团队成员进行管理)。然后同样在git bash中,使用scp命令将本地windows上重命名了的XiaoSu.pub复制到服务器上(如果windows用户没有权限,可以将XiaoSu.pub交给管理员去处理即可)
$ scp XiaoSu.pub root@192.168.1.9:/tmp
这里是将Windows本地的XiaoSu.pub放到了我自己的192.168.1.9服务器的root账户的/tmp目录下,这个过程需要输入自己root账户的密码才行的。
服务器端git与gitolite安装配置等
首先登陆自己的Linux服务器(直接在服务器端操作,或者在远程使用SSH登陆等方式),首先需要安装git:
# apt-get update
# apt-get install git -y
然后添加git账户(单独使用一个git账户来管理所有git相关的东西),并接着切换到git用户下:
# useradd git -d /home/git -m -s /bin/bash
# su git
$ cd ~
此时已经位于/home/git,git user,此时需要安装gitolite,因此在/home/git下创建两个目录,一个bin用于gitolite安装路径,一个src用于放置gitolite源码,
$ mkdir -p $HOME/bin
$ mkdir -p $HOME/src
此时切换到src目录下并从github clone下来gitolite的源码:
$ cd src
$ git clone http://github.com/sitaramc/gitolite
然后通过源码将gitolite安装到bin目录下:
$HOME/src/gitolite/install -to $HOME/bin
这样,gitolite就安装好了。
之前从我的Windows客户端复制了public key到服务器的/tmp目录下了,此时需要设置这个SSH public key,
$HOME/bin/gitolite setup -pk /tmp/XiaoSu.pub
随后就会看到在/home/git目录下自动生成了projects.list文件和repositories目录(repositories下会默认有gitolite-admin.git和testing.git两个仓库了)。
客户端clone gitolite-admin并管理git仓库权限
此时回到windows客户端,用如下命令clone刚才服务器上生成的gitolite-admin仓库:
$ git clone git@192.168.1.9:gitolite-admin.git
此时就看到clone下来的gitolite-admin有如下两个文件夹:
其中conf里面是一个配置文件,用于配置不同仓库的不同团队成员的访问权限,而keydir是所有客户端的public key。
新增一个代码仓库
在clone了gitolite-admin仓库的客户端,是整个git服务器仓库的管理者(只有管理者才能clone gitolite-admin仓库,其他成员都不能)。在clone下来的gitolite-admin中,修改conf目录下的gitolite.conf文件,比如在末尾加上:
repo host-testing
RW+ = XiaoSu
然后将gitolite-admin的改动用git add…, git commit…, git push等git常用操作更新到服务器,此时在服务器的/home/git/repositories下面就会自动增加了host-testing.git的仓库,此步骤为在gitolite里注册新项目。
仍然继续在任意的客户端,准备好放入git服务器进行维护管理的代码或文档等资料,可以是完全新建的项目,也可以是之前的旧的git仓库项目。
**如果是新项目:**需要在项目根目录下使用如下命令:
$ git init
此时就会看到根目录下生成了.git目录了。
**如果是旧的git项目:**就不需要使用git init命令,而是需要使用:
$ git remote rm origin
断开链接到旧服务器地址的远程仓库。
然后使用如下命令将该项目链接到服务器上的刚刚新建的host-testing远程仓库,并push资料上去:
$ git remote add origin git@192.168.1.9:host-testing.git
$ git add .
$ git commit -m "Initial Revision"
$ git push --set-upstream origin master
接下来就可以供团队进行协作开发和维护了。
以上是关于在自己服务器上用gitolite管理代码仓库的主要内容,如果未能解决你的问题,请参考以下文章