redmine整合GIT版本库
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版本库的更多相关文章
- git 版本库拆分和subtree用法
git 版本库拆分 原文地址: https://segmentfault.com/a/1190000002548731 程序员最爽的事情是什么?删删删!所有项目本来都很苗条的,时间长了难免有一些越搞越 ...
- 萌新笔记——git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解
由于操作不当,导致git版本库出了大问题,如下所示: error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e ...
- GIT版本库回滚【图文版】
git 版本库回滚,在实际开发过程中总会遇得到 1. 先找出需要回滚的commitid git log -3 2. 重置本地版本库到指定commitid, 注意:本地改动将丢失 ...
- Git版本库
创建版本库:git init db 只要用git init db 就可以很容易创建一个空的Git版本库. Git版本库创建好之后,在版本库的目录下有一个.git的子目录中有几项内容,其中注意三项: 1 ...
- git 版本库回滚(转载)
From:http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html From: http://www.tech126.com ...
- hg(Mercurial)版本库迁移到git版本库
这几天没事干净搞迁移了,迁移完MVC又迁移版本库,还把工作电脑迁移了一下,开始用Win8.1了.这个迁移主要是因为实在不想在工作电脑上又装git又装hg了,点个右键出来一大堆菜单,况且现在git已经成 ...
- Git版本库创建(包含文件权限设置 Linux环境下)
确保git服务已安装成功,如果没有安装git服务查看:Git源码安装 Linux指定安装目录 1.创建git用户,并设置密码.并禁止git用户通过shell登录服务器(注意如果需要安装gitolite ...
- Git版本库的创建(Ubuntu)
在Ubuntu上学习Git随笔. 一. git 仓库的安装 git 在终端用git命令查看Ubuntu是否安装git版本库,如果没有安装,最新版本(Ubuntu18.04)会提示用下面命令进行安装. ...
- git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解
由于操作不当,导致git版本库出了大问题,如下所示: error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e ...
随机推荐
- 关于springMVC+Mybatis jar包详解
1.Aopalliance.jar: 这个包是AOP联盟的API包,里面包含了针对面向切面的接口,通常spring等其它具备动态织入功能的框架依赖此包. 2.aspectjweaver-1.7.1.j ...
- 【UWP】解析GB2312、GBK编码网页乱码问题
在WebHttpRequest请求网页后,获取到的中文是乱码,类似这样: <title>˹ŵ��Ϸ���������� - ��̳������ - ˹ŵ��Ϸ����</title ...
- jpeg huffman coding table
亮度DC系数的取值范围及序号: 序号(size) 取值范围 0 0 1 - ...
- Quick Cocos (2.2.5plus)CoinFlip解析(MenuScene display AdBar二次封装)
转载自:http://cn.cocos2d-x.org/tutorial/show?id=1621 从Samples中找到CoinFlip文件夹,复制其中的 res 和 script 文件夹覆盖新建工 ...
- Python绘图
1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import numpy as np import matplotlib as mpl import mat ...
- Python购物车程序
1.要求用户输入工资,然后打印购物菜单 2.用户可以不断的购买商品,直到钱不够为止 3.退出时格式化打印用户已购买的商品和剩余金额 salary = int(input("请输入你的工资:& ...
- MySQL 权限与安全
一.MySQL权限系统通过两个阶段进行认证: (A) 对用户进行身份认证,IP地址和用户名联合, (B) 对合法用户赋予相应权限,权限表在数据库启动的时候载入内存中. 二.在权限的存取过程中,会用到& ...
- HTML CSS 特殊字符表(转载)
转载地址:http://blog.csdn.net/bluestarf/article/details/40652011 转载原文地址:http://zhengmifan.com/news/noteb ...
- 转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用
一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得 ...
- 一对一还是一对多? MVP设计前提
设计MVP之前,先要确定好以下模块之间是一对多还是一对一的关系: View ---> Presenter --> Model --> Interface(URL) 就是一个View只 ...