Git tampaknya mendukung nilai konfigurasi pada tiga level:
- Pengaturan global per sistem (disimpan di
/etc/git-core
) - Pengaturan global per pengguna (disimpan di
~/.gitconfig
) - Pengaturan lokal per-repositori (disimpan di
$REPO/.git/config
)
Opsi-opsi ini mencakup sebagian besar dasar tetapi saya sedang mencari cara untuk menangani tingkat keempat. Saya memiliki koleksi repositori (sangat) besar yang saya perlukan untuk menggunakan nilai yang berbeda user.email
dari biasanya. Repositori ini sering dibuat dan dimanipulasi melalui skrip otomatis, dan pengaturan per pengaturan lokal repositori rumit.
Semua repositori yang dimaksud berada di bawah awalan jalur tertentu pada sistem lokal saya. Apakah ada cara untuk menetapkan nilai konfigurasi di suatu tempat yang akan diwarisi oleh semua repositori di bawah jalur itu? (Semacam .htaccess
pengaturan suka mewarisi sepanjang sistem file.) Mungkin akan ada cara untuk menetapkan nilai bersyarat dalam file konfigurasi global? Pengaturan apa lagi yang dapat dibuat dalam lingkungan UNIX untuk mengatasi satu set repositori seperti milik saya?
.gitconfig
di setiap direktori yang mereka buat. Sebagai contoh, repo IIRC Android dapat melakukan ini, tetapi Anda harus membaca sumbernya dengan hati-hati untuk mengetahuinya. (Aku tidak sepenuhnya yakin, aku belum melakukan itu dalam beberapa saat.)Jawaban:
Saya tidak menemukan cara untuk mengkonfigurasi git di level keempat ini. Satu-satunya cara tampaknya menimpa menggunakan nilai konfigurasi per-perintah
git -c key=value
.Solusi hacky saya saat ini adalah mendefinisikan fungsi shell yang berfungsi sebagai pembungkus untuk git. Ketika dipanggil, ia meneruskan argumen ke perintah sistem git, tetapi tidak sebelum memeriksa direktori yang berfungsi dan menambahkan argumen tambahan ke perintah jika berlaku.
sumber
command git -c [email protected] user.name="Alter Ego" "$@"
atau bagaimana saya harus melakukannya? Mencari tinggi & rendah dan satu-satunya referensi untuk bendera -c ini yang saya temukan adalah milik Anda, terima kasih, sangat dihargai.command git -c [email protected] -c user.name="Alter Ego" "$@"
Anda dapat mengonfigurasi alamat email untuk git dengan variabel lingkungan
GIT_AUTHOR_EMAIL
. Jika Anda menggabungkan ini dengan Execute bash scripts pada memasukkan direktori atau konfigurasi shell spesifik direktori dengan zsh Anda dapat dengan mudah mengubah pengaturan per direktori atau direktori induk, misalnya jika Anda masuk ke direktori di dalam~/work
Anda dapat secara otomatis menyesuaikan variabel lingkungan untuk mengubah email Anda alamat.sumber
Lihat solusinya berdasarkan konfigurasi git:
http://gik.firetrot.com/index.php/2018/05/06/git-configuration-across-multiple-repositor//
Tambahkan ke file “~ / .gitconfig”:
Buat file “~ / .gitconfig-project1 ″ dengan konten:
sumber
Berdasarkan jawaban Caleb, kita dapat mendefinisikan
git
perintah yang dimodifikasi yang secara permanen mengkonfigurasi semua repositori dalam direktori ini dengan benar, sehingga semua penggunaan vanilla git di masa depan akan menggunakan konfigurasi baru. Saya menggunakanhub
, yang merupakan pembungkus git lain, jadi saya mengganti sayaalias git=hub
dengan ini dan memanggilhub
fungsi saya - jika Anda tidak menggunakanhub
, ganti semuahub
doa dengancommand git
:Tidak seperti jawaban Caleb, yang hanya bekerja di shell (dan kecuali bersumber secara eksplisit, hanya di shell interaktif), ini juga mempengaruhi ujung depan git lain yang membaca dengan benar konfigurasi git, seperti emacs magit.
sumber