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 ...
随机推荐
- vim 编辑器的光标操作
vim中最简单的移动光标的方式是使用使用方向键操作,但这种方式的效率底下,更高效的方式是使用快捷键,常用的快捷键如下表所示. 快捷键 功 ...
- Go收藏
Go项目收藏 电子书 1.Go Web 编程 2.Go入门指南(the-way-to-go_ZH_CN) 3.Go语言圣经(中文版) Go by Example 中文 一些Go英文电子书 High P ...
- C和指针 第十六章 习题
16.8 计算平均年龄 #include <stdlib.h> #include <stdio.h> #define MAX_LEN 512 int main() { int ...
- Java课程设计--山寨版QQ
Java课设要求做一个聊天通讯窗口,索性直接照着QQ撸了一个Demo出来 界面高仿qq,初学JAVA,技术比较渣,不喜勿喷 线程开的比较多性能不是太好,一般电脑开两个客户端聊天就卡卡的 先上图 使用方 ...
- 一堆LCT板子
搞了一上午LCT,真是累死了-- 以前总觉得LCT高大上不好学不好打,今天打了几遍感觉还可以嘛= =反正现在的水平应付不太难的LCT题也够用了,就这样好了,接下来专心搞网络流. 话说以前一直YY不出来 ...
- C#数字日期装换为中文日期
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- 关于清除arp 缓存的那点事儿
在Linux下,清除arp缓存表,例如: arp -d 10.0.3.6 我们可以用上面这条命令清除某一条记录,也可以用 arp -n |awk '/^[1-9]/{print "arp - ...
- 文件权限:普通(r、w、x)和特殊(s、t)
linux中,常常涉及到权限的问题.文件的权限有3组,owner,group,other,每一组都有rwx三种设置.r(4):可读:w(2):可写:x(1):可执行.我们在执行shell命令ls - ...
- Docker - 入门
术语 1. 镜像(image)与容器(container) 镜像是指文件系统快照或tar包. 容器是指镜像的运行态(时) 2.宿主机管理 设置/配置一台物理服务器或虚拟机,以便用于运行Docker容器 ...
- Reverse Core 第三部分 - 21章 - Windows消息钩取
@author: dlive @date: 2016/12/19 0x01 SetWindowsHookEx() HHOOK SetWindowsHookEx( int idHook, //hook ...