Centos下使用gitosis配置管理git服务端

说明:由于条件有限,我这里使用的是同一台centos的,但教程内容基本上通用。
  1.编译安装git git安装教程
  2.安装gitosis
  $ yum install python python-setuptools
  $ git clone git://github.com/res0nat0r/gitosis.git
  $ cd gitosis
  $ python setup.py install
  2.在开发机器上生成公共密钥(用来初始化gitosis)
  $ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作)
  $ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上传你的ssh public key到服务器
  3.初始化gitosis[服务器端]
  $ adduser git # 新增一个git用户(先添加用户组 groupadd git)
  $ su git # 切换倒git用户下
  $ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的,注意放在/tmp目录主要是因为此目录权限所有人都有定权限的
  $ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除.
  4.获取并配置gitosis-admin [客户端]
  $ git clone git@xxx:gitosis-admin.git # 切换到root用户并在本地执行,获取gitosis管理项目,将会产生一个gitosis-admin的目录,里面有配置文件gitosis.conf和一个 keydir 的目录,keydir目录主要存放git用户名
  $ vi gitosis-admin/gitosis.conf # 编辑gitosis-admin配置文件
  如果无法git clone的话,可以使用git clone git@xxx:/home/git/repositories/gitosis-admin.git
  # 在gitosis.conf底部增加
  [group 组名]
  writable = 项目名
  members = 用户 # 这里的用户名字 要和 keydir下的文件名字相一致
  # VI下按ZZ(大写)两次会执行自动保存并退出,完成后执行
  $ cd gitosis-admin
  $ git add .
  $ git commit -a -m “xxx xx” # 要记住的是,如果每次添加新文件必须执行git add .,或者git add filename,如果没有新加文件,只是进行修改的话就可以执行此句。
  # 修改了文件以后一定要PUSH到服务器,否则不会生效。
  $ git push
  如果在git push的时候,遇到错误“ddress 192.168.0.77 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!”,解决为修改/etc/hosts文件,将ip地址与主机名对应关系写进去就可以了。
  注意:这里我们并没有进行任何的修改的,现在只有一个管理git的项目。下面的为新添加项目的配置,大家经常用到的也就是下面的操作的。
  新建项目
  到此步就算完成gitosis的初始化了。接下来的是新建一个新项目到服务器的操作,如第5步中配置gitosis.conf文件添加的是
  [group project1] # 组名称
  writable = project1 # 项目名称
  members = xxx # 用户名xxx一定要与客户端使用的用户名完全一样,否则无权限操作
  提交修改并更新到git server服务端
  $ git commit -a -m “添加新项目project1,新项目的目录是project1,该项目的成员是xxx“ # “”里的内容自定
  $ git push
将新创建的项目提交到git server 上进行登记。以便客户可以操作新项目.
  # 在客户端创建项目目录(客户端,当前用户为 XXX )
  现在回到开发者客户端,上面创建了一个新项目project1并提交到了git server 。我们这里就创建此项目的信息.注意 项目名称 project1要与gitosis.conf文件配置一致,
  $ mkdir /home/用户/project1
  $ cd /home/用户/project1
  $ git init
  $ git add . # 新增文件 留意后面有一个点
  $ git commit -a -m “初始化项目project1″
  # 然后就到把这个项目放到git server服务器上去.
  $ git remote add origin git@xxx:project1.git # xxx为服务器地址
  $ git push origin master
  # 也可以把上面的两步合成一步
  $ git push git@xxx:project1.git master
  说明:如果在执行 git push origin master 的时候,提示以下错误: error: src refspec master does not match any. error: failed to push some refs to 'git@192.168.0.77:pro2.git' 这是由于项目为空的原因,我们在项目目录里新创建一个文件。经过->add -> commit -> push 就可以解决了
  $ touch a.txt
  $ git add a.txt
  $ git commit -a -m 'add a.txt'
  $ git push
  ------------------------------------------------------------------------------------------------ 如果在git clone的时候遇到“
  error: cannot run ssh: No such file or directory - cygwin git
  ”错误,则表示本机没有安装ssh命令。安装方法请参考:http://blog.haohtml.com/archives/13313 有时候我们要更换电脑来重新开发项目。这个时候,只需要将id_rsa私钥放在home目录里的.ssh目录里就可以了。(有时候一个人开发多个项目,这时候可能会提示id_rsa文件已经存在。不太清楚这里如何解决???) 续篇:git下添加新项目及用户
  ====================================================
  三、常见问题
  首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755
  1. git操作需要输入密码
  原因
  公密未找到
  解决
  上传id_rsa.pub到keydir并改为'gitosis帐号.pub'形式,如miao.pub。扩展名.pub不可省略
  2. ERROR:gitosis.serve.main:Repository read access denied
  原因
  gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub
  解决
  使keydir的名称与gitosis中members所指的名称一致。 改为members = foo 或 公密名称改为foo@bar.pub

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-31 21:24:43

Centos下使用gitosis配置管理git服务端的相关文章

Git服务端和客户端安装过程

Git是一个开源的分布式的版本控制系统,由于git分布式体系结构,用户完全可以脱离git服务端在本地查看,编写和提交代码,而且Git的速度也非常快,适合大型,分布式的项目管理.下面是Git服务端和客户端安装的详细步骤. 1.物理环境 Git-server    Centos 5.8   git-1.8.3.tar.gz Git-client    Windows 7    SourceTreesetup.exe 2.Git服务端安装 2.1在http://pan.baidu.com/share/

git post-receive 钩子部署服务端代码立马重启生效

本文以部署基于 OpenResty 的服务端程序为例来介绍我的做法. 技术信息     OS: CentOS 6.3    服务器软件: OpenResty    开发语言: Lua 名词解释     服务器: 服务器硬件 + OS    服务端程序: OpenResty 在服务器中的进程    服务端代码: 部署在 OpenResty 中的 Lua 源程序 一.git 服务端钩子类型     pre-receive    在客户端推送时最先执行,可以用它来拒绝客户端的推送.    update

git简单实现服务端迁移与备份的步骤

想要达到的目的是,git服务端代码,迁移或者说是copy一份,原来的commit记录都保留下来,二个git服务端之间,相互不受影响. 1,从老的git服务端clone一份裸版本库 # git clone --bare git@192.168.10.202:develop/test.git   2,建立新的git服务端,在这里就不详细说了,不是本文重点,git@192.168.10.201:develop/test1.git 3,以本地为镜像,将代码提交到新的git服务端 # cd test.gi

activex-VC++环境 ActiveX winSock 怎么写客户端 服务端

问题描述 VC++环境 ActiveX winSock 怎么写客户端 服务端 请问在VC++环境下 用AtiveX 怎么写服务端 客户端控件 解决方案 新建一个atl activex项目 然后参考如下代码:http://blog.csdn.net/yue7603835/article/details/6948233 解决方案二: http://www.jb51.net/article/47637.htm 解决方案三: Activex主要用在IE浏览器.

svn配置管理问题,一次提交到服务端多个目录下

问题描述 svn配置管理问题,一次提交到服务端多个目录下 请问各位大侠,我svn本地有一个项目工程,想commit到服务端的多个不同目录里,如何实现? 我现在每次改完程序后,在本地复制多个,然后依次提交,好麻烦-有没有好办法? 解决方案 右击主目录,点击提交 解决方案二: 有个办法可以实现,但安装配置比较麻烦. 要实现你的想法,关键在于要把每个SVN库的权限文件分开存放,而不能是在同一个权限文件中存放所有版本库的权限.这样才有可能把某个权限文件的控制权限只开放给某个SVN管理员. 按照这个思路,

CentOS Rsync服务端与Windows cwRsync客户端实现数据同步

系统环境:CentOS 6.3 rsync服务器 windows server 2003 R2 cwRsync客户端 IP地址分别为:10.1.4.44服务器.10.1.4.42客户端 实现目的: cwRsync客户端每天凌晨02:30钟自动同步Rsync服务端/data/share目录中的数据到D:\data目录 所需软件包: rsync-3.0.9.tar.gz   cwRsync_4.0.5_Installer.zip 一.rsync服务器安装 rysnc的官方网站:http://rsyn

CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

CentOS 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用.正如其名称所暗示的, LEMP 包是由 Linux.nginx.MariaDB/MySQL 和 PHP 组成的.在传统的 LAMP 包中使用的 Apache HTTP 协议服务器性能低下而且难于大规模集群,相比来说 nginx 的高性能及轻量级等特性,正是其的替代方案. MariaDB 是一款社区支持驱动

CentOS 6.3 Rsync客户端与Win2003 cwRsyncServer服务端实现数据同步_服务器其它

说明: 1.cwRsyncServer服务端 系统:Windows Server 2003 IP地址:192.168.21.134 数据存放目录:D:\osyunwei 2.Rsync客户端 系统:CentOS 6.3 IP地址:192.168.21.132 同步的目录:/osyunwei 实现目的: Rsync客户端每天凌晨3:00自动同步cwRsyncServer服务端D:\osyunwei目录中的数到/osyunwei目录 一.cwRsyncServer服务端配置 附件: cwRsyncS

CentOS Rsync服务端与Windows cwRsync客户端实现数据同步配置方法_服务器其它

说明: 1.Rsync服务端 系统:CentOS 5.5 IP地址:192.168.21.160 数据存放目录:/data/osyunwei 2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:\osyunwei 实现目的: cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/data/osyunwei目录中的数据到D:\osyunwei目录 一.Rsync服务端配置 1.关闭SELINUX vi /etc/