26 Aralık 2012 Çarşamba

svn info ile proje detaylarını öğrenme


Bir dizine svn projenizi checkout yaptınız. Aradan zaman geçti veya bu projenin farklı branch'lerini farklı yerlere checkout yaptınız. Sonrasında bu dizinde projenin hangi sürümü var vs öğrenmek için svn info komutunu kullanabilirsiniz.

$ cd surgatemta
$ svn infoPath: .
URL: https://192.168.1.10/svn/surgatemta/trunk
Repository Root: https://192.168.1.10/svn/surgatemta
Repository UUID: dac1741e-dd39-4fb9-a7c4-02cd681c2378
Revision: 86
Node Kind: directory
Schedule: normal
Last Changed Author: ismail.yenigul
Last Changed Rev: 86
Last Changed Date: 2012-12-25 10:45:14 +0200 (Tue, 25 Dec 2012)



Projeyi dizinlerine proje sürüm/branch adına göre dizin vererek hangi projenin hangi branch'i checkout yaptınızı daha kolay anlayabilirsiniz.

$ svn --username ismail.yenigul co https://192.168.1.10/svn/linuxaudit/trunk linuxaudit-trunk

Sadece tek bir dosya hakkında bilgi almak için ise aşağıdaki gibi komut verilir.

$ cd surgatemta $ svn info Makefile
Path: Makefile
Name: Makefile
URL: https://192.168.1.10/svn/surgatemta/trunk/Makefile
Repository Root: https://192.168.1.10/svn/surgatemta
Repository UUID: dac1741e-dd39-4fb9-a7c4-02cd681c2378
Revision: 86
Node Kind: file
Schedule: normal
Last Changed Author: ismail.yenigul
Last Changed Rev: 71
Last Changed Date: 2012-10-03 00:47:44 +0300 (Wed, 03 Oct 2012)
Text Last Updated: 2012-10-03 00:47:45 +0300 (Wed, 03 Oct 2012)





6 Aralık 2012 Perşembe

svadmin dump ile yedek alma

SVN sunucuda bulunan proje depolarının(repository) yedeğini almak için svnadmin komutu dump parametresi ile kullanılabilir.

Bu komut svn sunucusunun kurulu olduğu makinada root kullanıcısı ile verilmelidir.


# svnadmin dump /var/svn/surgatedev > surgatedev.svndump
* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
* Dumped revision 3.
* Dumped revision 4.
* Dumped revision 5.
* Dumped revision 6..


Bu işlem sonunda projeye ait tüm svn yedeği surgatedev.svndump dosyasında bulunacaktır. Dosya dah az yer kaplasın diye gzip ile sıkıştırabilirsiniz.

 # ls -al surgatedev.svndump
-rw-r--r-- 1 root root 25554628 Dec  6 10:39 surgatedev.svndump
# gzip  surgatedev.svndump

Linux'de | kullanarak da dump esnasında sıkıştırma yapabilirsiniz.

 # svnadmin dump /var/svn/surgatedev | gzip >  surgatedev.svndump.gz
# ls -alh surgatedev.svndump*
-rw-r--r-- 1 root root 25M Dec  6 10:39 surgatedev.svndump
-rw-r--r-- 1 root root 14M Dec  6 10:44 surgatedev.svndump.gz

Eğer birden fazla proje deponuz varsa bu işlemi tek tek tüm projeler için vermek zorundasınız.
Bu işlemi kolaylaştırmak için basit bir kabuk programı yazılabilir.


----script başlangıcı
#!/bin/sh

SVNDIR=/var/svn
BACKUPDIR=/backup/svnbackup

mkdir -p $BACKUPDIR  #create backup directory if not exit
for i in `ls $SVNDIR`
 do
    if [ -d $SVNDIR/$i ] ; then  #repo must be a directory, ingore svnpass, svnauth etc files
    echo "svn repo backup for $i"
    svnadmin dump $SVNDIR/$i | gzip > $BACKUPDIR/$i.backup.gz
    fi;
       
done


--script sonu-----

Bu scripti crontab'a ekleyerek düzenli aralıklarla yedek alabilirsiniz.
svnadmin dump parametresine ek olarak svnadmin hotcopy parametresi vardır. hotcopy repo dizinini hızlı bir şekilde kopyalamak için kullanılır. Yedeğin geri dönüleceği sunucuda tüm svn ayarlarının aynı olması gerekir. Bu yüzden hotcopy yerine dump kullanılmasını tavsiye ederim.