Зберігання конфігурації git як частини репозиторію


147

Я використовую фільтри, щоб обробляти файли під час оформлення замовлення, як описано тут . Тепер проблема полягає в тому, що визначення фільтра зберігається лише в моєму локальному файлі конфігурації:

$ cat .git/config
....
[filter "dater"]
        smudge = /home/.../expand_date
        clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"

Якщо мої співробітники хочуть скористатися цим Dateрозширенням, їм потрібно скопіювати моє визначення фільтра. І якщо я це зміню, мені потрібно повідомити про них тощо.

Тож чи можу я зберегти цю частину визначення фільтра .git/configу сховищі та змусити git використовувати його?


Це посилання може бути корисним для автоматичного спільного використання налаштувань для команди.
mljrg

Відповіді:


163

Є 3 Підтримувані обсяги .gitconfigфайлу: --system, --global, --local. Ви також можете створити спеціальний файл конфігурації та включити його в один із підтримуваних файлів.

Для ваших потреб звичай - це правильний вибір. Замість того, щоб писати свій фільтр, .git/configслід зберегти його у .gitconfigфайлі в корені вашого сховища:

your-repo/
│
├── .git/
│   ├── config
│
├── .gitconfig
│

Створіть .gitconfigсвій фільтр та введіть зміни. Тоді ваші колеги будуть постійно оновлювати його - але вони повинні будуть включати його вручну. Автоматичне включення власного файлу конфігурації неможливо автоматично лише через git, оскільки це створює вразливість безпеки.

Щоб застосувати цю конфігурацію для одного сховища, кожному користувачеві потрібно буде виконати таку команду в your-repo/:

git config --local include.path ../.gitconfig

Будьте обережні, щоб не зберігати особисті дані у користувальницькій формі .gitconfig, наприклад user.*, зберігати їх у вашому глобальному .gitconfig.


40
Я хочу уникати повідомлень кожного можливого користувача про те, що йому потрібно включити репо .gitconfigв свої ~/.gitconfig. Ніхто цього не згадає. Чи є спосіб зробити GIT ЗАВЖДИ прочитати репо .gitconfig.
Заар Хай

9
@ZaarHai: Я здогадуюсь ні, тому що це було б небезпечно. (Уявіть, що ви клонуєте репо, що псевдоніми команд чимось "цікавим", наприклад, експорт вмісту вашого домашнього режиму). Якщо у вас є щось на зразок configureсценарію або подібного, яке повинні запустити користувачі, ви могли б встановити функцію include (або запропонувати користувачеві).
Hasturkun

4
@HenryBlyth, здається, є --fileваріант увімкнутий git config, потім ви можете встановити його на точку на репо .gitconfig. Я її ще не перевіряв, але, здається, відповідає на ваше запитання. Ви можете прочитати його на документах. git-scm.com/docs/git-config#FILES
theUnknown777

12
Будьте чудові, якщо Git не припускає, що ви пишете код, розповсюджений поза вашим органом, де вам належить подбати про загрози безпеці. Іноді зручність і автоматизація системи мають більш високий пріоритет, ніж безпека.
Джорджі

2
Ви можете підступно додати команду до завдання (припускаючи, що ви використовуєте виконавець завдань), звичайно використовуваний вашою командою.
Мешко

19

Ви не можете використовувати .gitconfigфайл у сховищі git за замовчуванням, але ви можете зв’язатись із ним, щоб конфігурація git була виконана.

Ви можете зв’язатись із цим так:

[include]
  path = ../.gitconfig

Я створив простий сценарій, gitconfig.sh який зробить це за вас (набагато швидше, ніж копія) + простий .gitconfigфайл, тому, якщо хочете, подивіться на це репо https://github.com/HoBi/dotfiles .


EDIT : я видалив файл, але ви можете його знайти тут https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh


@XmlmXmlmX виправлено. :-)
tenhobi

@HoBi здається, що ви тепер видалили свій gitconfig.sh з GitHub, будь-яка причина, чому ви цього більше не хотіли?
Новачок C

1
@NoviceC Є файл, якщо ви цього хочете. github.com/HoBi/dotfiles/blob/… Я переконався, що ви не повинні зберігати .gitconfig або gitconfig.sh у вашому проекті git - це особисті налаштування і їх слід зберігати у ваших глобальних налаштуваннях у ~/папці. І всі можуть мати різні потреби, тож навіщо турбувати всіх з вашим конфігурацією в git repo. :-)
tenhobi

@tenhobi Є кілька конфігурацій, які можуть бути цікавими для участі у проекті для всіх. Я зроблю це для псевдонімів з потоком кодування проекту
З. Хулла
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.