一、安装Git
yum install git
二、安装Gitosis
【服务端】Gitosis是用Python编写的,所以,在初始化一些环境的时候,要特别注意。通过下面的命令安装所有需要的软件。
依次运行下面的命令:
yum install -y python python-setuptools git-core
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
注:使用python setup.py install,出现TypeError: init() takes exactly 2 arguments (4 given);
原因:
安装setuptools的requirements.py版本不对
解决办法:
pip install setuptools==33.1.1
再次使用python setup.py install即可
三、配置Gitosis
1.在客户端生成ssh公钥
ssh-keygen -t rsa
2.把生成的公钥上传到服务器的tmp文件夹中(windows系统保存到用户目录下的“.ssh”文件夹中)
3.在服务端利用刚刚上传的公钥初始化gitosis
#新建一个git用户
useradd -m git
su - git
gitosis-init</tmp/id_rsa.pub
这样会在/home/git下面生成gitosis和repositories两个目录,后者即为存放公共库的目录。确保/home/git/repositories/gitosis-admin.git/hooks/post-update具有执行权限(755)。
四、配置git项目和用户
1.在客户端克隆gitosis-admin.git项目,它是用来管理所有git项目及用户的。
git clone git@xxx.xxx.xxx.xxx:gitosis-admin.git
注:为什么这里可以直接通过clone命令克隆项目,就是因为gitosis-init初始化的时候使用了客户端生成的公钥。
2.客户端在gitosis-admin项目下有一个gitosis.conf文件和一个keydir目录。gitosis.conf用来配置git项目和用户,keydir存放用户的公钥,这里的公钥对命名有严格要求,“用户名.pub”,必须以.pub后缀结尾。gitosis.conf的格式如下:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = username #对应keydir下有一个 username.pub 公钥文件只写pub文件前面的用户名
3.修改gitosis.conf配置多个项目
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = username #对应keydir下有一个 username.pub 公钥文件
[group new-project]
writable = new-project #项目名称,就是文件夹名称
members = newuser #多个用户用空格分开
4.在新的客户端,同样用ssh-keygen命令生成公钥和私钥,并把公钥上传到keydir目录下,重命名为newuser.pub,更新gigosis-admin项目。
#在CentOS机器上克隆的gitosis-admin项目下执行下面的命令
git add .
git commit -a -m "add newuser"
git push
完成之后,服务器就已经做好了接受新项目的准备。这个时候服务器端还不会生成new-project.git项目,等PC端push之后会自动生成。
五、客户端创建新git仓库,并上传到服务端
1.在PC端执行下面的命令。
mkdir new-project
cd new-project
git init
git add .
git commit -a -m "initial new-project"
2.客户端新建项目之后需要把本地的这个库和服务器上配置的new-project关联起来,执行下面的命令可以完成这个任务,而且gitosis会自动在服务器上生成new-project.git项目。
git remote add origin git@xxx.xxx.xxx.xxx:new-project.git
git push origin master
这样,本地的项目就和服务器上的项目实现了关联,意味着你拥有了一台自己的git server,你完全可以在别的电脑上克隆刚才添加的new-project.git项目了,也可以随意添加新的用户,记住要用空格隔开,还要上传公钥到keydir目录下并update gitosis-admin项目。
六、服务端卸载gitOSis
使用--record选项再次安装它:
python setup.py install --record uninstall.txt
这将产生一个包含所有安装文件的文本文件。 然后删除它们。
cat uninstall.txt | xargs rm -rf
要删除实际的gitosis文件,你需要将它们从git所在的目录中删除。 通常它会在/ usr / local / bin中,但是如果你使用像homebrew或macports这样的软件包安装程序,它可能在别的地方。 要了解git的安装位置,请在terminal窗口中input:
which git
这将告诉你在哪里安装git,这是gitosis应该在哪里。
现在cd到该目录,你应该能够列出并删除文件,如下所示:
ls gitosis* rm gitosis*
这应该是你需要做的一切。