我正在尝试使用Redmine访问git存储库。 不幸的是,我无法做到这一点,这是错误:
The entry or revision was not found in the repository.
这是我的配置:
SCM: Git
Main Repository: Checked
Identifier: wide
Path to repository: /var/repos/git/wide
Path encoding: UTF-8
我尝试了几件事。将我的非裸存储库克隆到裸存储库后,我尝试了以下几种方法:
/var/repos/git/wide
/var/repos/git/wide/.git
/var/repos/git/wide.git
/var/repos/git/wide.git/.git
我还尝试将我的git存储库的所有者更改为apache(因为apache运行Redmine)。
任何帮助将不胜感激。 问候。
答案 0 :(得分:3)
我写了这个教程(在官方redmine页面上) HowTo: easily integerate a (SSH secured) GIT repository into redmine前段时间有详细的执行命令和一个非常详细的例子。如果您没有ssh安全的GIT存储库,请忽略有关此问题的声明。
简而言之(如果你清楚地知道命令)主要的事情是:
.git
文件夹(完整路径)希望这有助于你
编辑:我自己编写的完整教程
本方法将展示如何将GIT存储库集成到redmine项目以及如何使存储库保持最新。
administration > repositories
设置中以redmine格式进行检查。如果有绿色选中标记,一切都很好。如果不是,您必须先安装GIT,例如通过apt-get install
为了更好地理解这个,我将使用以下配置
redmine
/var/lib/redmine
,我将在那里创建一个子目录repos
,我在那里克隆存储库。因此,此目录的完整路径为/var/lib/redmine/repos/
git.my-url.com
,名称为my_repo
,因此完整网址为git@git.my-url.com:my_repo
首先,我们需要将存储库克隆为 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
现在所有存储库信息都在磁盘上,但是redmine对此一无所知。所以在下一步我们将改变这一点。
在redmine内部,我们打开"管理>项目 - >库"对话。您也可以通过" project - >访问此对话框。设置 - >库&#34 ;.我们在那里添加了一个新的存储库
输入:GIT 主存储库:如果克隆的存储库是您的主存储库,请检查此项,如果不是未选中它。 名称(redmine intern):我建议选择与存储库相同的名称,例如
my_repo
路径:存储库的绝对路径,例如/var/lib/redmine/repos/my_repo
现在redmine知道存储库。如果打开项目中的repository
- 选项卡,您将看到存储库树,最后提交等等。
注意:当您打开对话框时,redmine会从上次有人打开此对话框时获取所有变更集本地存储库和redmine数据库。特别是第一次打开大型存储库的对话框可能需要很长时间。不要取消进度,只需让redmine工作直到完成。 可能的谬误:打开对话框时,redmine DOESN' T 从GIT中获取新的提交!这意味着如果您不更新本地GIT存储库,您将永远不会在redmine中看到新的提交。为此,我们将在第3步中编写一个cronjob。
为了使GIT存储库自动保持最新,我们将添加一个cronjob。使用我们定义的--all
参数来获取所有分支。
我们为用户redmine
打开用户指定的crontab,并添加一个cronjob以每五分钟获取一次所有分支。
sudo -e -u redmine
并添加此行
*/5 * * * * cd /var/lib/redmine/repos/my_repo && git fetch --all
或者我们可以直接编辑/etc/crontab
- 文件。如果我们这样做,我们必须添加应该执行命令的存储库所有者的用户名。
nano /etc/crontab
并添加此行
*/5 * * * * redmine cd /var/lib/redmine/repos/my_repo && git fetch --all
注意如果克隆多个存储库,则必须为每个存储库添加crontab行。