Интеграция нескольких пользователей git с Asana

Я настроил сервер Git в соответствии с эта страница.

Я также включил хук post-receive согласно этой странице.

Я использую GitHub для Windows для связи между моей локальной машиной и репозиторием git.

Моя проблема в том, что хук post-receive использует переменную, найденную в git config user.asana-key. Я установил эту переменную на своей локальной машине. Однако, когда я фиксирую репозиторий сервера, это значение пусто.

Мне интересно, есть ли что-то конкретное, что я должен сделать, чтобы отправить эту переменную вместе с коммитом git, чтобы хук мог ее прочитать?
И есть ли способ автоматизировать отправку этого с каждым отдельным коммитом?

ИЗМЕНИТЬ:

С тех пор я узнал, что эти переменные конфигурации никогда не отправляются на сервер с фиксацией в обычном режиме. Итак, мой вопрос на данный момент заключается в том, есть ли способ отправить эти переменные, или есть ли способ внутри хука после получения, чтобы установить ключ на основе user.email, прикрепленного к фиксации?


person Arak Tai'Roth    schedule 19.05.2015    source источник


Ответы (2)


Я правильно понимаю, что вы хотите, чтобы конфигурация git обновлялась на сервере при каждом нажатии?

Конфигурация Git никоим образом не клонируется и не версионируется. И git hook на стороне сервера обязательно читает конфигурацию сервера. Но вы можете сделать простую автоматизацию:

  • текстовый файл со значением user.asana-key в вашем репо
  • хук после получения, чтобы прочитать обновленное значение и запустить git config --local user.asana-key <value>

Или, если пользователей много и нужно отправлять отдельные ключи в качестве параметров для каждого коммита — это не сработает.

person Nick Volynkin    schedule 19.05.2015
comment
Есть 2 пользователя, поэтому было бы полезно, чтобы это было локально на их машине, если это вообще возможно. Я не совсем уверен, что понимаю, почему это не может быть на локальной машине. Как я уже сказал, я использую Github для Windows (клиент с графическим интерфейсом), и он позволяет мне устанавливать user.name и user.email, и они прекрасно проходят, отображаясь в моих коммитах. - person Arak Tai'Roth; 19.05.2015
comment
Есть важное отличие. user.name и user.email используются локально для помещения информации в коммиты, которые затем отправляются. Сами переменные конфигурации никогда не видны серверу. - person Jonas Schäfer; 19.05.2015
comment
Ах, хорошо. Так можно ли как-то передать эту информацию во время коммита? Или можно было бы внутри git hook (после получения) установить ключ на основе user.email, используемого для фиксации? - person Arak Tai'Roth; 19.05.2015

Я не получил ответа на этот вопрос, поэтому я продолжал искать и просто публиковать это для других на случай, если кто-то столкнется с этим.

Я обнаружил, что вы не можете получить доступ к user.name и user.email, отправленным с фиксацией в git-хуках. Поэтому мне пришлось пойти другим путем. Я установил gitolite на сервер с репозиторием git, следуя их руководству для идиотов, расположенному здесь. Я объединил это с их инструкциями о том, как это сделать с существующим репозиторием, расположенным здесь. А затем последовал их руководству по использованию хуков, в котором объясняется, какие переменные передаются в хуки, расположенное здесь. В частности, я использовал переменную GL_USER.

Затем внутри локальной конфигурации для репозитория git я добавил:

[asana]
    gitolite-user-name = asana-api-key

Где gitolite-user-name — это имя пользователя, связанное с каждым вашим пользователем gitolite, а asana-api-key — это ключ API для этого пользователя.

Затем в моем хуке post-receive я добавил:

apikey=$(git config asana.$GL_USER)

Который захватывает соответствующий ключ API для пользователя, который сделал фиксацию. Это позволяет каждому пользователю комментировать свои собственные коммиты, используя свою учетную запись в Asana.

person Arak Tai'Roth    schedule 20.05.2015