22 Haziran 2011 Çarşamba

commit yapmak artık daha kolay!

Mercurial kullanırken 'hg commit' demek beni hep huzursuz etmekteydi. Ta ki MQ ile tanışana dek. Commit yaptıktan sonra commit'in hash'i yeni commit'in parent'ı olarak kullanılacağı için commit'i hiçbir şekilde değiştirmek artık mümkün olmuyor. Push demeden önce bir sorun fark ettiyseniz, bunu yeni bir commit ile halletmekten başka çareniz yok. MQ (Mercurial Queue) burada yetişiyor yardıma. Ana fikri değiştirilebilir changeset'ler yaratmanıza imkan vermek. En çok iki açıdan faydası var.
  1.  Girişte yazdığım gibi, bir commit yapmanız gerek fakat bunun en mükemmel commit olduğuna ikna olmadığınız halde şimdilik yeterli gibi duruyor. Bu durumda bunu bir mq patch olarak kuyruğa atabiliriz ve daha sonra üstüne yeni patchler eklesek dahi geri dönüp tekrar düzenlememiz mümkün. Bunun sayesinde commit'imizi yapmış gibi varsayıp yeni bir commit üzerinde çalışmaya başlayabiliriz. Ya da aynı anda birden fazla commit üzerinde çalışabiliriz.
  2. Bir dosya üzerinde çalışırken çalıştığımız dosyada bir hata bulduk. Bulduğumuz hatayı onarırsak bu değişiklik bizim önceden yaptığımız çalışmalarla birlikte commit edilecek ve atomic commit yerine iki farklı işi tek bir commit'de yollamış olacağız. Ya da hatayı işimiz bittikten sonra düzelteceğimize kendimizi inandırıp unutmamız da mümkün. Bunun yerine mq kullanıp şu ana kadar yaptığımız değişiklikleri bir patch kuyruğuna atıp hatayı onaran kodu commitleyip tekrar patchimize dönüp çalışmaya devam edebiliriz.
Bir patch ile işimizin bittiğine emin olduktan sonra onu gerçek bir commit'e çeviriyoruz. Şurada MQ ile ilgili güzel bir belge mevcut. Ne işe yaradığını ve nasıl çalıştığını tam olarak anlayıp kullanmaya başladıktan sonra hayat daha bir güzel oluyor. Yatmadan önce patch'imi qrefresh edeyim diye buluyorum kendimi.

1 yorum:

vasu sree dedi ki...

Hi,
This is very nice and good one.