Kaynak kodu kontrol etmeden önce bazı iyi uygulamalar nelerdir? [kapalı]


47

Ekibim kaynak kontrolü için Team Foundation Server kullanıyor ve bugün kontrol etmeden önce bazı hataları ve duman testi uygulamalarını düzelttim ancak bazı kodları yorumlamayı unuttum. (Bu kod kullanıcı arabirimini biraz garipleştirdi.)

Kodları kontrol etmeden önce hangi iyi uygulamaların olduğunu bilmek istiyorum - bu tür bir hata yapmak istemiyorum.

Yanıtlar:


149

Yapma alışkanlığımı edindiğim bir şey de, teslim etmeden hemen önce, kontrol etmek üzere olduğum her dosyanın farkına bakmak.


46
+1 bariz, ancak dışarıdaki biri bunu yapmıyorsa, yanlış yapıyorlar!
David Heffernan,

6
+1 Aslında o kadar açık değil ama yapmazsan çok üzülürsün.
Nemanja Trifunovic

14
+1 Ayrıca, bunun çok fazla iş olduğunu düşünüyorsanız, muhtemelen bir kerede çok fazla taahhütte bulunuyorsunuz.
mpeterson

5
Ayrıca, farklara bakmak, özellikle birden fazla düzeltme yapmanız durumunda, değişikliklerinizle neyi başarmaya çalıştığınızla ilgili açıklayıcı nota ne koyacağınızı bilmenizi kolaylaştırır.
Jonas


63

Yorum yapma kodunu hiçbir zaman girmemelisiniz. Check-in işlemlerinden önce yorum yapmanız gereken bir kodunuz varsa, bunu yanlış yapıyorsunuz demektir.

Kurallara gelince:

  1. Son olsun
  2. Birleştirme çakışmalarını düzelt
  3. İnşa etmek

    3.1 Yapı hatalarını düzelt

  4. Testleri çalıştırın

    4.1 Bozuk testleri düzeltin

  5. 1’e gidin (elde edilecek yeni bir şey olmayana kadar)

Sadece tüm adımlar tamamlandığında kontrol edin.

Check-in dansına bakın .


Diğer iyi uygulamalar:

  • Beklenen dosyalar olduklarından emin olmak için check-in yapmak için dosyaların listesini inceleyin.
  • Her dosya için değişiklikleri gözden geçirin (silme / ekleme / değişiklik)

Burada iki katına çıktım. Belki de 'yorumlanan kod' mu demek istiyorsun? Kendim, uncommented kodunu asla kontrol etmemeye meyilliyim!
Pontus Gagge

11
+1 - burası tam bir liste! YAPI KIRMAYIN !!
ozz

1
@Philip - Madem olarak biliyorum bu kadar uzun bu basit olduğu gibi iyi bir uygulama olmadığını ve kısa vadeli aracı, o zaman bu o kuralı kırmak için birkaç durumda biridir. İnsanların check-in kodunu yorumladıklarında "kaybetmeyecekleri" hakkında çok daha fazla şey buluyorum.
08:

2
@Philip, bu yüzden git güzel. Bu WIP değişikliklerini istediğiniz kadar yerel olarak gerçekleştirebilirsiniz, daha sonra ana havuza geçmeden önce, siz rebase -ive yerel tarihinizi temizleyin, gerektiği gibi ezilme taahhütleri verin, böylece ana hattın çirkin devam eden bir taahhütü yoktur.
Alex Budovski


20

Çok fazla burada pantsweasel ait olmaya çalışıyorum değilim, ama bu söz konusu varsayım (ve tüm ama cevapların bir) çoğunlukla TFS, SVN, Perforce, vb gibi merkeze bağlı VCS için geçerlidir
yeterince adil, ne var OP kullanıyor.

Öte yandan, DVCS (Mercurial ve Git gibi) kullanırken, genellikle kontrol etmeyi beklememelisiniz ve cevaplarda belirtilen şeylerin çoğu - fark, en son, birleştirme, vb. - gerekli değildir . Kod incelemeleri ve testler gibi şeyler bile kontrol ettikten sonra yapmak için daha iyidir (belki zorlamadan önce, bağlı olarak ...)
Burada (şu ana kadar) gördüğüm bir istisna, bir iş öğesiyle ilişkilendirmektir. Tabii ki, checkin hakkında yorum yapmak da iyidir ...


5
Checkin hakkında yorum yapmak için +1. Mağazamda politika değil, ancak sadece daha sonra hafızamı canlandırmak için her zaman açıklayıcı bir not bırakmaya çalışıyorum.
PSU

Kabul Edildi - Oded'in iş akışının , adımların her biri arasında veya en azından her bir döngü arasında sürüm kontrolünden çok fayda sağlayabileceğini hayal ediyorum .
Kevin Vermeer

7
Bu adımların tümü, kontrol ettiğinizde, bastığınız zamana kadar geçmiyor mu?
user13278

@ user13278 bazıları yapar, ancak farklı. Örneğin, birleşme tamamen farklı bir deneyimdir - ve zorlarken bunu bir araya getirme-tryagain döngüsüne gerek yoktur. Ve bunu bir sürü değişiklik için yapabilirsin ve her check-in'i tekrar yapmak zorunda değilsin. Genel olarak, bu adımların çoğunun artık kontrolle ilgisi yoktur - örneğin istediğiniz zaman çekersiniz, kontrol ettiğinizde (veya zorladığınız için). Tabii ki yine de test etmeniz gerekiyor - ama bu kendi zaman diliminde olabilir. İtme hala çok daha hafif kalıyor, ama tabii ki itmediğinizden emin olmak istiyorsunuz.
AviD

2
+1. Bir iş öğesiyle ilişkilendirmek Git veya Hg'de yapılması zor olan şeydir. Kiln gibi bir paket çalıştırmanız gerekecek. Bu, TFS'nin iyi olduğu (sadece) alandır. Yine de sürüm kontrolü için zararlıdır.
Robert Jeppesen,

8

Diğer cevaplarda görmediğim üç şey:

Yeni dosyalar ekle

  • Değişmez listenizde olmayan yeni dosyalar arayın.
  • Performans gibi SCM'lere özel olabilir - değişikliklerinizdeki her şeyi söylemelisiniz.

Değişmeyen dosyaları geri al

  • Başkalarının değişikliklerine bakarken nefret ediyorum ve dokuz dosyadan oluşan bir değişmez var ancak bunlardan sadece üçü değiştirilmiş.
  • Ayrıca dosyaları boşluklu veya başka türlü anlamsız değişikliklerle geri döndürürüm.

Gönderdiğiniz taahhütleri kontrol edin

  • Yaptıklarınızdan sonra yapının yeşil kaldığından emin olun.
  • İşlerimden sonra senkronize edeceğim, inşa edeceğim ve çalıştıracağım ikinci bir makineye sahiptim, eğer bir şeyler ters giderse, kolayca girip düzeltebilirdim.

Git'i kullandığımda iki şey:

Atomik taahhüt:

  • Sadece taahhüt için bireysel fonksiyonel değişiklikleri aşamalandırın.
  • Taahhütleri mümkün olduğunca küçük yapın. Yama yapma, geri alma ve anlamalarını kolaylaştırın.
  • git add --patchGerekirse değişikliğimi birden fazla parçaya bölmek için kullanıyorum .

Özetlerken farkları görüntüleme

  • Her zaman kontrol git commit --verboseederim, böylece değişiklik mesajımı yazarken yaptığım değişikliğin farkını görebiliyorum. (Ya da farkı göstermek için yamalı git-vim'imi kullanırım.)
  • Bu, değişikliklerinizi yapmayı ve tüm taahhüdü açıklamayı çok daha kolaylaştırır. Bazen, bu aşamada istenmeyen değişiklikler görüyorum. (Değişikliğinizi açıklamak, onun hakkında düşünmenize yardımcı olur.)

Atomik taahhütten bahseden tek kişi olmak için + 1.
Stephen Paulger

7

Ekibimin sunucularında uygulayacağım birkaç 'iyi uygulama' öğesi oldukça açık. Öncelikle, check-in işlemine başlamadan önce, kodunuzda herhangi bir kimsenin çarpışmayacağını kontrol etmediğinden emin olmak için daima en son halini almalı ve yerel bir yapı kurmalısınız. Ayrıca, sunucunuzla değil yerel makinenizdeki kod çakışmalarına dikkat edin. Kodunuz, en son indirilen kod ile birlikte, doğru bir şekilde oluşturup, çalıştığı onaylandıktan sonra bir sonraki adıma hazırsınız. Herhangi bir otomatik sınama gerçekleştirin ve daha sonra düzgün çalıştıklarından emin olmak için girişinize başlayın. O zaman, sadece emin olmak için, en son tekrar alın.

Tüm check-in'lerde yorum yapmaya zorlamak bir TFS Yöneticisi olarak mümkündür. Uygulanıp uygulanmadığına bakılmaksızın, her zaman işiniz için check-in yorumları girmenizi tavsiye ederim. Bunu yapma seçeneğiniz varsa, uygulayın. Yorumların, en azından, kodunuzu en son kontrol ettiğinizden bu yana değiştirdiklerinizin genel bir özeti olduğundan emin olun. bu check-in sırasında değiştirildi. Kırık bir yapı hata ayıklama çok daha kolay hale getirir.

Ayrıca, TFS Yönetici ayrıcalıklarına sahipseniz, check-in işlemlerinde haddeleme yapılarını uygulayın (check-in işlemleri bir şeyi kırarsa hemen herkesin bildiğinden emin olmak için) ve sunucuyu kapılı bir check-in gerçekleştirecek şekilde ayarlayabilirsiniz ( işaretlenen kod yapıyı bozarsa, sunucu bunu reddeder), ya da basitçe bir hata oluşturmasını ve yapıştıran kişiye atamasını sağlayabilirsiniz.

Her şeyin yolunda gitmesini sağlamak için açabileceğiniz veya kapatabileceğiniz ya da TFS-Yöneticinize işleri güzel ve temiz tutmak için açmanızı önerebileceğiniz birkaç seçenek var ... ama bunlar büyük ölçüde tercih edilir


Bu cevabı beğendim. Kalite Güvencesi olarak, bazen ortaya çıkmasına neden olan taahhüde bağlı olarak bir hata izleriz ve açıklayıcı yorumların olması güzeldir. Ayrıca serbest bırakma zamanında, mağazamız, yeni özelliklerin ve değişikliklerin bir damıtması olan serbest bırakma normları adı verilen bir şey oluşturur ve iade notları bu bilgilerin önemli bir kaynağıdır.
Omega Centauri


4

Windows’tan check-in yaptırıyorsanız, kodunuzun görünmez ^ M karakterleri olup olmadığını kontrol edin - UNIX’deki editörler genellikle bunun için hatalar / uyarılar verir.

Ayrıca sekmeleri de deneyin ve değiştirin; farklı kullanıcılar, bazılarının 4 boşluklu, bazılarının 8 kodlu ve kod okunabilirliği için iyi olmayan sekme çubuklarını farklı şekilde görmesini sağlar.

En iyi yaklaşım IMHO, önceden tanımlanmış bir komut dosyasının kodunuzu kuruluşunuzun kodlama kurallarına göre kontrol etmesini sağlamaktır. Kaynak kontrol sistemlerinin yükleri bu işlevselliğe sahiptir.


4
^ M karakterlerini kontrol etmek, ancak bir UNIX kutusunun geliştirme sürecine herhangi bir şekilde dahil olması durumunda anlamlıdır. Bazı şirketler tamamen Windows dükkanlarıdır.
Dima

1
Kesinlikle. Bu yüzden sekmeleri kullanmıyorsun.
Alex Budovski

Bazı SCM'ler sizin için satır sonlarını işler (bazıları diğerlerinden daha iyi yapar). Perforce ( kb.perforce.com/?article=063 ), git (core.eol içinde git config), svn: vb (svn eol tarzı),
idbrii

@Alex: Veya her yerde sürekli olarak sekmeler kullanıyorsunuz. Tutarlı olduğunuz sürece hangisini yaptığınız önemli değildir .
Donal Fellows,

@donal, hayır. Sorun burada; sekmeler editörünüzün konfigürasyonuna tabidir ve dolayısıyla kendiliğinden tutarsızdır. Bazı "editörler", cmd.exe ve çoğu Linux konsolu gibi yapılandırılamaz; bu nedenle kendinizle bile tutarsız olabilirsiniz.
Alex Budovski

4

Şirketimde check-in incelemeleri kullanıyoruz. Bunların ayrıntılı olması gerekmez, ancak yalnızca bir kişiye changelistinizdeki farklılıkları göstermek ve onlarla konuşmak bazen testlerde kaçırdığınız tuhaf yazım tipini vurgulayacaktır.

Kaynak kontrol sunucumuz, yorum yazarının yorumlarına not vermediğiniz sürece check-in yapmanıza izin vermez (formda! Harfleri, örneğin, Bruce Wayne incelemenizi yaptıysa BW). Gözden geçiren kişi, incelemeye yardımcı olduklarını belirten bir e-posta alır. Bu bariz sömürüye açık, ancak gayet iyi çalışıyor gibi görünüyor.


4

Mümkün olduğunda, bir girişi bir iş öğesiyle ilişkilendirmeyi seviyorum. Bu size NEDEN değiştirildiği değil, NEDEN değiştirildiğine dair bazı bağlamsal bilgiler verir. TFS oldukça iyi bir iş öğesi izleme sistemine sahiptir, bu yüzden check-in sırasında yapması çok önemsizdir.

(Bu benim değişikliklerin farklılığını gözden geçirmenin yanı sıra)


2
Bu kod kontrol edilebilir, böylece, bir check-in politika olarak ayarlanabilir olmadan bir iş öğesi ilişkilendirme.
John Saunders

İyi nokta John. Aslında bunu çalıştığım yerde çok yakında yapmayı umuyorum.
mpeterson

Eşya zorlama genellikle karşı-üretkendir. İnsanlarınızın bunun kendileri için iyi olduğunu anladığından emin olun.
Robert Jeppesen

3

Yaptığım küçük bir şey, gerçekten değişmemiş dosyaları teslim etmemek. Bu dosyalar istemeden değiştirilmiş veya geri alınmış ya da başka şekilde kararsız hale getirilmiş yeniden yapılanmalara dahil olmuş olabilir.

Bu şekilde, değişiklik kümeniz (bir iş öğesiyle ilişkilendirilmiş), iş öğesini tatmin etmek için gereken dosyaları tam olarak içerir.


3

Tüm cevapları burada birleştirmek ve eksiksiz bir kontrol listesi vermek için

  1. [check-in / check-out] doğrudan diğerlerinin çalıştığı akıma giriş yapmamalısınız. Bir akış stratejisine sahip olmalısınız: örn. geliştirici başına, başkalarını rahatsız etmeden bağımsız olarak kontrol edip kontrol edebileceğiniz bir akış: Güvende olun ama kendi gelişim akışınızda [yalnızca kendi gelişim akışınızda]. İçinizdeki her kontrolde, değişikliklerinizi değişiklik kümesi adı verilen değişikliğe karşı atomik olacak şekilde bir değişiklik kaydıyla ilişkilendirin (böylece 'her şeyi' vermek zorunda kalmadan tek tek rfc / böcek vb. Dağıtabilirsiniz).

  2. [daha sonra takım akışınızla yeniden derleyin] bu, diğer akışlardaki değişiklikleri kendi akışınızda aldığınız anlamına gelir. Bu işlem sırasında birleştirme iletişim kutusundaki tüm "farkları" görebilir ve bunlardan geçebilirsiniz veya ... binlerce varsa ve / veya kod kullanmıyorsanız, aynı zamanda örneğin veri modelleri / siebel projeleri vb. önemsiz olmayan birleşme, önemsiz-otomatik ve önemsiz manuel birleştirme, son kategoride zor olanları içerir. Hala kendi akışında çalıştığını unutma.

  3. [tamam rebase] Her şey yolundaysa, ekip akışından yeni aldığınız tüm değişiklikleri kontrol edin: kendi akışınız artık güncel

  4. [teslim et] şimdi çalışmanızı takım akışına iletin. Eğer her şeyi vermek istemezseniz, o belirli dosya sürümleriyle veya çözülmüş bir RFC / kusur kümesiyle örneğin 1 belirli RFC seçebilirsiniz.

  5. [test sunumu] tamam olmalı, ancak bu arada bulunan birinin de değişiklik yapma şansı olduğu için değişiyor: çalışmanızın takım akışındaki en son değişikliklerle çalışıp çalışmadığını test edebilirsiniz. Aynı birleşme diyalogları ile farklılıklar gösteriyor.

  6. [Teslimat tamamla] Teslimatı tamamla ve işin şimdi takım akışında.

Daha karmaşık hale getirmek için: Teslim ettiğin işin hala şansı olduğu için = tamam ANCAK, zaten bir başka sürüm üzerinde çalışıyorsun, her zaman teslim edildikten sonra temel almalısın ve hangisinin hangi kullanıcıların temel almasını istediğini belirle . Bu, diğer geliştiricilerin akıştaki en son sürümden değil önerilen bir sürüm aldıklarından emin olmanızı sağlar (bu senaryoda çalışıyorsanız). Bu aynı zamanda Üçlü bir kontroldür, böylece ekip akışındaki en son sürümler "kötü" olsa bile, hala başkalarının yeniden derlediği veya baktıkları sürümler değildir ve yapılandırma yöneticiniz geri almak için önceki sürümü bir sonraki sürümle birleştirebilir. senin teslimatın.

  • histumness gelen cevap 2 kez olur: 2. ve 6. adımda
  • Oded'in check-in dansındaki cevabı: idem ancak izole edilmiş çalışmanızı sağlamak için check-in ve check-out sırasında ekstra bir teslimat ve yeniden ödeme katmanı ve hatalar daha sonraki aşamalarda bile her zaman kolayca giderilebilir
  • cevaplandırılan guildsbounty'nin yanıtı: en son adım 2'dir. Derleme için: gerçekten bir derlemeniz var ... benim dünyamda veri modellerinden, kelime belgelerinden, gereksinim sayfalarından, configatica, siebel'den yapılandırma verilerinden girdileriniz var. etc .. ve evet, ayrıca java kodu, .net kodu vb. Bu yüzden burada gerçekten bir "yapı" yoktur, ancak "tek" kodunuzdan derlemenize bağlı olarak daha fazla bir entegrasyon söz konusudur, çünkü bütünleştirici şeyler olup olmadığından emin olup bilemeyeceğinizden emin olamazsınız. Test ortamlarında derlenmesi gereken şeyler gerekli ya da daha yüksek teslimatlarda başka bir takımdan bir şeye ihtiyaç duyduğu için başka bir yapıya teslim edilir.
  • guildsbounty'nin yorum yapma ve gerekli cevabı: bence VERSIONS ile Değişiklik kümelerindeki (ve tip: defects, RFC, hotfi) değişikliklerin entegrasyonunun olmadığı her ortam olgun değildir. Örneğin, bülten notlarını, dokunulan tam sürümlere tıklanabilen, gönderilen hata ve rfc'lerin miktarıyla otomatikleştiremiyorsanız, kaosun (örneğin, hello.c'nin 1. ve 3. sürümleri çok iyi bir şekilde teslim edilebildiğinden, ancak çok iyi bir şekilde teslim edilebildiği için) 2 teslim edilmemeliydi, çünkü buradaki şeyler daha sonraki bir sürümün bir parçası olacaktı, fakat bazı noob zaten içeri koydu) (yani eğer merhaba 3. versiyonunu da çıkarmak istiyorsanız, bu bir manuel karar anlamına gelir. c AMAÇ, sürüm 3'ü çıkarmak, aynı zamanda, bu RFC / kusur tarafından dokunulan diğer tüm sürümleri de çıkarmanız gerektiği anlamına gelir; bu nedenle, tüm şeyi ortadan kaldırmak için bir araçla kolay ve hızlı olmanız gerekir.) aynı RFC) ama en azından buna karar vermek için etrafındaki şeylere ihtiyacınız var…). Ekstra belgeler her zaman kullanışlıdır, ancak değişiklik kümelerini ilişkilendirerek tam çevrimi elde edersiniz: sürüm <- değişiklik kümesi <- iş öğeleri <- bir bilet / rfc / hata <- bir gereksinim. Anlamı: hangi gereksinimlerin tamamen ya da tamamen yerine getirildiğini biliyorsunuz: bir gereksinimin birden fazla RFC ya da böcek ya da her neyse var. RFC'nin birden fazla kişi için birden fazla çalışma öğesi var. bu iş öğesinin bir dizi sürümden oluşan bir değişim kümesine karşılık geldiği (örneğin, sürüm 1'den kaynaklanmayan entegrasyon akışında hello.c'nin 1. ve 3. sürümleri),
  • luis.espinal'den gelen yorum: yapının kırılması, rebase'de çift kontrol edildi ve hala yayınlandı ... bilgi ve değişiklik setlerini ve baz satırlarını bilgi olarak görmeleri gereken 'yöneticileri serbest bırak ve bina yöneticileri' için daha yüksek teslimatlar var. "Asla doğrudan ana dalda çalışmayın" evet, akış yapısı büyük veya basit olabilir ancak özünde: geliştiricilerin kendi akışları vardır, yayın akışına teslim olan bir ekip akışına teslim ederler. -> böylece tüm ekiplerden yapılan teslimatlar (örneğin dokümantasyon ekibi, ihtiyaç ekibi, geliştirme ekipleri,

Örneğinizde, kodu yorumlamayı unuttuğunuzu belirtirsiniz. Hatalar olur. Çevresindeki konfigürasyon yönetim sistemi bununla ilgilenmelidir. Gerçekten de biri binlerce örnekte ortaya çıkıyor ve zaman içinde zincirlenmiş ve işlenmiş farklı sunucularda akışların hiyerarşisinde "inşa ediyor" ve "entegrasyonların" gerçekleşmesi olabilir. Bu yüzden, 5 ay sonra bile yorumlu kodunuz bir entegrasyon sunucusunda test edilir, çünkü kodunuz diğer kod ve sistemlerle entegrasyona ihtiyaç duyar, değişiklik setinizi atomik olarak almanız ve hala devam etmeniz mümkündür. Bu yüzden en iyi uygulama az ya da çok daha yüksek düzeydedir. Konfigürasyon yönetimi akışlarının genel tasarımı bununla ilgilenmelidir. Bireysel geliştiriciler için en iyi uygulama onaylama / ünite testini yapmaktır. Ama büyük resimden "


2

Aşağıdakilerden bazıları SCM'nize bağlı olarak diğerlerinden (veya farklı şekillerde) daha fazlasını uygular, işte burada:

  1. Yapıyı bozmayın - sadece derleyen kodu kontrol edin.
  2. Giriş bilgilerinizi (ve eğer SCM'niz size bu seçeneği veriyorsa, muhtemelen girişlerinizi) yorumlayın.)
  3. Uzun süre boyunca denetlenmeyen şeyler tutmayın.
  4. Sık sık check-in yapın (mümkünse günde birkaç kez.)
  5. Anlamlı bir şekilde etiketleyin.
  6. Düzenli olarak etiketleyin.
  7. Asla doğrudan ana dalda çalışmayın.
  8. Üretime yapılan her sürüm kendi etiketine sahip olmalıdır (ve mümkünse ana şubeden salt okunur bir dal). Mümkün olduğunda UAT / Entegrasyon / Üretim öncesi test sürümleri için de aynısını yapın.
  9. SCM'nizde bulunandan ve bir etiketten tam olarak üretimde olanı oluşturabiliyor olmalısınız.

NOT : Yukarıdakilerin bir kısmı oldukça açık gözükmektedir, ancak aslında ne kadar insanın ana dalda çalıştığına veya ilk önce üretimde değişiklik yaptıklarına inanmazsınız ve sonra da doğrudan ana dalda sürüm kontrolüne geçmek için el ile deltalar yaratırsınız. .. ve etiketleri ile. Yıkanmamış koltukaltı suyu ile karıştırılmış fermente safra gibi tatlı ... evet, böyle.


2

Kişisel bir kontrol listesi var. Bir girişte, karışıklık, boş başla. İkinci doğa olduğunda listeden çıkar.

Testleri yap. Geçerlerse kontrol edin. Eğer karışırsanız ve bir şey testleri geçerse, o zaman bir test yazın.


1

Aşağıdakileri yapıyoruz ...

  1. Test - Çalıştığından emin olmak istiyoruz. En azından bir şeyin bozulmadığını bilmek istiyoruz.

  2. Kod incelemesi veya en azından bir arkadaş kontrolü - Bu, bilginin yayılmasını ve insanların güncel kalmasını sağlamak için harika bir yoldur. Ayrıca olayları kontrol etmeden önce böcekleri yakalamaya yardımcı olur.

  3. Önceden bildirim gönderme - Giriş yapmadan önce gruba bir ön bildirim gönderilir. Amaç, başkalarının yalnızca hangi dosyaların veya alanların değiştiğini bilmelerini sağlamak değil, aynı zamanda değişikliklerin onları etkilemesi beklendiğinde, onlara kafa karıştırır (dikkat etmeyi seçmeli mi).

  4. Ön bildirim gönderildikten birkaç saat sonra check-in yapılır ve grup e-posta ile bilgilendirilir. Gruptaki herkes, bir hata veya özellik üzerinde belirli bir işin ne zaman yapıldığını bilebilir.

  5. Teslim etme bildiriminin bir kopyası, hata veya özellik ile ilgili düzeltme kaydına yapıştırılır. Kayıtlar arasında arama yaparken, düzeltmenin / özelliğin ne gerektirdiği hakkında bir fikre sahip olmanın çok kullanışlı olduğunu görüyoruz.


1

Çok titizlikle üzerinde çalıştığınız birim testlerinizi çalıştırın. Yeşil iyidir.


1

Kodunuzun doğru biçimlendirildiğinden emin olun (örneğin, Java için: kodunuzu seçin ve Eclipse'de Ctrl-Shift-F tuşlarına basın). Fakat aynı belgenin tamamı için aynı şeyi yaparken dikkatli olun.


1

Her zaman, her zaman, her zaman , yaptığınız değişikliklerin yapıyı bozmadığını kontrol edin. Özellikle önemsiz görünebilecek küçük değişiklikler.

Bir keresinde hafta sonu işe gitmeden hemen önce herhangi bir soruna yol açmayacağını düşündüğüm çok küçük bir değişiklik yaptım. Yeterince, bu küçük değişiklik yapıyı bozdu ve projemiz için hiçbir gece deneme çalışması yapılmadı. Soru-Cevap şefi bu konuda çok mutlu değildi ve haklı olarak.


1

Bağımsız birimler olarak girebileceğiniz değişikliklerin bazı bölümlerini arayın.

Genelde, kod üzerinde bir çalışma düzeltmesi veya geliştirmesi olduğunda, birkaç değişiklik var. Bazıları benim için gittiğim davranış değişikliğine özgü; diğerleri ise bu değişikliği daha temiz hale getirmek için yaptığım refactorings.

Her yeniden düzenleme için ayrı ayrı kontrol etmeyi tercih ediyorum, bunun gibi kendi açıklama açıklaması var:

REFACTORING: X ile Y arasında bir isim verin

X daha önce anlamlıydı çünkü ... ama şimdi Y olması gerekiyor. Bu, 9 no'lu sayı için çalışmayla ilgili.

Sonra, her iyi refactoring kontrol edildikten sonra, son davranış değişikliği genellikle önemsizdir.

Ayrıca, bazı değişiklikler birçok kod satırını etkiler ancak çok ilginç değildir, diğer değişiklikler çok yerelleştirilmiştir ancak önemli bir etkiye sahiptir. Bu değişiklikler birlikte kontrol edilirse, farkları okumak zor olabilir. Bu yüzden onları ayrı tutuyorum.

Daha sonra, biri değişim tarihini okurken, olayların mevcut duruma nasıl geldiği ve neden bu şekilde oldukları açıktır. Davranış değişikliğimi geri almak da büyük önem taşıyor çünkü tonlarca başka düzenlemeyle karıştırılmadı.


0

Birinden ödünç aldığınız bir şeyi iade ederken ne yaparsanız yapın. Temiz ve iyi durumda olduğundan emin olun. Bir karışıklık çıkardıysanız, kodu sahibine (çoğu durumda işvereninize) geri göndermeden önce temizlediğinizden emin olun.


git, herkese açık bir şekilde taahhütte bulunmadan önce pisliğinizi temizlemenize yardımcı olur. Ne yazık ki, merkezi VCS yok.
Alex Budovski,

0

İşim için yerel bir depo tuttum.

  • Ne zaman bir şeyi kontrol etsem, farkın üzerinden bakarım ve tüm değişikliklerin kabul edilebilir olduğundan emin olurum.
  • Checkin'ın temel özelliğini not almaya çalışıyorum.
  • Her bir işlem büyüklüğünü bir anahtar özellik olarak tutmaya çalışıyorum.

Bunların en iyisi olduğunu iddia etmiyorum, ama benim için çalışıyorlar.


0

Teslim edilmediğini bildiğim bir kod yazdığımda, önce "// TEMP:" ve ardından "// END TEMP" içeren bir satır eklerim. Bu, check-in işleminden önce diff yapmakla birlikte, bu kodu yanlışlıkla kontrol etmeyeceğime dair söz veriyor.


0

Eklediğiniz veya değiştirdiğiniz her şeyi iyice test edin. Denemeyi düşünebileceğiniz her olayı deneyin. Testleri KG'ye bırakmayın. Her zaman bir sandviçim olsaydı, küçük bir değişiklik yaptım ve sonra sadece güvenli tarafta olmak için bazı test davaları denedi ve hemen bir sorun gördüm, çok fazla sandviç alırdım. Genelde kendime yüksek sesle söylüyorum: "Bunu denediğim için gerçekten mutluyum ..."

Değişimin ardından kullanıcı arayüzünün garip olduğunu söylüyorsunuz. Programı sadece çalıştırıp kontrol etmeden önce UI'ye bakarsanız, sorunu fark eder miydiniz?

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.