如何操作:轻松地将一个(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为"[email protected]: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次修订