Menyimpan git config sebagai bagian dari repositori

148

Saya menggunakan filter untuk membuat file saat checkout seperti dijelaskan di sini . Sekarang masalahnya adalah definisi filter hanya disimpan dalam file konfigurasi lokal saya:

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

Jika rekan kerja saya ingin mengambil manfaat dari Dateekspansi ini , mereka perlu menyalin definisi filter saya. Dan jika saya mengubahnya, saya perlu memberi tahu mereka, dll.

Jadi bisakah saya menyimpan bagian definisi filter ini .git/configdalam repositori dan membuat git menggunakannya?

Zaar Hai
sumber
Anda dapat menemukan tautan ini berguna untuk secara otomatis berbagi konfigurasi tim-lebar.
mljrg

Jawaban:

163

Ada 3 lingkup didukung dari .gitconfigberkas: --system, --global, --local. Anda juga dapat membuat file konfigurasi khusus, dan memasukkannya ke dalam salah satu file yang didukung.

Untuk kebutuhan Anda, kustom - adalah pilihan yang tepat. Alih-alih menulis filter .git/configAnda, Anda harus menyimpannya dalam .gitconfigfile di root repositori Anda:

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

Buat .gitconfigdengan filter Anda dan lakukan perubahan. Maka kolega Anda akan selalu memperbaruinya - tetapi mereka harus memasukkannya secara manual. Tidak mungkin untuk secara otomatis memasukkan file konfigurasi khusus Anda melalui git saja, karena itu menciptakan kerentanan keamanan.

Untuk menerapkan konfigurasi ini untuk repositori tunggal, setiap pengguna harus menjalankan perintah berikut di your-repo/:

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

Berhati-hatilah untuk tidak menyimpan data pribadi dalam kebiasaan .gitconfig, seperti user.*menyimpannya di global Anda .gitconfig.

Alexander Yancharuk
sumber
40
Saya ingin menghindari memberi tahu setiap pengguna yang mungkin perlu menyertakan repo .gitconfigdalam bukunya ~/.gitconfig. Tidak ada yang akan mengingatnya. Apakah ada cara untuk membuat git SELALU membaca repo .gitconfig.
Zaar Hai
9
@ZaarHai: Saya kira tidak, karena itu akan berbahaya. (Bayangkan kloning repo yang alias perintah dengan sesuatu yang "menarik", misalnya mengekspor isi dir rumah Anda). Jika Anda memiliki sesuatu seperti configureskrip atau sejenisnya yang harus dijalankan oleh pengguna, Anda dapat mengatur agar menyertakan (atau meminta pengguna untuk).
Hasturkun
4
@HenryBlyth tampaknya ada --fileopsi aktif git config, Anda kemudian dapat mengaturnya untuk menunjuk pada repo Anda .gitconfig. Saya belum mengujinya, tetapi sepertinya menjawab pertanyaan Anda. Anda dapat membacanya di dokumen. git-scm.com/docs/git-config#FILES
theUnknown777
12
Lebih baik jika Git tidak menganggap Anda sedang menulis kode yang didistribusikan di luar organisasi Anda di mana Anda harus peduli dengan ancaman keamanan. Terkadang kegunaan dan otomatisasi sistem memiliki prioritas lebih tinggi daripada keamanan.
Geordie
2
Anda dapat secara diam-diam menambahkan perintah ke tugas (dengan asumsi Anda menggunakan pelari tugas) yang secara rutin digunakan oleh tim Anda.
Mieszko
19

Anda tidak dapat menggunakan .gitconfigfile dalam repositori git secara default, tetapi Anda dapat menautkannya sehingga konfigurasi git akan diversi.

Anda dapat menautkannya seperti itu:

[include]
  path = ../.gitconfig

Saya telah membuat skrip sederhana gitconfig.shyang melakukannya untuk Anda (lebih cepat daripada menyalin) + .gitconfigfile sederhana jadi jika Anda mau, lihat repo ini https://github.com/HoBi/dotfiles .


EDIT : Saya telah menghapus file, tetapi Anda dapat menemukannya di sini https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

tenhobi
sumber
@XmlmXmlmX diperbaiki. :-)
tenhobi
@HoBi tampaknya Anda sekarang telah menghapus gitconfig.sh dari GitHub, ada alasan mengapa Anda tidak lagi menginginkannya?
Novice C
1
@NoviceC Ada file jika Anda menginginkannya. github.com/HoBi/dotfiles/blob/… Saya menjadi percaya, bahwa Anda tidak boleh menyimpan .gitconfig atau gitconfig.sh di proyek git Anda - ini adalah pengaturan pribadi dan harus disimpan dalam pengaturan global Anda dalam ~/folder. Dan semua orang mungkin memiliki kebutuhan yang berbeda, jadi mengapa repot-repot semua orang dengan konfigurasi Anda di git repo. :-)
tenhobi
@tenhobi ada beberapa konfigurasi yang mungkin menarik bagi semua orang untuk dibagikan dalam sebuah proyek. Saya akan melakukannya untuk alias, dengan aliran pengkodean proyek
Z. Khullah