连接红矿和偏远的甘露石

问题描述 投票:1回答:2

[有许多类似的主题(其中许多很老),但我仍然迷失了。我有两台服务器,一台具有gitolite设置,另一台具有redmine设置。用户正在将更改推送到在gitolite服务器上创建的存储库。Redmine是该gitolite服务器上的用户,正在从中进行更改并在浏览器中显示它们。

更确切地说,我在redmine服务器上使用了以下行:

git clone --mirror ssh://gitolite3@gitoliteserver/testing

然后,我将此存储库(testing.git)配置为已知的存储库进行替换-替换只能使用裸存储库和本地存储库。

[当用户推送更改为gitolite服务器时,redmine不会自动让他们看。我必须在redmine服务器上执行以下操作:

cd testing.git
git remote update

我可以在redmine服务器上使用cron来定期更新存储库testing.git。但是许多人说这是低效的,因此建议使用钩子。但是,信息是非常混乱。您能否通过回答cron是否可行的方法来回答我,以及“ git remote update”是此cron的正确命令吗?还是给我一个干净的例子,如何使用钩子解决我的问题。

没有直接联系到这个问题,但是我不得不说。对我来说,非母语的英语,如镜像,镜像,镜像等词都是很难遵循,请使用alice和bob等更简单的术语。甚至“远程”一词也令人困惑,如果我在A上,那么B对我来说是远程的,但是如果我在B上,那么A对我来说就很遥远。因此,很难阅读关于网上的git,事情变得更加复杂事实是,某些解决方案仅是github或bitbucket的变体。

git redmine gitolite
2个回答
2
投票

我选择的第一种方法是通过专用插件使用Redmine + Gitolite集成,如下所述:

http://redmine-git-hosting.io/

第二种方法,是您尝试的方法,所以:

通过cron作业或某种其他类型的计划任务拉动更改是合法的事情,但是在提交和cron作业之间存在一些延迟,并且即使在有存储库的情况下也不必要地利用网络和cpu等资源来测试存储库没变化...

为了正确利用给定的资源,推荐的方法是在Redmine和git服务器中使用钩子。

因此,在您的gitolite上,您需要具有接收后钩子,该钩子将执行:

  1. 由Redmine跟踪的仓库更新(您可以通过多种方式做到这一点,一种方法是使用sshpass或使用expect登录Redmine服务器并执行git pull of changes)] >
  2. 触发Redmine的存储库更新挂钩,在此进行描述:https://www.redmine.org/projects/redmine/wiki/HowTo_setup_automatic_refresh_of_repositories_in_Redmine_on_commit
  3. 例如,一个git的post-receive钩子看起来像:

#!/bin/bash
/usr/bin/sshpass -pPassword ssh -o StrictHostKeyChecking=no user@server 'cd /home/user/repo/ && git pull origin master'
curl "http://<redmine url>/sys/fetch_changesets?key=<your service key>" 

用于更新存储库的Redmine Web服务密钥可在管理|设置|存储库选项卡


0
投票

以下是详细说明我如何应用接受的答案(带有钩子的解决方案)。欢迎任何评论。

© www.soinside.com 2019 - 2024. All rights reserved.