Подключите Redmine и удаленный Gitolite - PullRequest
1 голос
/ 10 апреля 2020

Есть много похожих тем (многие из них очень старые), но я все еще потерялся. У меня есть два сервера, один с настройкой gitolite, а другой с настройкой redmine. Пользователь вносит изменения в репозиторий, созданный на сервере gitolite. Redmine является пользователем этого сервера gitolite и извлекает из него изменения и отображает их в браузере.

Точнее, я использовал следующую строку на сервере redmine:

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

Затем, Я настроил этот репозиторий (тестирование. git) как известный репозиторий для redmine - redmine может использовать только голые и локальные репозитории.

Когда пользователь pu sh переходит на сервер gitolite, redmine не отображается автоматически их. Я должен сделать следующее на сервере Redmine:

cd testing.git
git remote update

Я мог бы использовать cron на сервере Redmine для регулярного обновления тестирования репозитория. git. Но многие говорят, что это неэффективно и предлагают крючки. Однако информация очень запутанная. Можете ли вы помочь мне, ответив, является ли cron жизнеспособным решением и является ли «git remote update» правильной командой для этого cron? Или приведите чистый пример использования хуков для решения моей проблемы.

Непосредственно не связан с вопросом, но я должен сказать. Для меня не родной английский sh, слова как зеркальные, зеркальные, зеркальные, и т.д. c. трудно следовать, пожалуйста, используйте Алису и Боб и такие более простые термины. Даже слово «удаленный» сбивает с толку, если я нахожусь на А, то «Б» для меня удален, но если я на «Б», то «А» удален для меня. Таким образом, трудно прочитать о git на net, и все усложняется тем фактом, что некоторые решения являются вариантами github или bitbucket.

1 Ответ

2 голосов
/ 11 апреля 2020

Первый способ, который я выбрал бы, - это использовать интеграцию Redmine + Gitolite через выделенный плагин, как описано здесь:

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

Второй способ - это то, что вы пытались сделать, так:

Вытащить изменения с помощью задания cron или какого-либо другого запланированного задания - это просто git, что делает некоторую задержку между коммитом и заданием cron, а также ненужной использование ресурсов, таких как сеть и процессор, для тестирования репозитория, даже если нет изменений ...

Для правильного использования данных ресурсов рекомендуется использовать хуки как на сервере Redmine, так и на сервере git.

Итак, на вашем gitolite вы должны иметь хук после получения, который будет выполнять:

  1. обновление вашего репо, отслеживаемого Redmine (вы можете сделать это несколькими способами, одним из способов использовать sshpass или ожидать для входа на сервер Redmine и выполнения git извлечения изменений)
  2. запускает ловушку обновления репозитория Redmine, который описан здесь: https://www.redmine.org/projects/redmine/wiki/HowTo_setup_automatic_refresh_of_repositories_in_Redmine_on_commit

Так, например, хук после получения git будет выглядеть так:

#!/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 для обновления репозиториев можно найти в Администрирование | Настройки | Вкладка репозитория

...