Создание git probe для пользователя перед совершением коммита - PullRequest
2 голосов
/ 13 июня 2011

Мы команда разработчиков, которым нужно работать на больших машинах в лаборатории. Эти машины контролируются компьютерами, на которых также ведется разработка. Лабораторные ПК всегда работают под одним и тем же идентификатором пользователя. Проблема в том, что мы хотим, чтобы сообщения git commit были связаны с идентификатором пользователя разработчика. Одним из способов будет запрос каждого пользователя, который приходит на компьютер, вручную запускает скрипт, который выполняет:

git config user.name Foo baz

но проблема в том, что об этом легко забыть.

Вместо этого у меня возникла мысль, что, возможно, я смогу использовать хук git pre-commit для проверки пользователя на его идентификатор, а затем выполнить указанную выше команду. Но, к сожалению, это не работает, так как кажется, что поле user.name уже было запрошено до вызова ловушки перед фиксацией.

Другая уродливая идея - использовать хук post-commit для получения идентификатора пользователя, а затем переписать последнее сообщение коммита в соответствии с именем, введенным пользователем. Будет ли это работать?

Есть ли у кого-нибудь решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Я создал глобальную конфигурацию user.name так:

git config user.name CONFIGUREMEINTHELOCALREPOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

Что, по крайней мере для моей версии git (1.7.5.3), представляет собой значение длиной 968 байт, которое может бытьустановлен, но который никогда не будет позволено совершить.fatal: Impossibly long personal identifier

Затем вы можете попросить пользователя установить переменные окружения (1) и / или локальные переменные git config в разумное значение, которое разрешит фиксацию.

Да, это тожеПредполагается, что пользователь создаст новый сеанс (переменные среды) или будет иметь личный репозиторий (локальная конфигурация).Если люди делят один и тот же сеанс (подходят к незащищенному предварительно зарегистрированному в консоли), я думаю, что вам, скорее всего, не повезло, хотя вы можете попробовать проверить $ PROMPT_COMMAND на время простоя и сбросить переменные или что-то в этом родеили используйте $ TMOUT для автолога.

(1) Рассматриваемые переменные среды:

       $GIT_AUTHOR_NAME
       $GIT_AUTHOR_EMAIL
       $GIT_COMMITTER_NAME
       $GIT_COMMITTER_EMAIL
1 голос
/ 13 июня 2011

Вы можете хранить файлы конфигурации разных пользователей в разных местах, а затем написать скрипт для запуска при входе в систему, который устанавливает $GIT_CONFIG, чтобы он указывал на файл конфигурации пользователя. Посмотрите на ENVIRONMENT раздел git help config.

Редактировать: если пользователь использует ту же оболочку, что и кто-то другой, вы можете написать обертку вокруг git, которая запрашивает пользователя, устанавливает переменную окружения, а затем запускает реальную git.

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