Можно ли включить файл в ваш .gitconfig

Я хотел бы включить файл в мой .gitconfig, который имеет мои настройки github - возможно ли это?

Могу ли я сделать что-то вроде этого:

[core]
    include = /path/to/file

Ответ 1

Git (1.7.10+) теперь поддерживает этот синтаксис в .gitconfig:

[include]
    path = /path/to/file

См. здесь для подробного описания изменений git и его крайних случаев.

Кстати, несколько тонкостей, которые стоит указать:

  • Расширение переменных среды, например. $HOME, не поддерживается. (Расширение ~ появилось в git 1.7.10.2.)

  • Если указан относительный путь, то он относится к файлу .gitconfig, который имеет оператор [include]. Это работает корректно, даже через цепочку включает в себя - например, ~/.gitconfig может иметь:

    [include]
        path = subdir/gitconfig
    

    и subdir/gitconfig могут иметь:

    [include]
        path = nested_subdir/gitconfig
    

    ..., который приведет к загрузке subdir/nested_subdir/gitconfig.

  • Если git не может найти целевой файл, он молча игнорирует ошибку. Это, по-видимому, по дизайну.

Ответ 2

Обновление 2012:

Смотрите Mike Morearty answer:

Включает

Вы можете включить один файл конфигурации из другого, установив специальную переменную include.path в имя файла, который будет включен.
Включенный файл разворачивается немедленно, как если бы его содержимое было найдено по адресу директивы include.
Если значение переменной include.path является относительным путем, путь считается относительным к файлу конфигурации, в котором была указана директива include.
Значение include.path подлежит расширению тильды: ~/ расширяется до значения $HOME и ~user/ в указанный домашний каталог пользователя.


Я так не думаю.

Я предпочел бы разместить эту настройку в ~/.gitconfig файле

Пользовательский файл конфигурации. Также называется "глобальным" конфигурационным файлом.

Таким образом, он завершает файл проекта .gitconfig, не публикуемый при нажатии на GitHub. См. Также этот SO ответ для получения дополнительной информации о глобальном файле конфигурации.
Git имеет 3 файла конфигурации.


bjeanes добавляет в комментарии:

похоже, что все пропустили суть этого вопроса.
Дэвид явно хочет оттолкнуть репо всех своих файлов точек (bashrc, gemrc и т.д.), ВКЛЮЧАЯ его .gitconfig, чтобы он мог иметь все свои настройки на всех своих машинах. Способ нажатия частей файла .gitconfig путем включения и игнорирования частных записей - это то, что он (и я, если на то пошло) после.

Возможным способом было бы использовать smudge/clean filter driver для дешифрования/шифрования одного файла с конфиденциальной информацией (см. этот поток), чтобы завершить локальный файл, например ~/.gitconfig, с дешифрованными частями, имеющими отношение к этому файлу.

Таким образом, вы можете иметь репозиторий Git со всеми вашими точечными файлами, а также один файл с зашифрованной информацией, предназначенный для дешифрования и добавления в указанные файлы точек.

alt text

В .gitattributes (или .git/info/a..) используйте:

myPrivateInfosFile filter=gpg diff=gpg

В вашем файле repo.config:

[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt

(a решение на основе GPG означает, что, конечно, вы передали свои частные/открытые ключи другим средним значением на конечный компьютер, где вы хотите восстановить все ваши файлы точек, клонировав это специальное репо)

На самом деле, в вашем случае, smudge script должен быть завершен, как он должен, после дешифрования этого файла, продолжить и добавить соответствующие части в ваш глобальный файл ~/.gitconfig (если вы переписываете глобальный файл конфигурации в другое место) или другие файлы точек, если это важно.

https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (неудобства gpg обсуждаются далее в этот поток) (это отличается от полного завершенного репо Git, поскольку обсуждается здесь)

Ответ 3

Вы можете загрузить его из командной строки:

$ git config --local include.path "/path/to/.gitconfig"

Используйте "$PWD"/.gitconfig вместо этого, если вы хотите загрузить файл из текущего каталога.

После запуска над командой в ваш .git/config файл добавляются следующие строки:

[include]
        path = /path/to/.gitconfig

Ответ 4

Я считаю, что вы можете это сделать, используя defunkt hub tool. Это оболочка для команды git, которая, среди прочего, позволяет иметь переменные среды GITHUB_USER и GITHUB_TOKEN. Это переопределит настройки в локальном .gitconfig файле.

Затем, чтобы сделать его простым пользователем, вы указали на aliased alias git=hub в его ZSH config. Затем вы сможете получить локальный файл, в котором вы устанавливаете переменные среды, и выталкиваете свой репозиторий в общедоступный мир со всей вашей личной информацией в такт.

** ПРИМЕЧАНИЕ для пользователей доморощенного OSX, вы можете установить инструмент через brew install hub.