respository etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
respository etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

30 Ocak 2017 Pazartesi

SUBVERSION KULLANIMI - 2

Subversion Kullanımına Başlarken Veri Havuzu Oluşturma

Bir projeye başlamadan önce o proje için SVN sunucunun kontrol edebileceği ve kodlarımızın güvenle saklanabileceği bir veri havuzuna ihtiyaç duyulmaktadır. Kullanıcı sabit diski üzerinde yerel bir veri havuzu oluşturulabilir bu şekilde kişisel projelerinizde sunucuya gerek kalmadan TortoiseSVN programını kullanabilirsiniz.

Öncelikle sabit diskiniz üzerinde boş bir klasör açmanız gerekmektedir. Daha sonra bu klasör üzerinde sağ fare tuşu ile tıklayarak “Create respository here” komutunu çalıştırmanız gerekmektedir. Bu işlemden sonra boş klasörümüz SVN programı için yerel veri havuzu olarak kullanılacaktır.


Proje Ekleme

Veri havuzu oluşturulduktan sonra , izlenilmek istenen dokümanları veri havuzuna eklememiz gerekmektedir. İzlenilmek istenen dokümanın bulunduğu klasör üzerinde sağ tıklayarak “import” komutunu çalıştırmamız gerekmektedir.

Bu komut işletildikten sonra dokümanın ekleneceği veri havuzunun belirlenebilmesi için bir diyalog kutusu karşımıza çıkmaktadır. Bu diyalog kutusunda “URL of respository” kısmına kullanacağımız veri havuzunun adresi girilmelidir. Biz yerel bir veri havuzu kullandığımız için file:///c:/Users\ugur\Desktop\svn_repo/trunk/project şeklinde bir yol göstermemiz gerekmektedir. Bu şekilde izlemek istediğimiz dokümanımızın olduğu “project” klasörü içerisindeki dosyalarımız veri havuzumuzda “trunk” klasörü altına atılmış olacaktır.

Bu penceredeki diğer bir bölme ise “Import Message” bölmesidir. Bu kısma eklemek istediğiniz proje ile iligli notlar ekleyebilirsiniz. Dikkat etmeniz gereken en önemli nokta URL girilirken yerel veri havuzu kullanıyorsanız file:/// şeklinde bir belirteç kullanmanızdır.

Çalışan Kopya Kontrolü

Veri havuzuna dosyalarımızı ekledikten sonra bu dosyalar üzerinde işlem yapmaya başlayabiliriz. Burada önemli olan nokta dosyaların otomatik olarak güncellenmediğini göz ardı etmemektir. Şimdi yapacağımız değişiklikler ve takipler için bir klasör oluşturup bu klasör içerisinde “Checkout” komutunu çalıştırmamız gerekmektedir. Checkout işleminden sonra dokümanımızın çalışan kopyası klasörümüze indirilmiş olacaktır. Bu kısımda görüleceği gibi veri havuzumuzdan çekilen her dosya üzerinde yeşil bir tik işareti olacaktır. Bu işaret dosyanın import edilen versiyon ile aynı olduğunu göstermektedir.

Şimdi indirdiğimiz dosya üzerinde bir değişiklik yapalım ve bu değişikliği kaydedelim. Değişiklik kaydedildikten sonra dosya üzerindeki yeşil tik işareti kırmızı ünlem işaretine dönüşecektir. Bu işaret bize veri havuzundaki dosya ile çalışan kopya olarak indirdiğimiz dosyanın farklı olduğu göstermektedir.


Dosyada Yapılan Değişiklikleri Kontrol Etmek

Dosyada yapılan değişiklikleri görebilmek için dosyamızın üzerine sağ tıklayıp “Diff” komutunu çalıştırmamız gerekmektedir.


Dif komutu çalıştırıldıktan sonra şekildeki  pencere açılacaktır. Pencerenin sol tarafında dosya içeriğimizin eski hali sağ tarafında ise yeni hali görülmektedir. Yapılan değişiklik bir alt satıra geçip “hacettepe bilisim” satırının eklenmesidir. Görüldüğü gibi eklenen satırın başında artı işareti bulunmaktadır.

Bu aşamadan sonra değişiklik yaptığımız dosyamızın yeni halini veri havuzuna göndermek için “Commit” komutu çalıştırılmalıdır. Commit komutu çalıştırıldıktan sonra dosyamız üzerindeki kırmızı ünlem işareti tekrar yeşil tik işaretine dönüşecektir.

Dosyamızı commit ettikten sonra bir önceki versiyon ile arasındaki farkları görebiliriz. Böyle bir durumda “Dif with previous version” komutu çalıştırılarak önceki versiyon ile aradaki farklar görülebilmektedir. Bununla birlikte “Show log” komutu ile dosya ile ilgili yapılan bütün değişiklikler tarih, saat ve değiştiren kişi bilgileri ile birlikte görülebilmektedir.

Yapılan Değişiklikleri Geri Almak

Dosyada yapılan değişiklikleri geri almak için Show log komutu ile karşımıza çıkan pencere istediğimiz versiyon üzerinde sağ tıklayarak “Revert to this edition” komutunu kullanarak dosyamızı eski haline geri döndürebiliriz. Bu işlemi yaptıktan sonra dosyamızı veri havuzuna tekrar commit etmemiz gerekmektedir.


TortoiseSVN Tarafından Kullanılan Simgeler


Normal : Veri havuzu ile aynı revizyonda ve durumda olan dosya anlamına gelir.
Readonly : İstemci tarafından sadece okunabilir dosya anlamına gelir.
Modified : İstemci tarafından değiştirilmiş ve henüz commit edilmemiş dosya anlamına gelir
Locked : Dosyanın istemci tarafından kilitlenip diğer istemcilerin erişimine kapatıldığı anlamına gelir. Deleted : Sunucudan silinmiş dosya anlamına gelir.
Added : Sunucuya eklenmek için zamanlanmış dosya anlamına gelir.
Ignored : Versiyon sistemi tarafından göz ardı edilmiş dosya anlamına gelir. Bu tür doya içn bir versiyonlama işlemi yapılmaz.
Non-versioned : Versiyon kontrol sistemine dahil edilmemiş fakat sunucuda bulunan dosya anlamına gelir.
Conflicted : Sunucuya update sırasında çakışma olan dosya anlamına gelir.


SUBVERSION KULLANIMI

Öncelikle kullanılacak SVN arayüzü seçilmelidir. SVN sunucudan kod ya da dokümanları çekebilmeniz için çeşitli arayüzler tasarlanmıştır. Bu arayüzler kullanılan işletim sistemine ve yazılım geliştirme platformuna göre değişiklik gösterebilir. Örn : TortoiseSVN, VisualSVN, UberSVN vb.

Anlatım aşamasında şu anda en yaygın olarak kullanılan TortoiseSVN arayüzünü referans alınacaktır. Öncelikle bir SVN sunucuya ihtiyaç duyulmaktadır. SVN sunucu olarak Google Code ya da SourceForge gibi bilinen alanların da kullanılabildiği gibi, http://beanstalkapp.com adresinden küçük bir ücretsiz SVN sunucusu da elde edilebilinir. Eğer tek başınıza çalışıyorsanız ya da profesyonel bir amaç ile kod yazmıyorsanız belleğinizden yerel bir veri alanını da kullanabilirsiniz. SVNServer alanınızı ayarladıktan sonra http://tortoisesvn.net/downloads.html linkinden işletim sisteminize uygun TortoiseSVN programını indirip kurabilirsiniz.

Programı kurduktan sonra sunucudan çekilecek dosyalar için bir klasör açıp bu klasörü ”create respository here” komutu ile ilgili klasörü SVN klasörü haline getirilmesi gerekir.

SVN Komutları

Yerel SVN klasörü oluşturulduktan sonra aşağıdaki SVN komutlarını kullanmaya başlayabilirsiniz.
Import : Halihazırda Svn’de yer almayan bir projeyi Svn sunucusuna göndermek için kullanılan komuttur.
Checkout : Svn’de yer alan bir projenin çalışan kopyasını yerel klasörünüze almak için kullanılan komuttur.
Export : Svn’de yer alan bir projenin çalışan kopyasını almadan ilgili dosyayı yerel diskinize kopyalamak için kullanılan komuttur.
Commit : Dosyanızın çalışan kopyası üzerinde yaptığınız değişiklikleri SVN sunucusuna göndermek için kullanılan komuttur
Update : Dosyanızın çalışan kopyasının sunucudaki versiyonu ile senkronize edilmesi için kullanılan komuttur.
Branching/Tagging : Genel pratik olarak kaynak kodunuzun en güncel hali Trunk klasörü altında tutulmaktadır. Geliştirme sırasındaki tüm değişiklikler Trunk klasörü altında gerçekleştirilir. Kullanıma hazır hale gelen versiyonlar ise Tag klasörü altında versiyon numarası bazında açılan klasörlerde arşivlenir. Taglar genel olarak değiştirilmezler ve arşivleme amaçlı kullanılırlar. Deneysel amaçlı çalışmalar ise Branches klasörü altında tutularak denemeler bu klasör altında bulunan dosyalarda gerçekleştirilir.
Revert : Dosyanızın istenilen bir revizyona döndürülmesi için kullanılır.
Diff : Güncel dosyanız ile diğer versiyonlar arasındaki farklılıkları görebilmeniz için kullanılır.
Show Log : Üzerinde çalışan dosyada ne zaman ve kim tarafından değişiklik yapıldığını gösterir.
Export : Çalışan kopyalarınızın bulunduğu klasörden farklı bir klasöre versiyon bağımsız olarak
dosyaları alabilmeniz için kullanılır.
Get Lock : Üzerinde çalıştığınız dosyayı kilitleyerek diğer istemcilerin bu dosya üzerinde değişiklik yapmasını önleyebilmeniz için kullanılır.

SVN - Veri Havuzu

Subversion bilgi paylaşımı için merkezileştirilmiş bir sistemdir ve bu sistemin çekirdeğini veri havuzu (respository) oluşturmaktadır. Veri havuzu ilgili bilgileri ağaç dosya yapısı ile tutmaktadır. Sınırsız sayıda istemci bu veri havuzuna bağlanarak buradaki dosyalar üzerinde okuma ve yazma işlemi gerçekleştirebilir.

Subversion veri havuzunu normal bir dosya sunucusundan ayıran en büyük özellik dosyalarda yapılan bütün değişikliklerin tutulmasıdır, hatta bu tutulan değişiklikler arasında dosyaların silinmesi yeniden adlandırılması ve yerlerinin değiştirilmesi de bulunmaktadır.

Subversion dosyaların tutulmasında kopyala-değiştir-birleştir yapısını kullanmaktadır. Bu modelde her istemci veri havuzundan çalışan bir kopyayı kendi veri alanına çekerek gerekli işlemleri yapmaktadır. Bu şekilde istemciler paralel bir şekilde çalışabilmektedirler. İstemciler kendi değişikliklerini yaptıktan sonra dosyaları birleştirerek son halini verebilmektedirler.


SVN - Çalışan Kopya

Subversion çalışan kopya dosyaları basit bir ağaç dizini yapısı içinde bulunan dosyalardan oluşmaktadır. Bu dosyalar istemci tarafından istenildiği gibi değiştirilebilmektedir. Yapılan bu değişiklikler istemci isteyene kadar diğer istemcilere yansıtılmaz.

Çalışan kopya dosya dizini içerisinde bazı ekstra dosyalarda bulunmaktadır. Bu dosyalar Subversion tarafından oluşturulan ve subversion komutlarının çalıştırılabilmesi için gerekli olan dosyalardır.


SVN – Veri Havuzu URL’leri

Subversion URL’leri standart bir söz dizimi kullanmaktadır. Sunucu adı ve port numarası URL’nin bir parçası olabilmektedir. file:// erişim metodu genellikle yerel erişim için kullanılır ayrıca bir network ana makinesi üzerinden file://hostname/path/to/repos şeklinde kullanılan UNC dizinlerinde de kullanılmaktadır. Yerel makineler için ana makine adı yerine yerel makine adı kullanılmalı ya da file:/// kısmı üçlü slash ile gösterilmelidir.

SVN –Revizyonlar

Dosyalar üzerinde yapılan değişiklikler ya hep ya hiç mantığı ile yapılmaktadır. Yapılan değişikliklerin tamamı dosya üzerinde uygulanamaz ise hiç bir değişiklik yayınlanamayacaktır.


Yayınlanan her değişiklik veri havuzunda farklı bir ağaç yapısı oluşturacak ve bu yapıya yeni bir numara verilecektir. Oluşturulan bu yeni yapı revizyon olarak adlandırılmaktadır. Numaralandırma işlemi her oluşturulan ağaç yapısı için bir önceki numara bir arttırılarak yapılır.


Revizyon numaraları oluşturulan ağaç numaralarının dizi numarası olarak da düşünülebilir. Boş klasör yerleştirildiğinde adres sıfır olarak işaretlenir. İlk dosya eklemesi ile birlikte adres yani versiyon bire yükseltilir.


Branching/Tagging/Merge

Versiyon kontrol sisteminin bir başka yeteneğide bir dosyayı bölebilme ve dosyanın geri kalanına dokunmadan değişiklikleri bölünen yeni dosya üzerinde yapabilme yeteneğidir. Genellikle yazılım test aşamalarında çıkan hataların dağıtılarak revize edilmesi için kullanılır. Küçük modüller halinde gruba dağıtılan bu hatalar düzeltilerek tekrar ana kod ile birleştirilebilir. Bu dağıtma işlemine Subversion Branching adını vermektedir. Dağıtılan bu parçaların birleştirilmesi ise Merge olarak adlandırılır.

Olası Hatalar

Commit işlemi sırasında eğer çalışan kopyanızın revizyon numarası ile sunucudaki revizyon numarası farklı ise hata alırsınız. Böyle bir durumda Update işlemi yapmak zorundasınız. Update işleminden sonra sizin çalışan kopyanız ile sunucudaki kopya farklı ise dosyanız “conflict” olarak işaretlenecektir. Böyle bir durumda dosyanızın iki adet kopyası diskinize yazılacaktır. Bunlardan biri sunucudaki versiyonu diğeri ise sizin çalışan kopyanızdır.


Bu çakışma durumu düzeltmek için dosyaları karşılaştırıp farklılıkları kendiniz düzeltmeniz gerekmektedir. Gerekli düzeltmeler yapıldıktan sonra TortoiseSVN’de “Resolved” fonksiyonunu kullanarak çakışma durumunun düzeltiği programa bildirilmelidir. Çakışma durumu düzeltildikten sonra yeni dosyanızı Svn sunucusuna “commit” edebilirsiniz.

SUBVERSION

Subversion Nedir?

Subversion ( SVN ) bir sürüm / versiyon takip sistemidir. SVN bir yazılımın, bir proje ilgili dokümantasyonların, kişisel ya da kurumsal belgelerin sürümlerinin yönetilebilmesi ve izlenebilmesi için kullanılmaktadır. CVS (Concurrent Versions System) programının eksik yönlerinin giderilmesi ve kararlı bir yapı oluşturulması amacı ile geliştirilmiştir. Basit anlamda SVN üzerinde çalışılan dosyaları internet ortamında tutar ve izin verilen kullanıcıların bu dosyaları kullanmalarını, değiştirmelerini yada silmelerini sağlar.

SVN 2000 yılında CollabNet firması tarafından açık kaynak kodlu olarak geliştirilmeye başlanmış ve 2001 yılında ilk sürümünü yayınlamıştır. 2007 yılında Apache bünyesine dahil edilmiş ve 2010 yılında top-level Apache projesi haline gelmiştir.

SVN Özellikleri

  • CVS’nin birçok özelliğini bünyesinde barındırır,
  • Dosyalar gibi dizinlerinde versiyonlarını oluşturur,
  • Kopyalama, silme, değiştirme, isim değiştirme gibi durumlarda SVN tarafından yeni versiyon numaraları oluşturulur.
  • CVS’ye göre daha hızlı çalışmaktadır,
  • Dosya kilitleme ve izin belirleme seçenekleri mevcuttur,
  • Dosya üzerinde yapılan değişikliklerin ve kullanım zamanlarının bilgileri tutulur ve takip edilebilir,
  • Eski versiyon bir dosya indirilebilir ve diğer versiyonlar ile aradaki farklar görülebilir,
  • Atomik commit özelliği yerelde yapılan değişikliklerin hep birlikte aktarılmasını sağlar,
  • Dosyaların Apache webserver üzerinden her yerden erişilebilir hale gelmesini sağlar,
  • Svnserve komutu ile SVN, versiyon kontrol server’ı olarak görev yapabilir.