【Gitosis】CentOS下的Git服务器:Gitosis

 【摘要】
        详细介绍如何在CentOS上配置Gitosis        我们很多人知道Git可能是从Github开始的。因为Github是如此流行,几乎所有写代码的人都知道它,以至于一提到Git就以为是Github,其实两者并没有多少关系,只是名字类似而已(这有点像Java和JavaScript)。

 

实际上,Git是一个分布式版本控制软件,原来是Linux内核开发者Linus Torvalds为了更好地管理Linux内核开发而创立的。虽然Git比SVN优秀很多,但它们最初被设计出来的想法是一致的,那就是版本控制。而Github却是一个网站,充当Git公共服务器的作用,只要拥有Github账号的人都可以把自己的项目托管在那里,如果你舍不得花些钱,你的项目是强制公开的。所以,Github就是一个通过Git协议为众多开发者提供代码托管的地方,同时它提供了很多特性,第一次使得大家可以这么公开地讨论起各自的项目。

     上面之所以说这么多,是因为今天要讲的Gitosis有点类似Github的功能。什么意思呢?就是我们可以在自己的服务器上安装Gitosis,那么这台服务器就可以向Github一样对外提供代码托管服务了,这对于很多不愿意把自己的代码公诸于世的公司来说最好不过了。
     这里以CentOS充当服务器为例给大家讲解一下Gitosis的安装和配置。同时,你还需要另外一台PC,当然Linux、Mac主机也是可以的。之所以要两台机器,是因为一台做服务器,另外一台充当客户端。甚至,你可以将所有下面讲的在同一台机器上完成。

【服务端】Gitosis是用Python编写的,所以,在初始化一些环境的时候,要特别注意。通过下面的命令安装所有需要的软件。

yum install -y python python-setuptools git-core
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
      【客户端】软件安装完之后就是做必要的配置。所以,需要在你进行开发的客户端生成ssh公钥来初始化gitosis。注:为了管理方便,我同时把这台CentOS当做服务器和客户端,PC端我会用PC字样标明。因为有一台外网能够访问的服务器可以很方便的管理公钥。如果你把gitosis-admin项目在家里的电脑上管理,一旦你离开家就没办法增加新项目或者添加新用户了。

ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@xxx:/tmp/
      【服务端】下面就利用刚才上传的公钥初始化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)。      【客户端】下面需要在开发机克隆gitosis-admin.git项目,它是用来管理所有git项目及用户的。

git clone git@localhost:gitosis-admin.git #因为是同一台机器,所以可以用localhost
      【客户端】为什么这里可以直接通过clone命令克隆项目,就是因为gitosis-init初始化的时候使用了客户端生成的公钥。在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 公钥文件
     【客户端】现在可以按照这个格式增加新的项目。

[gitosis]
 
[group gitosis-admin]
writable = gitosis-admin
members = username #对应keydir下有一个 username.pub 公钥文件
[group new-project]
writable = new-project
members = newuser #多个用户用空格分开
      在PC端,同样用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之后会自动生成。
    【客户端】在PC端执行下面的命令。

#随便在什么目录都行
 
mkdir new-project
cd new-project
git init
git add .
git commit -a -m "initial new-project"
    【客户端】新建项目之后需要把本地的这个库和服务器上配置的new-project关联起来,执行下面的命令可以完成这个任务,而且gitosis会自动在服务器上生成new-project.git项目。

git remote add origin git@xxx:new-project.git
git push origin master
      这样,本地的项目就和服务器上的项目实现了关联,意味着你拥有了一台自己的git server,你完全可以在别的电脑上克隆刚才添加的new-project.git项目了,也可以随意添加新的用户,记住要用空格隔开,还要上传公钥到keydir目录下并update gitosis-admin项目。        本文转载于: http://my.oschina.net/csensix/blog/184426

CentOS下的Git服务器的更多相关文章

  1. CentOS下搭建Git服务器

    1.首先需要安装Git,可以使用yum源在线安装: [root@localhost Desktop]# yum install -y git 2.创建一个git用户,用来运行git服务 # addus ...

  2. CentOS下搭建Git服务器(基于SSH协议)

    1,安装Git所需依赖包      # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel      # ...

  3. 【转】在Linux下搭建Git服务器

    在 Linux 下搭建 Git 服务器 环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows. ...

  4. CentOs上搭建git服务器

    CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...

  5. CentOS下架设VNC服务器

    CentOS下架设VNC服务器1.什么是VNC服务器?百度百科:VNC (Virtual Network Computer)是虚拟网络计算机的缩写.它 是一款优秀的远程控制工具软件,由著名的 AT&a ...

  6. CentOS下架设Telnet服务器

    CentOS下架设Telnet服务器1.什么是Telnet?来自度娘的解释:Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机 ...

  7. Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

  8. Windows操作系统下搭建Git服务器和客户端。

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

  9. windows 下搭建git服务器,及问题处理。

    最近要做一个源码管理服务器,权衡了一下还是git最适合,搭建服务器前看了网上一些windows下搭建git服务器的帖子,感觉还比较简单,没有太多需要配置的地方,于是开始动手. 我选择的是 gitfor ...

随机推荐

  1. Docker Toolbox常见错误解决方案

    错误1 Error checking TLS connection: Error checking and/or regenerating the certs: There was an error ...

  2. 020:Buffer Pool 、压缩页、CheckPoint、Double Write、Change Buffer

    一. 缓冲池(Buffer Pool) 1.1 缓冲池介绍 每次读写数据都是通过 Buffer Pool : 当Buffer Pool 中没有用户所需要的数据时,才去硬盘中获取: 通过 innodb_ ...

  3. ALSA声卡16_编写ALSA声卡应用程序_学习笔记

    1.体验 (1)ALSA声卡使用体验:使用arecord录音,使用aplay播放,在Alsa-utils里面) 准备: cd linux-3.4.2 patch -p1 < ../linux-3 ...

  4. kafka 高可靠

    1.集群高可靠 ①搭建kafka集群(略) ②重点配置项(每个broker配置相同,只有broker.id不一样) broker.id=1     当前机器在集群中的唯一标识,和zookeeper的m ...

  5. poj 3790 Recursively Palindromic Partitions

    /*摘抄自博客:Recursively Palindromic Partitions Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...

  6. Tkinter Fonts(字体)

    Python GUI - Tkinter Fonts:作为一个tuple的第一个元素是字体家族,一个点的大小,可选择一个字符串,包含一个或更多的粗体,斜体,下划线的样式修饰符,加粗.   最多可能有三 ...

  7. leetcode451

    public class Solution { public string FrequencySort(string s) { var dic = new Dictionary<char, in ...

  8. 【LUA table 移除操作非常慢】

    LUA的表有插入和删除两种操作.插入操作非常快,100000次操作都在0.01S左右,而删除操作在表元素大于10000时却急速变慢,测试如下: t = {} local t1= os.clock() ...

  9. 设置Windows开机自动启动VirtualBox虚拟机系统

    如果常用VirtualBox虚拟机系统的话,设置随开机启动也是很方便的.不需要打开VirtualBox窗口,直接启动VirtualBox虚拟机系统就可以了. 设置开机自启动VirtualBox虚拟机系 ...

  10. quartz简介