SORU
17 Ocak 2011, PAZARTESİ


Git çünkü nasıl kullanılır?

Bazı makaleler git bisect harika olduğunu söyleyerek okudum, ancak anadili değilim ve bu harika bir şey anlamıyorum.

Bu kadar şaşırtıcı olan, bazı kod örneği üzerinde gösterilmektedir misiniz? Sadece svn blame gibi bir şey mi?

CEVAP
17 Ocak 2011, PAZARTESİ


git bisect arkasındaki fikir tarihinde ikili bir arama belirli bir gerileme bulmak için yapmaktır. Aşağıdaki geliştirme geçmişine sahip olduğunu hayal et

... --- 0 --- 1 --- 2 --- 3 --- 4* --- 5 --- current

Programınız düzgün current uyarlamayı çalışmayan ve 10* *uyarlamayı çalışma olduğunu biliyorsun. Bu gerileme, büyük olasılıkla tamamlar, , , *, 5, *43*12116*biri tanıtıldı yani.

Her commit kontrol et, inşa et, eğer gerileme mevcut olup olmadığını kontrol etmek için deneyebilirsiniz. Eğer yaparsa büyük bir sayı varsa, bu uzun bir zaman alabilir. Bu doğrusal bir arama. Daha iyi bir ikili arama yaparak yapabiliriz. Bu git bisect komutu yapıyor. Her adımda yarı yarıya potansiyel olarak kötü olan revizyonlar sayısını azaltmak için çalışır.

Bu komutu kullanırsınız:

$ git stash save
$ git bisect start
$ git bisect bad
$ git bisect good 0
Bisecting: 2 revisions left to test after this (roughly 2 steps)
[< ... sha ... >] 3

Bu komuttan sonra, git ödeme bir taahhüt. Bizim durumumuzda, 3 taahhüt olacak. Program kurmak gerekiyor ve regresyon olup olmadığını kontrol edin. Ayrıca eğer değilse, eğer gerileme mevcut, veya git bisect good git git bisect bad ile bu revizyon durumunu söylemek gerekir.

Hadi regresyon tamamlama 4 kullanılmaya başlandı sanırım. Daha sonra regresyon bu revizyon mevcut değil, ve git bunu söylüyoruz.

$ make
$ make test
... ... ...
$ git bisect good
Bisecting: 0 revisions left to test after this (roughly 1 step)
[< ... sha ... >] 5

Kasaya başka bir taahhüt olacak. 4 ya 5 sadece iki iptalleri var. Hadi 5 seçti sanırım. Bir inşa sonra biz programı test ve regresyon bulunduğunu görebilirsiniz. Biz o zaman git söyle:

$ make
$ make test
... ... ...
$ git bisect bad
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[< ... sha ... >] 4

Son revizyon, 4 test ediyoruz. Ve regresyon tanıştıran kişi olduğu için, 33 ** diyoruz:

$ make
$ make test
... ... ...
$ git bisect bad
< ... sha ... > is the first bad commit
< ... commit message ... >

Bu basit bir durum, Biz sadece vardı için test 3 sürümleri (3, 4, 5) yerine 4 (1, 2, 3, 4). Bu küçük bir zafer olduğunu, ama bu bizim tarihimiz çok küçük olmasıdır. Eğer arama aralığı N tamamlar, git bisect ile 1 log2 N iptalleri yerine kabaca N / 2 doğrusal bir arama iptalleri ile test beklemesin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Modus Recordings

    Modus Record

    26 Kasım 2008
  • NextKsa

    NextKsa

    7 EKİM 2009
  • RocketJump

    RocketJump

    22 ŞUBAT 2006