【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. Joker的自动化之路

    系统篇     颜色 黄绿+金色 使用mac系统常用工具(包含svn,vim,crt,redis,php5,网络性能命令) 计算机硬件         linux发展史            cent ...

  2. jaxp使用笔记

    XML文件的解析技术有DOM和SAX方式,在Android中还有pull解析方式,这里不再讨论 DOM解析的方式和js中的DOM操作是一致的,DOM解析一次将文档加载入内存建立树型模型,但是如果XML ...

  3. sram的读和写

    sram的型号:ISSI IS61LV25616 -10TL 以上是数据手册上的. 对sram的认识:SRAM不需要刷新电路即能保存它内部存储的数据.而DRAM(Dynamic Random Acce ...

  4. iOS开发API常用英语名词

    iOS开发API常用英语名词 0. indicating 决定 1.in order to 以便 2.rectangle bounds 矩形尺寸 3.applied 应用 4.entirety 全部 ...

  5. 未注册在本地的Windows 2008 / Windows 7 X64的:'Microsoft.Jet.OLEDB.4.0'提供

    在服务器上部署项目的时候遇到如下错误:'Microsoft.Jet.OLEDB.4.0'提供在本地没有注册 服务器是WIN2008 导致这个错误主要有几个原因: 1,服务器上没有装MS Excel中的 ...

  6. 推荐一篇mysql优化干货

    淘宝的技术一直比较前沿,特别是LVS的作者加入淘宝后,淘宝和阿里的开源做的有声有色,君不见淘宝出了tengine,tairs,tddl,hsf(soa框架,未开源),tfs(小文件存储系统)等等,阿里 ...

  7. Swift 动画片段

    UIView.transitionWithView( self.WeatherDetailsView, duration: 0.7, options: .TransitionCrossDissolve ...

  8. leetcode697

    public class Solution { public int FindShortestSubArray(int[] nums) { //先找到最大频度的数字都有哪些,加入到一个集合中 var ...

  9. **Python中的深拷贝和浅拷贝详解

    Python中的深拷贝和浅拷贝详解   这篇文章主要介绍了Python中的深拷贝和浅拷贝详解,本文讲解了变量-对象-引用.可变对象-不可变对象.拷贝等内容.   要说清楚Python中的深浅拷贝,需要 ...

  10. 模板导入 {include 模块名}

    模板导入可以和上面讲的模板继承一起使用, 可以使用模板的批量复制和导入 下面举一个例子 我们先写一个需要导入模块的html  tp1 {% extends 'master.html' %} {% bl ...