Динамическая конфигурация пользователя для git с помощью сценария-оболочки?

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

Решение: « Возможно ли динамически установить пользователей .gitconfig (для git config -global)? », Но это не касалось ситуации, которую я обнаружил с помощью общих учетных записей служб (и которые могут существовать для root, тоже ).

Я обнаружил, что User1 будет подключаться и /home/serviceaccount/.gitconfig будет установлен, тогда User2 будет подключаться и перезаписывать это: выполнение git config --global user.name в любом сеансе будет возвращать данные User2, предлагая ссылаться на файл при каждом вызове. Поскольку я не делаю root, я не знаю, существует ли эта проблема для двух пользователей, которые sudo могут корневать после решения @ oXiVanisher.

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

 #!/bin/sh myuser=`who -m | awk '{ print $1 }'` HOST=`hostname` # atomic locking over NFS via https://unix.stackexchange.com/a/22062 LOCKFILE="/local/share/bin/.git.lock" TMPFILE=${LOCKFILE}.$$ echo "$myuser @ $HOST" > $TMPFILE if ln $TMPFILE $LOCKFILE 2>&-; then : else echo "$LOCKFILE detected" echo "Script in use by $(<$LOCKFILE)" /bin/rm -f $TMPFILE exit fi trap "/bin/rm -f ${TMPFILE} ${LOCKFILE}" 0 1 2 3 15 # find my gitconfig CFGFILE="/local/share/DOTfiles/DOTgitconfig.$myuser" if [ ! -s $CFGFILE ]; then echo "No personal /local/share/DOTfiles/DOTgitconfig found." exit fi # roll it in cp $CFGFILE $HOME/.gitconfig # execute git /usr/bin/git "$@" # roll it back in case of changes cp $HOME/.gitconfig $CFGFILE # zero it out cat > $HOME/.gitconfig << ! # This file intentionally blank for dynamic use # The wrapper script is /local/share/bin/git ! 

Когда два пользователя подключены к учетной записи git config --global user.name , git config --global user.name сообщает собственное имя для каждого пользователя. Сначала краснеть, похоже, что это может сделать git dynamic для всех пользователей, разделяющих одну учетную запись, где переменные среды не могут быть найдены.

Но как я нарушаю вещи? Что я еще не вижу?

Спасибо.

  • Как настроить sudoers, чтобы разрешить запуск команды sudo под другой группой и именем пользователя?
  • Безопасность графического пароля диалогового окна Linux
  • Безопасно ли отключать пароль для пользователя, если он использует только SSH-ключ?
  • Файл, доступный только с правами root
  • Как отслеживать, кто добавил привилегии sudo пользователю
  • Почему sudo -i не устанавливает XDG_RUNTIME_DIR для целевого пользователя?
  • Сколько контрольных точек в RHEL / CentOS убедитесь, что ни у кого нет доступа sudo / root
  • исключить команды из прав пользователя sudo
  • One Solution collect form web for “Динамическая конфигурация пользователя для git с помощью сценария-оболочки?”

    Похоже, что ваше решение будет иметь условия гонки (что происходит во время нескольких одновременных вызовов git ?), А также другие проблемы (например, неправильное использование $* вместо "$@" .

    Вместо этого, почему бы не использовать только значение $GIT_CONFIG в среде каждого пользователя для другого файла?

    Interesting Posts

    Выход Выход команды непосредственно в командную строку, НЕ переменную

    Где находится диалог «О Gnome» в gnome-shell?

    Могу ли я заставить dnf установить старую версию пакета?

    xdg-open не обрабатывает процентный код «file: ///» с LXDE

    Установите пустую файловую систему в таблицу разделов msdos

    Извлечение содержимого архива tar в родительский каталог, что приводит к созданию подкаталогов

    Ядро Linux работает только с использованием физического адреса

    Как сгенерировать файл со всей строкой, соответствующей шаблону из другого файла

    избежание одной точки с двойной обратной косой чертой – awk

    Что это за ошибка SSH в отношении «неправильного идентификатора RSA1» и «неуказанного сбоя GSS»?

    Как я могу предложить изменение в программе входа?

    Для того, чтобы цикл не выполнялся корректно поверх ssh

    Установите пользовательские локали в Gnome3 (на Fedora 20)

    Почему я получаю разные результаты во время связи ftp при использовании ls filename и ls./filename

    Set и Shopt – почему два?

    Linux и Unix - лучшая ОС в мире.