Redmine:在存储库中找不到条目或修订版

Laz*_*zao 0 apache git redmine

我正在尝试使用 Redmine 访问 git 存储库。不幸的是,我无法做到这一点,这是给出的错误:

The entry or revision was not found in the repository.
Run Code Online (Sandbox Code Playgroud)

这是我的配置:

SCM: Git
Main Repository: Checked
Identifier: wide
Path to repository: /var/repos/git/wide
Path encoding: UTF-8
Run Code Online (Sandbox Code Playgroud)

我尝试了几件事。将我的非裸存储库克隆到裸存储库后,我尝试了以下几种路径:

/var/repos/git/wide
/var/repos/git/wide/.git
/var/repos/git/wide.git
/var/repos/git/wide.git/.git
Run Code Online (Sandbox Code Playgroud)

我还尝试将我的 git 存储库的所有者更改为 apache(因为 apache 运行 Redmine)。

任何帮助,将不胜感激。问候。

bis*_*ish 5

我写了本教程(在官方 redmine 页面上) HowTo:前段时间轻松将(SSH 安全的)GIT 存储库整合到 redmine 中,其中包含要执行的详细命令和一个非常详细的示例。如果您没有 ssh 保护的 GIT 存储库,请忽略与此相关的声明。

简而言之(如果你知道命令的话)主要是:

  • redmine 用户可以读/写的存储库文件夹
  • 将存储库克隆MIRROR(不是BARE)!
  • 在 redmine 项目设置中设置您的存储库,而.git不仅仅是文件夹(完整路径)
  • 添加 cronjob 以自动获取存储库并更新 redmine 中的数据

希望这对你有帮助

编辑:我自己写的完整教程


操作方法:轻松将(受 SSH 保护的)GIT 存储库集成到 redmine 中

范围

本 HowTo 将展示如何将 GIT 存储库集成到您的 redmine 项目以及如何使存储库保持最新。

先决条件

  • 您的 redmine 目录的所有者需要 SSH 密钥和(读取)您要集成到 redmine 的存储库的访问权限。
  • 需要一个目录来克隆 GIT 存储库。
  • Redmine 必须找到 GIT 二进制文件,这意味着必须安装 GIT。您可以在administration > repositories设置中的 redmine 中进行检查。如果有绿色复选标记,一切都很好。如果不是,您必须先安装 GIT,例如通过apt-get install
示例配置

为了更好地理解这个 HowTo,我将使用以下配置

  • 我的 redmine 所有者被称为 redmine
  • 我的 redmine 主目录是/var/lib/redmine,我将在repos那里创建一个子目录,在那里我克隆存储库。所以这个目录的完整路径是/var/lib/redmine/repos/
  • 我的 repo 的URL 是git.my-url.com名称my_repo,所以完整的 URL 是git@git.my-url.com:my_repo

第 1 步:克隆存储库

首先,我们需要将存储库克隆为MIRROR(不是BARE!)存储库。镜像存储库没有工作文件,只有我们需要 redmine 的提交信息。

我们切换到 redmine-user 并将存储库克隆到选择的目录中。

sudo -su redmine
cd /var/lib/redmine/repos/
git clone --mirror git@git.my-url.com:my_repo my_repo
Run Code Online (Sandbox Code Playgroud)

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

第二步:将repository引入redmine

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

输入: GIT Main-repository:如果克隆的存储库是您的主存储库,请选中此项,否则不要选中它。 Name (redmine intern): 建议选择与仓库同名,eg my_repo Path : 仓库的绝对路径,eg/var/lib/redmine/repos/my_repo

现在 redmine 知道存储库。如果您repository在项目中打开-tab,您将看到存储库树、上次提交等。

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

第 3 步:添加一个 cronjob 来获取 GIT 存储库

为了让 GIT 存储库自动保​​持最新,我们将添加一个 cronjob。使用--all我们定义的参数来获取所有分支。

我们为用户打开用户指定的 crontabredmine并添加一个 cronjob 以每五分钟获取所有分支。

sudo -e -u redmine
Run Code Online (Sandbox Code Playgroud)

并添加这一行

*/5 * * * * cd /var/lib/redmine/repos/my_repo && git fetch --all
Run Code Online (Sandbox Code Playgroud)

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

nano /etc/crontab
Run Code Online (Sandbox Code Playgroud)

并添加这一行

*/5 * * * * redmine cd /var/lib/redmine/repos/my_repo && git fetch --all
Run Code Online (Sandbox Code Playgroud)

注意如果您克隆多个存储库,则必须为每个存储库添加一个 crontab 行。