项目

常规

个人资料

操作

如何操作:轻松地将一个(SSH加密的)GIT仓库集成到redmine

范围

本指南将展示如何将GIT仓库集成到redmine项目中,以及如何保持仓库更新。

先决条件

  • redmine目录的所有者需要一个SSH密钥,并且需要(读取)访问要集成到redmine中的仓库。
  • 需要一个目录来克隆GIT仓库。
  • redmine必须找到GIT的二进制文件,这意味着需要安装GIT。您可以在redmine中的“管理 > 仓库”设置中检查此设置。如果出现绿色的勾选标记,则表示一切正常。如果不这样做,您必须首先安装GIT,例如通过“apt-get install”

示例配置

为了更好地理解本指南,我将使用以下配置

  • 我的redmine所有者名为“redmine”
  • 我的redmine主目录是"/var/lib/redmine",我将在其中创建一个名为“repos”的子目录,用于克隆仓库。因此,此目录的完整路径为"/var/lib/redmine/repos/"
  • 我的repo的URL为"git.my-url.com",名称为"my_repo",因此完整URL为":my_repo"

步骤 1:克隆仓库

首先,我们需要克隆仓库作为镜像(而不是裸仓库)。镜像仓库没有工作文件,只包含提交信息,这正是redmine所需要的所有内容。

我们切换到redmine用户,并在选择的目录中克隆仓库。

sudo -su redmine
cd /var/lib/redmine/repos/
git clone --mirror [email protected]:my_repo my_repo

现在所有仓库信息都已存放在磁盘上,但redmine对此一无所知。因此,在下一步中,我们将改变这一点。

步骤 2:将仓库引入redmine

在redmine中,我们打开“管理 > 项目 -> 仓库”对话框。您也可以通过“项目 -> 设置 -> 仓库”访问此对话框。在那里,我们添加一个新的仓库

Type: GIT
Main-repository: check this if the cloned repository is you main repository, if not leave it unchecked.
Name (redmine intern): I suggest to choose the same name as the repository, e.g. "my_repo" 
Path: Absolute path of the repository, e.g. "/var/lib/redmine/repos/my_repo" 

现在redmine知道了这个仓库。如果您在项目的“仓库”标签页中打开,您将看到仓库树、最后提交等信息。

注意:当你打开对话框时,redmine会从上次打开此对话框以来抓取所有更改集,包括 本地仓库和redmine数据库。特别是对于大型仓库,首次打开对话框可能需要很长时间。请不要取消进度,只需让redmine工作直到完成。 可能的错误:当打开对话框时,redmine 不会从GIT中获取新的提交!这意味着,如果你不更新本地GIT仓库,你永远不会在redmine中看到新的提交。为了这个目的,我们在第3步将编写一个cronjob。

第3步:添加一个cronjob以获取GIT仓库

为了保持GIT仓库自动更新,我们将添加一个cronjob。

我们打开用户指定的"redmine"用户的crontab,并为每5分钟获取所有分支添加一个cronjob。

sudo crontab -e -u redmine

*/5 * * * * cd /var/lib/redmine/repos/my_repo && git remote update --prune

或者,我们可以直接编辑"/etc/crontab"-文件。如果我们这样做,我们必须添加执行命令的仓库所有者的用户名。

nano /etc/crontab
*/5 * * * * redmine cd /var/lib/redmine/repos/my_repo && git fetch --all --prune

注意:如果你克隆多个仓库,你必须为每个仓库添加一个crontab行。

Sergey Spivak更新 超过4年前 · 7次修订