TORTOISE SVN KULLANIMI

Transkript

TORTOISE SVN KULLANIMI
TORTOISE SVN KULLANIMI
İçerik
1- Depo Oluşturma
2- Projeyi Depoya Aktarma
3- Çalışma Kopyası Oluşturma
4- Depoya Dosya / Klasör Ekleme
5- Değişiklikleri Depoya İletme
6- Projenin Güncel Halini Depodan Çekme
7- Dosya Taşıma / Kopyalama
8- Değişiklikleri Geri Alma
9- İstenilen Versiyona Geri Dönme
10- Dosya Silme
11- Dosya Kilitleme
12- Çakışmaların Çözümü
* Bu makale, Sürüm Kontrol Sistemi (SVN) 'nin çalışma mantığını bildiğiniz ön görülerek
yazılmıştır.
DEPO OLUŞTURMA
TortoiseSVN kurulduktan sonra projelerimizin depolanacağı,
programın kontrolü altında olacak, içi boş ve yazma izninin
olduğu bir klasör oluşturduktan sonra klasöre sağ tıklayarak
depo adını verdiğimiz bir klasör oluşturuyoruz.
Oluşturduğumuz bu klasör yerel ağda başka bir bilgisayarda da
olabilir. Bu durumda klasörü paylaşıma açmamız gerekiyor. Bu
örnekte depo klasörü ile çalışma klasörünü aynı bilgisayar
üzerinde kurguladım.
“Create repository here” ya tıkladıktan sonra depo oluşturuldu
mesajına tamam dedikten sonra pencereyi kapatıyoruz.
PROJEYİ DEPOYA AKTARMA
Daha önce tek başımıza çalıştığımız bir projeye başka ekip
arkadaşları dahil olduğunda bu projeyi onlarla paylaşmak için
öncelikle projeyi depoya dahil etmeliyiz. Bunun için, daha önce
tek başımıza çalıştığımız proje dosyamıza sağ tıkladıktan sonra
Import seçeneğini seçmemiz gerekiyor.
Açılan pencerede bizden deponun adresini istiyor. file:///
başlayan adres ile depo klasörünü, ve depo klasörü altında ise
“proje1” klasörü altına aktarmasını istiyoruz. Bu “proje1”
klasörünü biz el ile oluşturmadık. Ayrıca oluşturduğumuz depo
klasörüne kesinlikle el ile müdahale ( ekleme , silme vb )
etmemeliyiz.
Eğer adresi doğru girebildiysek tamama bastığımızda aşağıdaki
gibi bir bilgi kutucuğu görmemiz gerekiyor.
Sol altta added:6 diyor. Yani depoya 6 adet dosya gönderdik ve
sistem buna bir numara verdi. At revision:1 Bundan sonra her
ekleme, silme, düzenleme işlemlerinde sistem bu olaylara ardışık
ve benzersiz numaralar verir. Bu numaralar değişiklikleri takip
etmemiz açısından yol göstericisi durumundadır.
ÇALIŞMA KOPYASI OLUŞTURMA
Eski projemizi depoya aktardık ancak işlem henüz
tamamlanmadı. Değişikliklerimizi az önceki proje klasörümüzde
yapmayacağız artık. Bundan sonraki kısımda oluşturacağımız
“çalışma kopyası”nda yapacağız bütün değişiklikleri. Onun için
bir klasör oluşturup aşağıdaki gibi az önce depoya
aktardıklarımızı geri çekiyoruz...
Açılan pencerede deponun adresini ve mevcut çalışma kopyası
klasör adreslerini yazıyoruz. Alt kısımda gördüğümüz “HEAD
Revision” ile depodaki projenin son halini çekebiliriz. Bir alttaki
Revision ile de az önce bahsettiğim numaralardaki revizyonları
çekebiliriz. Geçmiş revizyonları Show Log kısmından görebiliriz.
Kopyayı oluşturduktan sonra otomatik olarak klasör içinde gizli
formatta .svn klasörü oluşur. Bu gizli klasöre müdahale edersek
depo ile bağlantımızı koparmış oluruz. Ayrıca dosya klasörlerdeki
simge yeşil “ok” işareti halini alır. Bu şu demek; çalışma
kopyasındaki öğelerimiz depo ile senkron halde...
DEPOYA DOSYA / KLASÖR EKLEME
Depoya dosya veya klasör eklemek için Windows üzerindeki gibi
klasöre dosya eklemek yeterli değil. Windows gezgini ile dosyayı
klasöre yapıştırdıktan sonra dosyaya sağ tıklayıp fotoğraftaki gibi
Add dememiz gerekiyor. Add demediğimiz müddetçe yeni
dosyanın simgesi “?” olarak kalacaktır. Çünkü depo ile bu dosya
henüz ilişkilendirilmedi.
Add dedikten sonra yapmamız gereken önemli nokta ise; yapılan
her işlemden sonra ( ekleme, silme, düzenleme ) bunu depoya
bildirmeliyiz. Aksi halde deponun bu değişikliklerden haberi
olmayacak, bir başka ekip arkadaşı güncel hali içeri aktardığında
bu dosyaları göremeyecektir.
Bunun için dosya veya klasörlere sağ tıklayarak Commit
dememiz gerekmektedir.
Commit dedikten sonra açılan pencerede Message kısmına
yorum yazıyoruz. Bu alan zorunlu değil ancak proje tertip ve
düzeni açısından olması gerekmektedir. Yarın birgün başka ekip
arkadaşımız bu dosyanın neden eklendiğini, hangi değişiklikler
yapıldığını görmek ister.
Ok diyerek bu değişikliği depoya iletiyoruz.
Depoya iletim sonrası aşağıdaki fotoğrafta göreceğiniz üzere
versiyon numarası 2 ( At revision:2 ) oldu. Küçük bilgi
ekranını kapatıyoruz...
DEĞİŞİKLİKLERİ DEPOYA İLETME
Örneğimizde index.php üzerinde biraz değişiklik yapacağız ve bu
değişikliği depoya bildireceğiz. İndex.php'yi herhangi bir editör
ile düzenliyoruz.
İndex.php üzerindeki yeşil “ok” simgesi yerine kırmızı ünem
geldi. Yani bu dosya şuan depo ile senkron değil. Değişikliği
depoya bildirmek için Commit diyoruz.
Bu örnekte yaptığım değişiklik ile ilgili bir yorum yazmadım ama
siz siz olun yorum kısmına kodda nereleri değiştirdiğinizi yazın.
Gün gelir geriye dönmek zorunda kaldığınızda can
çekişmezsiniz :)
Commit başarıyla yapıldı ve revizyon numarası güncellendi.
PROJENİN GÜNCEL HALİNİ DEPODAN ÇEKME
Ekip arkadaşlarımızda biz gibi dosya ekleyip depoya attığında bu
değişiklikleri görmemiz için SVN Update dememiz gerekiyor.
UYARI : Çalışmaya her başladığımızda mutlaka SVN Update ile
güncel hali öncelikle kendi bilgisayarımıza indirmeliyiz. Aynı
şekilde yaptığımız değişiklikleri de Commit ile depoya
bildirmeliyiz.
Arkadaşlarımızdan birisinin yeni dosya olarak baska-yeni-birdosya.php dosyasını eklediğini fark ediyoruz.
DOSYA TAŞIMA / KOPYALAMA
Bir dosya/klasörü bir yere klasik kes / yapıştır veya kopyala /
yapıştır yapıp ardında Commit deseniz bile SVN bunu
anlamayacaktır.
Taşıma / kopyalama işlemi için bir öğeyi farenin sağ tuşuna basılı
tutarak istediğimiz yere sürükleyip bırakınca karşımıza çıkan
menüden istediğimizi seçiyoruz.
Örnekte yeni-dosya.php'yi include klasörüne taşıyoruz. Bu
işlemden sonra Commit demeyi unutmuyoruz.
İpucu: Çalışma kopyası klasörünün ana dizininde boş bir yerde
sağ tıklayıp Commit dersek tüm klasörü ( projeyi ) depoya
bildirir. Yani farklı klasörlerdeki revizeler için tek tek Commit
demeye gerek yok. Son olarak taşıma sonrasında Commit
yapıyoruz.
DEĞİŞİKLİKLERİ GERİ ALMA
Yerel bilgisayarımızda yaptığımız değişiklikleri Commit
demediğimiz sürece deponun bundan haberdar
olamayacağından bahsetmiştik. Peki, Commit demediğimiz halde
üzerine bir de Update dersek ne olur ? O kadar uğraştığımız
yereldeki dosyanın üzerine depodaki hali yazılır mı ? Hayır !
SVN, yereldeki Commit'siz bu dosyanızın üzerine depodaki
halini yazmaz... Update to revision ile de eski haline
( depodaki haline ) dönemezsiniz... Ya Commit yapıp son hali
depoya bildirmelisiniz ya da Revert ile Commit'siz bu
değişiklikleri geri almalısınız.
Revert ile bu değişiklikleri geri almak istiyoruz.
İSTENİLEN VERSİYONA GERİ DÖNME
Her değişiklik sonrası bir numara verildiğinden bahsetmiştim. Bu
şu demek ; SVN ehr olaydan sonra size geri dönüş için imkan
tanır. Yani bir dosyanın istediğiniz versiyonuna erişebilirsiniz. Az
önce index.php üzerinde yaptığımız değişiklik üzerine bir
değişiklik daha yapalım...
Commit esnasında yorum yazmayı unutmuyoruz.
Daha sonrasında index.php üzerinde sağ tıklayıp Update to
revision diyoruz.
Açılan pencerede HEAD Revision dersek son haline, Revision
kısmına numara yazarsak ilgili numaralı revizyona geri döneriz.
Dosya üzerinde sağ tıkladığımız için bu geri dönüş sadece
index.php de gerçekleşir.
Show Log ile geçmiş kayıtları açıyoruz.
7 numaralı revizyon son revizyon, 4 numaralı revizyon ise ilk
revizyonumuzdur. İşte yorumlar bu noktada çok işe yarıyor
arkadaşlar...
İpucu : Aradaki dosya farklarını görmek için Path kısmının
altındaki dosya adına tıklayarak açılan ekranda dosyanın son hali
ile ilgili revizyonu arasındaki farkları görebiliriz.
4'nolu revizyona geri dönmek istiyoruz... 4'nolu revizyonu
işaretleyip tamama basıyoruz.
İndex.php'nin revizyon 4'e geri dönmüş hali...
DOSYA SİLME
Dosya gezgininden direkt olarak dosya klasör silersek bu depoyu
etkilemez. Commit desek bile...
Böyle bir hatada yukarıda bahsettiğim gibi Revert ile dosyayı
geri getirip, SVN ile tekrardan silmemiz gerekir.
İstediğimiz dosyaya sağ tıklayıp Delete demek yeterlidir.
Olmazsa olmaz Commit'i unutmuyoruz :)
Commit başarıyla yapıldı...
DOSYA KİLİTLEME
Projede çok önemli bir dosya üzerinde çalışıyorsak bu dosyayı
revizelere ya da silinmeye karşı koruyabiliriz. Kilit sistemi ile bu
mümkün. Bu kilitli dosyaların kilidini kilidi koyan kişi
kaldırabilir...
Dosyaya sağ tıklayıp Get Lock demek gerekiyor.
Belki not yazmak istersiniz. Mesela; neden kilitlediğinize dair.
Dosyayı kilitleyen kişi kilidi kaldırabilir dedik. Bunun için
Release Lock demek gerekiyor.
Onay veriyoruz.
Kilitli bir dosyayı diğer ekip arkadaşınız değiştirebilir, silebilir...
Ancak sadece kendi yerel bilgisayarında yapabilir bunu. Hiç birini
depoya yansıtamaz...
ÇAKIŞMALARIN ÇÖZÜMÜ
Muhtemelen başınıza en çok gelecek durumların birinden
bahsetmek istiyorum... Akşam saat 6 oldu, siz evinize
gidiyorsunuz. Ancak işkolik arkadaşınız hala ofiste...
O akşam 9-10'a kadar dosyalar üzerinde çalıştı ve Commit
yaptı.
Sabah işe geldiniz ve Update yapmadan siz de kendi
değişikliklerinizi yaptınız... Ve olayın farkına vardınız !
Muhtemelen o an aşağıdaki gibi olacaksınız... :)
Dosyayı bu halde Commit yapamazsınız çünkü depodaki
versiyon sizin yerel bilgisayarınızaki versiyondan daha güncel.
Eski versiyonu yenisinin üzerine yazamazsınız. Peki ne olacak
şimdi ?
Tamam'a bastığınızda aşağıdaki uyarıyı alırsınız. İki seçenek
sunar; “boşver Bir şey yapma” veya “bir uğraşalım bakalım”
Update'ye basarız.
Sonrasında şu pencere çıkar karşınıza...
Çalışma kopyası ana dizinine bir bakarsanız aslında tüm
maceranın yeni başladığını görebilirsiniz...
.mine , .r7 ve .r8 uzantılı 3 dosya daha oluşmuş durumda. Şimdi
bu dosyaları editörde tek tek açıp ne anlama geldiklerine
bakalım.
Not : Yerel bilgisayardaki .php dosyamızın içi boş durumdaydı...
baska-yeni-bir-dosya.php
 Bu dosya hem bizim hem arkadaşımızın revizelerini içeren,
başında ve sonunda SVN'in yorumlarını da içeren
dosyadır...
baska-yeni-bir-dosya.mine
 Bu dosya ise sadece bizim revizelerimizi içerir.
baska-yeni-bir-dosya.r7
 Bu dosya yerelimizde bulunan eski versiyon halidir. ( içi boş
olduğunu söylemiştik ) rx şeklinde sonraki rakam
değişkenlik gösterir...
baska-yeni-bir-dosya.r8
- Bu dosyada ise sadece arkadaşımızın revizesi olmakla beraber
depodaki son versiyonu durumundadır.
Bu karmaşıklığı çözmek için orijinal dosyamıza ( php uzantılı )
sağ tıklayıp Edit Conflicts dememiz gerekiyor.
Açılan TortoiseMerge içerisinde bizim,arkadaşın ve birleşmiş
dosya haini görüyoruz. Birleşmiş dosya kısmı boş, çünkü bu
yerleşimi biz yapacağız.
 isteğe bağlı olarak – Sağ kısımdaki bizim ( mine ) kısımdaki kırmızılı
kod bloğuna sağ tıklayıp “onun kodundan önce benim kodu koy”
diyerek ilk birleştirme işlemine başlıyoruz. ( aşağıdaki fotoğraf )
Ardından, sol kısımdaki arkadaşın revizesindeki kırmızılı kod
bloğuna “bu bloğu kullan” diyerek birleşimi sağlıyoruz.
Emin olun bu iş bu kadar basit değil. Binlerce satırın olduğu, bol
bol revizelerin olduğu kodu birleştirmek zaman alır. Siz siz olun
“işlemden önce update yapmayı” aklınızın bir köşesinden
çıkarmayın...
Alttaki birleşmiş dosya kısmında kırmızılı satırlar yok olduktan
sonra sol üstteki saveye bastığımızda aşağıdaki ekran çıkar.
Mark as resolved dersek dosyadaki çakışma giderilmiş olur.
Son olarak Commit demeyi unutmuyoruz. :)
Bu kadar uğraştan sonra bir de yorumumuzu yazalım Commit
ederken.
Okuduğunuz için teşekkür ederim. Elimden geldiğince
TortoiseSVN' anlatmaya çalıştım.
Ben Samet Özden. Bu makaleyi nasilanlatsam.com sitesinde
yayımlanmak üzere yazdım. Lütfen paylaşım esnasında emeğe
saygı gösterelim...

Benzer belgeler