Git волшебные ссылки - PullRequest
       0

Git волшебные ссылки

5 голосов
/ 17 июля 2011

Я играю с проектными рабочими процессами и Git, и я хотел бы найти хороший способ "пообщаться" с основным хранилищем.

Одна вещь, которая меня интересует, - это какреализовать магическую ссылку типа «для», используемую Джерритом, когда коммиты толкаются к «refs / for / xxxx / topic», чтобы установить конечную целевую ветвь, не помещая вещи прямо туда.Есть ли способ сделать это с помощью пре / пост-приемных хуков? Это особенность их реализации на Java?

Cheers

Ответы [ 2 ]

2 голосов
/ 17 июля 2011

refs/for/branch - это «волшебная» функция сервера Gerrit git. Насколько я знаю, нет способа скопировать его с использованием реализаций git-receive-pack или git-http-server по умолчанию.

0 голосов
/ 09 февраля 2016

Как правильно заметил @duskwuff, это «волшебная» особенность Gerrit, и он достигает ее, фактически внедряя git-сервер (через jgit).

Однако, можно аппроксимировать его простым gitрепо и крючки.Чтобы сделать это чисто, нам нужны два крючка:

  1. update крючок: сделайте что-нибудь особенное, когда получите, включая создание новых ссылок
  2. post-receive крючок: просто удалите созданный рефобновлением: git update-ref -d ${refname}

Вы можете сделать все в post-receive хуке, если вам не нужна возможность возврата ошибки клиенту.

Хук post-receive необходим, поскольку ссылка будет создана после успешного завершения сценария update.

Она работает даже при одновременном нажатии двух пользователей.Хотя может быть короткое состояние гонки, хотя ссылка создана, но до того, как ловушка post-receive удалила ее, я никогда не сталкивался с этим, но я ожидаю, что это произойдет из моего поверхностного понимания того, как работает git.Так что это может быть неуместным решением, когда у вас большой пуш-трафик на эту магическую ссылку.

Я использую его для клонирования репозитория в сборке образа временного директора и порождения спавна.Я кодирую имя изображения, чтобы встроить имя ссылки.(Мне не нужно создавать реальный реф, как Геррит, но это было бы возможно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...