Wednesday, February 20, 2008

Jdeveloper ile SVN Merge

SVN Pluginini Jdeve indirmek ile ilgili bir yazı yazmıştım daha önce. Ancak SVN Plugininin kullanımında en çok merak edilen ve benim de en çok beğendiğim özelliği 'merge' oldu. Diğer clientların da merge için arayüzleri var ancak ben Jdev'inkini çok beğendim(Hakkını vermek lazım!!). Burada da paylaşmak istedim.
Kod geliştireceğiniz dosya sizin checkout tarihinizden sonra başka biri tarafından commit edildiyse merge ihtiyacı ortaya çıkar. (Commit' e izin verilmez, out-of-date hatası alırsınız.)Zira sizdeki kodun base versiyonu artık değişmiştir. Burada yapılacak şey önce projenizi update etmek(update son versiyonu lokalinize almak değil, sizin lokalinizdeki kod ile repositorydeki son kodu eşleştirmek benzeri bir işlem oluyor!!). Eğer sizin değiştirdiğiniz alanlar ile sonradan gelen koddaki değişen alanlar birbirinden farklı ise sorun yok. Update işleminden hemen sonra projenizi commit edebilirsiniz. Ancak aynı satılarda değişiklik var ise bir conflict durumu söz konusu demektir. Artık conflict olan dosyalarınız ikonlarında bir ünlem işareti belirir(Durum feci anlamında:))

Ünlem işareti çıkan dosya için sizin lokalinizdeki dosya(dosyaadı.mine gibi isimlendirilir) haricinde repositorydeki hali(dosyaadı.rxxx gibi isimlendirilir) ve de conflictten arındırılmış hali(dosyaadı) projede bulunur. Versioning menüsü altında da artık 'Resolve Conflicts' opsiyonu çıkar.
Bu opsiyonu seçtiğimizde karşımıza harkulade bir arayüz geliyor. Bakınız şekil 1-a:

Bu arayüzde sol tarafta sizin commit etme girişiminizden önce gelen son versiyon sağ tarafta sizin versiyonunuz bulunur. Farkılıklar açıkça işaretlenir ve o satırın yanında çıkan ok işareti ile ortada bulunan merge işleminin sonucunda ortaya çıkacak dosyaya eklenir. Kendi versiyonunuzdaki doğruysa sağ taraftaki ok, sizden öceki versiyon doğruysa sol taraftaki ok seçilerek ortadaki alana otomatik olarak eklenir. Yok ikisi de yanlışsa ortadaki file editable dır. O anda edit ederek conflicti çözebilirsiniz. Dosyada birden fazla çakışan alan varsa sol üstte yer alan ok tuşları ile conflictler arasında dolaşabilirsiniz.

Tüm çakışmalar bitince zaten 'merge is completed' yazısını görürsünüz ve projeye eklenen .mine ve .rxx uzantılı dosyalar kaybolur. Projenizi artık gönül rahatlığıyla commit edebilirsiniz.
NOT : Burada önemli olan merge işleminin nasıl yapılması gerektiğini dosyaları edit eden son 2 developerın oturup birlikte karar vermeleridir.
Sorularınız olursa çekinmeyin efem, şimdilik bu kadar.

2 comments:

Mustafa Tan said...

Eline sağlık. Süper bir yazı olmuş.

2ba said...

Üstat teşekkürler..