Git davranışını yerel olarak da dahil olmak üzere (özellikle Windows'da) nasıl güçlendiriyorsunuz?


13

Bu .NET dükkan svn git git için nokta alıyorum ve biz anahtarı çevirmeden önce bir çözüm olmasını istiyorum bazı yardımcı sorunları belirledim.

Bu soruda özellikle sorduğum soru satır sonu uygulama. Windows için varsayılan olarak git, yalnızca crlf sonlarından oluşan bir grup kaynak için çalışmayan 'checkout crlf, commit lf' ile yüklenir.

Bu doğru verilen talimatı bile doğru bir şekilde yapılandırmak için verilen herhangi bir geliştiriciye körü körüne güveneceğimi bilmiyorum, bu yüzden aşağıdakilerden birini (veya her ikisini) düşünüyorum ama burada başka bir rota olup olmadığını merak ettim.

  • Herhangi bir satır sonunu (veya belki de tüm satır sonlarını) kontrol eden ve o olayda reddedilen bir ön taahhüt kancası.
  • Genel yapılandırmayı 'olduğu gibi, olduğu gibi' dolduran geliştiricilere dağıtılan bir yükleme komut dosyası.

PS Bunu yazarken, svn'den git'e ilk dönüşümün varsayılan yolu uygulayabildiği ve insanlar varsayılana yapıştığı sürece, bu da oldukça sorunsuz olurdu. Git'i varsayılan olmayan 'olduğu gibi' olduğu gibi yükleyen bir .NET mağazasında git kullanan bir geliştirici olduktan sonra, orada da kendi sorunlarımı oluşturdum (hepsi varışımdan önce varsayılan olarak yuvarlandı) . Bu yüzden hala bir tür icra mekanizmasına yöneliyorum.


2
Bir ön alma kanca sunucusu tarafı ile bu okunabilir olmalıdır (crlf sonlarını sağlayın ve eğer başarısız olursa), bir güncelleme kancası ile ön birleştirmeyi de güncelleyebilirsiniz. Hangi tür git sunucusu kullanıyorsunuz? Bu iş istasyonu tarafında yapılması gerekiyorsa, bir Yapılandırma yöneticisi gitmek için bir yol olabilir, ancak daha zor ve bir sürü olumsuz tarafı olabilir. Son çare CI üzerinde linting ve prosedürleri takip etmek için insanları zorlamak için başarısız
Tensibai

1
Tensibai ile hemfikirim ve seçtiğiniz seçeneğin bunun ne kadar sıkı bir şekilde uygulanacağına inandığınıza bağlı olması gerektiğini de ekleyeceğim. Kesin uygulama için ön işlem kancaları, son işlem sonrası uyumluluk raporlaması için linting.
Dave Swersky

Teşekkürler Dave, müşteri tarafı / daha sıkı icra için benim mantık genel benim için daha az iş gerektirecek ve hataları daha erken yakalamak olacaktır. Geliştiricilerin iş istasyonlarına CM gitmemekle birlikte, dev sunucuların tümü DSC'dedir, bu yüzden eklemek önemsiz olacaktır. Düzenleme: Ayrıca teşekkür ederim @Tensibai ... müşteri tarafında gördüğünüz bu dezavantajları ayrıntılı olabilir?
ndarwincorn

1
Temelde küresel bir kanca istemci tarafını zorlarsanız, sonuçlara ihtiyaç duyan projelerde çalışmayı engelleyebilirsiniz. Ve bir şekilde kurmalısınız, herkesin doğru kurulumu izleyeceğinden emin olamazsınız. Şu anda düşünmediğim başka tabancalar olduğundan eminim
Tensibai

Sonunda sorununuzu çözmek için ne yaptınız?
Newtopian

Yanıtlar:


6

Bir şeyi yerel olarak nasıl uygulayacağınız sorusunu yanıtlamak için, her geliştirici iş istasyonunun durumunu yönetme ve uygulama konusunda çok ağır bir kaldırma yapmadan yapamazsınız ve genellikle geliştiricilerin gelişimleri üzerinde muhtemelen yerel yöneticiler olması gerektiğine inanıyorum. çünkü eğer değilse, o zaman bu ayrıcalıkları nasıl elde edeceğimizi anlayarak zamanlarını harcayacaklar.

Bunun nedeni büyük olasılıkla dağıtılmış sürüm kontrolü kullanırken yerel yapılandırma durumunu önemsemeniz gerekmemesidir. Sadece devlet önemsemeliyiz senin yapılandırması. Git'i merkezi bir sürüm kontrol sistemi olarak kullandığınızı varsayarsak, temelde herkesin yaptığı en kolay şey budur, çünkü "yapılandırmanızın" merkezi sunucuda kaydedilen kodun kopyası olduğunu varsayalım.

Bu durumda, belirttiğiniz gibi crlf / lf satır sonlarını kesen birleştirmeleri kabul etmemelisiniz. Bazı diğer istemci çalışır kirletme talebini reddetti sunucu tarafı mantığı ile yer değişimi zorlamaya zaman zorunlu kılmak Yani sizin ile repo onların potansiyel olarak kırılma biçimsel tercihlerinin.


4

Github'daki Pull isteklerini ana geliştirici veya master şubelerimize kullanarak bir inceleme sürecine ihtiyacımız var. Bu inceleme işlemi sırasında, birçok dosyada boşluk veya satır sonu farklılıkları varsa çekme isteklerini değişiklik gerektiriyor olarak işaretleyeceğiz ve çekme isteği yaptıkları geliştiricinin veya ana dalın biçimlendirmesini izlemeleri konusunda ısrar edeceğiz.

Ayrıca, hangi dilleri kullandığınıza ve hangi CI araçlarını kullandığınıza bağlı olarak, oluşturma işlemi veya çekme isteği adımı sırasında ayarladığınız kurallara göre kodu otomatik olarak biçimlendirebilen bazı güzel araçlar da vardır. Bu, kodun tutarlı görünmesini sağlamaya ve kod işlerken biçimlendirme sorunlarını en aza indirmeye yardımcı olur.


Kullandığınız takım hakkında ayrıntılı bilgi ister misiniz? Bunu başarmanın birkaç yolu olduğu ve kendimize ait olduğumuz ancak bunları henüz bu şekilde uygulamadığımız düşünüldüğünde, bunu nasıl çözdüğünüzü merak ediyorum.
ndarwincorn

1
Daktilo, github ve cenkins kullanıyoruz. Dizginin bu tür şeyler için hoş bir ekosistemi var.
avi

3

Havuz başına kullanıcı yapılandırmasını geçersiz kılmak için havuz başına yapılandırma kullanabilirsiniz . Merkezi kaynak olarak kabul edilen repo üzerinde yapıldığında, klonlarla yayılmalı ve yerel olanlar da dahil olmak üzere diğer depolara çekilmeli ve böylece yerel konfigürasyonu merkezi olarak geçersiz kılacaktır.

Bunu, dosya sonlarının olması gereken şey olduğunu kontrol etmek ve koşer değilse birleştirmeyi / itmeyi reddetmek için merkezi repodaki kancalarla da uygulayabilirsiniz . Bununla birlikte, bu kancalar repo ile klonlanmayacaktır, en azından doğrudan değil, ancak bu gerekli değildir, çünkü kuralların sadece merkezi repoda uygulanması gerekir.

Git init'inizdeki şablonları kullanarak , depolarınızın tüm gitignore, gitattributes etc dosyalarıyla tam olarak olmasını istediğiniz şekilde oluşturulduğundan emin olabilirsiniz.

Sorunuzla doğrudan ilgili olmayan son şey, svn saavy takımını git tabanlı bir iş akışına alırken en büyük sürtünme noktasını buldum. Bu görsel işaret sayfasının hangi komutun hangi parça için hangi etkiye sahip olduğunu biraz açıklamasına yardımcı olduğunu buldum .

Umarım bu biraz yardımcı oldu.

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.