【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. 导入和导出eclipse代码格式化模板

    导入和导出eclipse代码格式化模板 导出格式化代码模板:

  2. docker 学习(十一) 镜像常用命令

    1 创建账户,创建仓库   首先在dockerhub上有自己的账户,然后创建一个repository(如上图), 然后创建一个名字为robinfei/consumer的仓库. 2  本地镜像打标签(比 ...

  3. PyQt 5菜单和工具栏

    QMainWindow类提供主要应用程序的窗口,有添加状态栏.工具栏.菜单栏等功能 状态栏 self.statusBar().showMessage('Ready') # 创建一个状态栏 # 状态栏显 ...

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

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

  5. oracle 存储过程 建表插值等

    建表.插值的procedure create or replace procedure CREATE_EMP is v_createsql ); v_insertsql ); begin v_crea ...

  6. 阶段性总结(PHP-Session)

    PHP Session PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置.Session 变量存储单一用户的信息,并且对于应用程序中的 ...

  7. verilog 之数字电路 寄存器,触发器。

    我一直听说没有由code到circuit就只是入门了.实在没办法了.我想了一招,一个一个的写,然后看RTL,然后分析.这是第一篇. 1.触发器. 没有复位,置位.posedge clk 是触发沿时钟. ...

  8. Java 编译???

    如果是在命令行下,编译就是 javac a.java 如果有错误,那么命令运行之后会显示错误 但是在eclipse下,我都是直接点击运行按钮的,如果有错误,在编程是就提示了,那么是怎么编译的呀 大的工 ...

  9. C#枚举(enum)、常量(const)和readonly

    const修饰的是(类)静态常量,,其值是在编译期间确定的readonly修饰的是动态常量. A.C#中的const和readonly的区别 C#中定义常量有两种方式,一种叫做静态常量,使用“cons ...

  10. PHP根据问题追踪代码技巧一

    1.问题描述: 2.E:\html\pim\php_aspire-mcloud\module\pim\controller\Configure.class.php public function po ...