есть ли способ вывести конфигурацию git вся , которая в данный момент находится в действии (локальная, глобальная, системная), в файл, который затем можно использовать как файл GIT_CONFIG
?
Что-то вроде:
$ git config --list > mygit.cfg
$ GIT_CONFIG=mygit.cfg git clone /path/to/repo.git
К сожалению, вышеприведенное на самом деле ничего не делает (конфигурация читается не из файла mygit.cfg
, а из стандартных расположений).
Также что-то делаетнапример:
$ git config --file mygit.cfg --unset foo.bar
завершается с ошибкой:
фатально: неверная строка конфигурации 1 в файле mygit.cfg
AFAICT, причина в том, что все файлы конфигурации git должны быть INI
стиля.Тем не менее, git config --list
выводит простой список key=value
строк, который git не может использовать как файл GIT_CONFIG
.
Мой пример использования следующий:
- У меня естьнекоторые проблемы с git (связанные с клонированием стороннего репозитория) на хосте с автоматической сборкой (CI), вызванные настройкой конфигурации git
- , так как изменения в автостроителе не являются постоянными.поэтому я должен иметь возможность изменять систему в сценарии
- Мне действительно все равно (и я не хочу беспокоиться), на каком уровне существует эта конфигурация (локальная, глобальная,система, ...) так как конфигурация создается с помощью autobuilder
- , решение проблемы git включает unsetting одно из значений конфигурации
- к сожалению, похоже, что
-c
флаг git
позволяет только устанавливать значения, но не сбрасывать их
- моя идея состоит в том, чтобы просто создать накопленную конфигурацию git, удалить вызывающий ошибку ключиз этой конфигурации и используйте измененный конфиг, чтобы выполнить несколько операций, которые мне нужно сделать.после этого я хочу вернуться к исходной конфигурации
Один наивный подход - просто объединить файлы для различных уровней конфигурации:
cat /etc/gitconfig ~/.gitconfig .git/config > mygit.cfg
К сожалению, этого не произойдет, поскольку я не знаю расположения файлов конфигурации (уууу: многоплатформенные сборщики!).(Также: фактическое расположение файлов конфигурации - это деталь реализации git; я не хочу полагаться на такие детали реализации)
Итак: могу ли я вывести свою конфигурацию git таким образом, чтобы я мог использоватьэто с мерзавцем?