Deponun bir parçası olarak bir git yapılandırması nasıl saklanır?


155

Burada açıklandığı gibi, ödeme sırasında dosyaları karıştırmak için filtreler kullanıyorum . Şimdi sorun şu ki, filtre tanımı yalnızca yerel yapılandırma dosyamda saklanıyor:

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

İş arkadaşlarım bu Dategenişletmeden yararlanmak istiyorsa , filtre tanımımı kopyalamaları gerekir. Ve eğer değiştirirsem, onları bilgilendirmem gerekir, vb ..

Peki bu filtre tanım bölümünü .git/configdepoda saklayıp git'i kullanabilir miyim?


1
Ekip çapında bir yapılandırmayı otomatik olarak paylaşmak için bu bağlantıyı yararlı bulabilirsiniz .
mljrg

Yanıtlar:


171

3 desteklenen kapsam vardır .gitconfigdosyaya: --system, --global, --local. Ayrıca özel bir yapılandırma dosyası oluşturabilir ve bunu desteklenen dosyalardan birine dahil edebilirsiniz.

İhtiyaçlarınız için özel - doğru seçimdir. Filtrenizi içine yazmak yerine depo kökünüzdeki dosyaya .git/configkaydetmelisiniz .gitconfig:

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

Oluşturmak .gitconfigiçin filtreli ve değişiklikleri uygulayın. Daha sonra meslektaşlarınız her zaman güncel tutacak - ancak manuel olarak dahil etmeleri gerekecek. Bir güvenlik açığı oluşturduğundan, özel yapılandırma dosyanızı tek başına git aracılığıyla otomatik olarak dahil etmeniz mümkün değildir .

Bu yapılandırmayı tek bir havuza uygulamak için, her kullanıcının aşağıdaki komutu içinde çalıştırması gerekir your-repo/:

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

Referans: https://git-scm.com/docs/git-config#_includes

Kişisel verileri özel olarak saklamamaya dikkat edin .gitconfig, örneğin user.*bunları globalde saklayın .gitconfig.


42
Olası her kullanıcıya .gitconfigkendi repo'larını eklemesi gerektiğini bildirmekten kaçınmak istiyorum ~/.gitconfig. Kimse hatırlamayacak. Git'in HER ZAMAN depoyu okumasını sağlamanın bir yolu var mı .gitconfig?
Zaar Hai

9
@ZaarHai: Sanırım hayır, çünkü bu tehlikeli olabilir. (Komutları "ilginç" bir şeyle değiştiren bir depoyu klonladığınızı düşünün, örneğin ana dizininizin içeriğini dışa aktarın). configureKullanıcıların çalıştırması gereken bir komut dosyası veya benzeri bir şeyiniz varsa , bunu dahil etmeyi (veya kullanıcıdan isteyip) ayarlamış olabilirsiniz.
Hasturkun

4
@HenryBlyth bir --fileseçenek var gibi görünüyor git config, daha sonra deponuza işaret edecek şekilde ayarlayabilirsiniz .gitconfig. Henüz test etmedim ama sorunuzu yanıtlıyor gibi görünüyor. Dokümanlarda okuyabilirsiniz. git-scm.com/docs/git-config#FILES
theUnknown777

13
Git, güvenlik tehditlerini önemsemeniz gereken yerlerde kuruluşunuzun dışında dağıtılan kod yazdığınızı varsaymadıysa harika olun. Bazen sistem kullanılabilirliği ve otomasyon, güvenlikten daha yüksek önceliğe sahiptir.
Geordie

2
Ekibiniz tarafından rutin olarak kullanılan bir göreve (bir görev çalıştırıcı kullandığınızı varsayarak) sinsice komut ekleyebilirsiniz.
Mieszko

20

.gitconfigDosyayı bir git deposunda varsayılan olarak kullanamazsınız , ancak git config'in sürümlendirilmesi için ona bağlanabilirsiniz.

Buna şu şekilde bağlanabilirsiniz:

[include]
  path = ../.gitconfig

Basit oluşturduk senaryoyu gitconfig.sh (kopyadan daha hızlı) bunu sizin için + basit .gitconfigisterseniz, bu Repo için bir göz atın böylece dosyayı https://github.com/HoBi/dotfiles .


DÜZENLEME : Dosyayı sildim, ancak burada bulabilirsiniz https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh


@HoBi Görünüşe göre gitconfig.sh dosyanızı GitHub'dan sildiniz, herhangi bir nedenle artık istemiyorsunuz?
Novice C

1
@NoviceC İsterseniz dosya var. github.com/HoBi/dotfiles/blob/… .gitconfig veya gitconfig.sh'yi git projenizde saklamamanız gerektiğine inandım - bunlar kişisel ayarlardır ve genel ayarlarınızda ~/klasörde saklanmalıdır . Ve herkesin farklı ihtiyaçları olabilir, öyleyse neden herkesi git deposunda yapılandırmanızla uğraşın. :-)
tenhobi

@tenhobi, herkesin bir projede paylaşması ilginç olabilecek bazı yapılandırmalar var. Bunu, proje kodlama akışıyla takma adlar için yapacağım
Bernardo Dal Corno
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.