Подтвердить что ты не робот

Git config: список всех переменных и их значения по умолчанию

Подобно команде MySQL show variables, которая отображает все переменные, а не только те, которые определены в my.ini, мне бы хотелось увидеть список конфигурационных переменных all в git вместе с значениями по умолчанию, а не только те, которые определены в моем ~/.gitconfig.

Возможно ли это?

4b9b3361

Ответ 1

Это обсуждалось в этом потоке в 2013 году, запрошенном Себастьяном Шубертом, Джефф Кинг (Peff) добавив:

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

Предполагается, что вызывающий абонент знает, что делать с неустановленным значением. А также это не связано с git config; внутренний код C работает таким же образом.
Фактические значения по умолчанию даже не обязательно выражаются через конфигурацию.
Например, я знаю, что http.receivepack считает "неустановленным" быть отличным либо "true", либо "false", но установка его может привести только к одно из этих последних двух значений.
Я уверен, что есть и другие (я просто заметил это на этой неделе).

(Например: gc.prune)

Я мог бы, конечно, увидеть аргумент, что мир станет лучшим местом если у кода была большая таблица опций и их описания, возможно значения и значения по умолчанию, и если мы использовали это для создания документации как а также подтверждение ввода.
Но никто не стал беспокоиться о том, чтобы построить эту таблицу и преобразовать всех вызывающих. И как отметил Jakub (Jakub Narębski), такая центральная таблица ничего не может сделать для внешних программ, которые сохраняют свою конфигурацию рядом с git.

Короче:

git config даже не знает ни одного из параметров или значений, которыми он управляет, но просто является "немым" интерфейсом для написания/чтения всего, что вы проходите это в/из файла.


Примечание: git config был введен в commit 1771299 (git 0.99.9a, октябрь 2005 г.)

Различные программы могут реагировать на различные параметры конфигурации, хотя они должен всегда возвращаться к вызову "git_default_config()" в любой конфигурации имя параметра, которое они не распознают.

Таким образом, внутри есть способ загрузить конфигурацию по умолчанию, использованную еще как commit 72549df, git 2.2.0-rc1, ноябрь 2014, тем же Peff:

Когда мы запускаем программу git -fetch, мы вызываем git_config для загрузки всей конфигурации, но наш обратный вызов обрабатывает только параметр fetch.prune; мы не привязываемся к git_default_config вообще.

Это означает, что мы не можем загружать некоторую конфигурацию ядра, которая будет иметь эффект. Например, мы не загружаем core.logAllRefUpdates, что влияет на то, будем ли мы создавать блокировки в открытом репозитории.

Позвольте просто загрузить конфигурацию ядра в начале выборки, поэтому мы знаем, что у нас она есть

См. еще один пример с зафиксировать 3e1dd17, git 1.7.7-rc1, Aug. 2011 с настройкой цвета по умолчанию.

Ответ 2

git config --global -l для глобальных переменных или git config -l для переменных локального репозитория

PS: Я знаю, прошло 2 года с тех пор, как вы разместили вопрос, но я искал то же самое, и я прочитал этот пост, поэтому я догадался, что пользователи, такие как я, хотели бы решить их проблему, и я отправил ответ, даже если вы, вероятно, давно решили свою проблему.