redmine整合GIT版本库

 

服务器的环境:

Ubuntu 11.10 64位

Redmine 1.4.5.stable.10943

git version 1.7.5.4 + gitolite

前言:由于redmine的版本比较低,所以新版本的配置方法有可能有差异。请实践者留意。

redmine和git的安装过程掠过。

由于redmine中GIT插件自身对文件读写权限的限制,所以一般有2种处理方式:

1)修改已经存在的GIT版本的文件读写权限:改为redmine运行用户可以访问;

2)将GIT版本库以redmine运行用户的身份,创建在redmine安装目录中。

这2种方式,对于git+gitolite已经在运行的环境,都不适合。

所以,我们解决的思路是:以redmine运行用户身份,在redmine中创建一个新的版本库。这个版本库作为目前已经存在版本库的镜像,专门给redmine来读取变更历史。开发团队日常的提交,仍然提交到原来的版本库。利用git的hooks,将原来版本库的更新,同步到redmine里面的镜像版本库。

操作步骤:

1 在gitolite中添加redmine运行用户

例如:redmine采用apache整合的方式,默认运行用户为www-data。以www-data用户,运行ssh-keygen,生成ssh key。将~/.ssh/id_rsa.pub文件,拷贝到gitolite管理目录的keydir文件夹(需要重命名.pub公钥文件)。

cp ~/.ssh/id_rsa.pub /path/to/gitolite/admin/keydir/redmine.pub

修改gitolite的gitolite.conf配置文件,将redmine用户添加到目标版本库。

2 在redmine安装目录中创建镜像版本库

以redmine运行用户(如www-data),进入redmine安装目录,创建git项目目录。

mkdir git
cd git
git clone --mirror gituser@repo-path/repo-name.git

如果clone时,提示:

R access for leviathan/leviathan2-android DENIED to www-data
fatal: The remote end hung up unexpectedly

说明第一步为git添加用户和权限的步骤有错误,要返回检查一下。

3 修改原来版本库的hooks(*是原来的版本库,不是新建的镜像*)

切换操作系统用户到安装和创建git版本库的user

sudo su git-user-name

进入原来项目版本库目录,修改hooks文件

cd /repo-path/repo-name.git/hooks
cp post-receive.sample post-receive

修改post-receive脚本,添加:

/usr/bin/git push --mirror /repo-path-to-mirror/repo-name.git

4 修改镜像版本库的访问权限和添加原来git用户到redmine运行用户组

以redmine运行用户(如:www-data),设置版本库:

cd /path-to-mirror-repo/repo-name.git
git config core.sharedrepository 0644

以root用户,将git用户添加到redmine运行用户组

groupmod -aG www-data gituser

5 测试

在redmine中新建一个git版本库,填入镜像版本库的路径。在“版本库”Tab标签中,可以看到版本库的内容。测试git hooks:在本地开发机的git中,向版本库做一次提交。再打开redmine,看能否看到新提交的内容。

redmine整合GIT版本库的更多相关文章

  1. git 版本库拆分和subtree用法

    git 版本库拆分 原文地址: https://segmentfault.com/a/1190000002548731 程序员最爽的事情是什么?删删删!所有项目本来都很苗条的,时间长了难免有一些越搞越 ...

  2. 萌新笔记——git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解

    由于操作不当,导致git版本库出了大问题,如下所示: error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e ...

  3. GIT版本库回滚【图文版】

    git 版本库回滚,在实际开发过程中总会遇得到   1. 先找出需要回滚的commitid     git log -3   2. 重置本地版本库到指定commitid, 注意:本地改动将丢失     ...

  4. Git版本库

    创建版本库:git init db 只要用git init db 就可以很容易创建一个空的Git版本库. Git版本库创建好之后,在版本库的目录下有一个.git的子目录中有几项内容,其中注意三项: 1 ...

  5. git 版本库回滚(转载)

    From:http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html From: http://www.tech126.com ...

  6. hg(Mercurial)版本库迁移到git版本库

    这几天没事干净搞迁移了,迁移完MVC又迁移版本库,还把工作电脑迁移了一下,开始用Win8.1了.这个迁移主要是因为实在不想在工作电脑上又装git又装hg了,点个右键出来一大堆菜单,况且现在git已经成 ...

  7. Git版本库创建(包含文件权限设置 Linux环境下)

    确保git服务已安装成功,如果没有安装git服务查看:Git源码安装 Linux指定安装目录 1.创建git用户,并设置密码.并禁止git用户通过shell登录服务器(注意如果需要安装gitolite ...

  8. Git版本库的创建(Ubuntu)

    在Ubuntu上学习Git随笔. 一. git 仓库的安装 git 在终端用git命令查看Ubuntu是否安装git版本库,如果没有安装,最新版本(Ubuntu18.04)会提示用下面命令进行安装. ...

  9. git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解

    由于操作不当,导致git版本库出了大问题,如下所示: error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e ...

随机推荐

  1. 关于springMVC+Mybatis jar包详解

    1.Aopalliance.jar: 这个包是AOP联盟的API包,里面包含了针对面向切面的接口,通常spring等其它具备动态织入功能的框架依赖此包. 2.aspectjweaver-1.7.1.j ...

  2. 【UWP】解析GB2312、GBK编码网页乱码问题

    在WebHttpRequest请求网页后,获取到的中文是乱码,类似这样: <title>˹ŵ��Ϸ���������� - ��̳������ -  ˹ŵ��Ϸ����</title ...

  3. jpeg huffman coding table

    亮度DC系数的取值范围及序号:                                                               序号(size) 取值范围 0 0  1 - ...

  4. Quick Cocos (2.2.5plus)CoinFlip解析(MenuScene display AdBar二次封装)

    转载自:http://cn.cocos2d-x.org/tutorial/show?id=1621 从Samples中找到CoinFlip文件夹,复制其中的 res 和 script 文件夹覆盖新建工 ...

  5. Python绘图

    1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import numpy as np import matplotlib as mpl import mat ...

  6. Python购物车程序

    1.要求用户输入工资,然后打印购物菜单 2.用户可以不断的购买商品,直到钱不够为止 3.退出时格式化打印用户已购买的商品和剩余金额 salary = int(input("请输入你的工资:& ...

  7. MySQL 权限与安全

    一.MySQL权限系统通过两个阶段进行认证: (A) 对用户进行身份认证,IP地址和用户名联合, (B) 对合法用户赋予相应权限,权限表在数据库启动的时候载入内存中. 二.在权限的存取过程中,会用到& ...

  8. HTML CSS 特殊字符表(转载)

    转载地址:http://blog.csdn.net/bluestarf/article/details/40652011 转载原文地址:http://zhengmifan.com/news/noteb ...

  9. 转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用

    一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得 ...

  10. 一对一还是一对多? MVP设计前提

    设计MVP之前,先要确定好以下模块之间是一对多还是一对一的关系: View ---> Presenter --> Model --> Interface(URL) 就是一个View只 ...