Git'te kaydedilen verileri kontrol etmenin doğru yolu nedir?


13

Amacım, belirli gereksinimleri karşılamayan taahhüt verilerini kontrol etmek ve daha sonra oluşturulmuş veya uzak depoya aktarılan taahhüdü reddetmek.

Ön işleme kancası yapmanın sorunu, ön işleme kanca dosyasını manuel olarak güncellemek zorunda olan birçok kişiye dağıtmanın zor olmasıdır. Git de, .git klasöründe dağıtım için çok kolay olan alt modüllere sahip olmanıza izin vermez.

Gördüğüm diğer seçenek, her bir dev tarafından itilen her taahhüdü kontrol edecek ve taahhütlerden herhangi biri testlerde başarısız olursa itmeyi reddedecek olan uzak taraftaki güncelleme kancasına inanıyorum.

Herkes bu sorun hakkında herhangi bir görüş var mı? Ve eğer öyleyse, bana örnek bir güncelleme kanca komut dosyası verebilir veya yönlendirebilir misiniz? Nasıl çalıştığı konusunda biraz kafam karıştı.


4
Bu harika bir ilk soru.
Daenyth

Yanıtlar:


7

önce kalifiye olmayan kodun işlenmesini veya yukarı akışa aktarılmasını / yayınlanmasını istemiyorsanız bunu anlamanız gerekir.

bence daha sonra daha uygun.

git gibi bir DVCS ile. her geliştiricinin yerel deposunu nasıl kullandığını gerçekten kontrol etmek istemezsiniz. ve bunun üzerinde gerçekten kontrol sahibi olamazsınız.

bir ön taahhüt kancası, ilgili herkes gönüllü olarak kucaklarsa, temel doğrulama ve sanitasyonun yanı sıra iyi çalışır. bunu şirketimizde gevşek bir şekilde uyguluyoruz. ancak, her zaman atlanabilir git commit --no-verify.

sunucu tarafı kancası ise bir programcının yerel iş akışına müdahale etmez ve projedeki diğer kişilerin çalışmalarını yalnızca belirli ölçütleri karşılayan kodlara dayandırdıklarından emin olur. normalde insanların otomatik kontrolleri uygularken aradıkları budur.

Bu otomatik doğrulama, genellikle kod incelemesi veya çift programlama ile elde edilen kalite kontrolünün yerini almak anlamına gelmez.

github'a aşina iseniz, "çekme isteği" nin bu konuya başka bir yaklaşım olduğunu fark edersiniz. birçok açık kaynaklı proje ve şirket, şube izni kontrolü ve kod incelemesi için github'un çekme talebini kullanmaktadır. ama insan etkileşimi gerektiriyor, bu yüzden istediğin şey olmayabilir.


1

Daha önce belirttiğiniz gibi, bunu teknik olarak mümkün olsa da, istemcide yapmak muhtemelen pratik değildir. Ayrıca, birçok git kullanıcı ara iş yapar, bu yüzden her taahhütte acımasız kontroller yapmak verimsizdir.

Standart çözüm bir sunucu tarafı kancası olacaktır. Muhtemelen pre-receivebir itme her geldiğinde çalışan ve isterse itmeyi reddeden bir kanca ayarlamış olursunuz. Gerisi yapmak istediğiniz kesin kontrollere bağlıdır.

Bu Pro Git , bölüm 7.3 Git - Git Kancalarını Özelleştirme bölümünde açıklanmaktadır .


Cevabınız için teşekkür ederim ve yeni Git web sitesini gerçekten çok seviyorum. Benim tek sorunum, özellikle işlemde tam olarak nerede olduğunuzu ve neyi kontrol etmeniz gerektiğini bilmediğiniz için kendi işçilik kancalarınızı yazmaya başlamak zor. Ön alma kancası yazmaya çalışıyorsam, uzaktan kumandanın ittiğim şeyin bir izleme dalı olduğunu varsayabilir miyim? Nasıl bilebilirim? Keşke bu durumda zaman içinde sahip olduklarınızı simüle etmenizi sağlayacak bir tür özellik olsaydı.
dalanmiller
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.