Dava takip sistemi ile ilgili gerekli incelemeleri ve düzenlemeleri yapıp http://code.google.com/p/dava/ adresine kodları aktardım. Müsait bir vakitte bu sitede bir alt alan adı oluşturup indirmeden önce kullanıcıların görmeleri açısından test imkanı sağlayacağım.
Sistemde şu an davaları kategorilendirme, durum atama, davaları görüntülemesine imkan verilen alt kullanıcıları ekleme gibi özellikler mevcut. İlerleyen sürümlerde aşağıdaki özellikleri eklemeyi düşünüyorum:
svn co http://depo/ klasor
Ancak alınan kodlarla birlikte alt dizinlerde .svn şeklinde klasörler oluşuyor. Hem bunları göz ardı edebilen hemde belirlenen dosya isimleri ve dosya uzantılarına göre arşive eklenecek dosyaları filtreleyebilen ufak bir arşivleme uygulaması geliştirdim. Kodlara aşağıdan ve buradan erişebilirsiniz.
Vakit bulursam svn modülünüde uygulama içerisine ekleyeceğim. Böylelikle hem svn komutunu kullanmadan depodan dosyalar alınıp arşivlenmiş olacak hem de belirli bir revizyonun arşiv dosyasının oluşturulması sağlanabilecek.
Belki böyle bir uygulama vardır. Aramalarım sonucunda bir şey elde edemedim. Bilen varsa bir zahmet yorum kısmından belirtsin. Boş yere uğraşmayayım
Uygulamayı şu şekilde kullanabilirsiniz:
python svnar.py hatirlat hatirlat-1.0.tar.gz -fdizin .svn -fdosya Thumbs.db,thumbs.db -ftur .pyc
svnar.py den sonraki ilk değer arşivlenecek olan konumu, ikinci değer ise arşiv dosyasının adını belirtiyor. Diğer argümanların kullanım amaçları şu şekildedir:
#!/usr/bin/python # -*- coding: utf-8 -*- import os import sys import tarfile class svnar: def __init__(self,argv): # Çalışma ayarları alınıyor self.konum = argv[1] self.arsiv_adi = argv[2] if "-fdizin" in argv: self.filtre_dizin = argv[argv.index("-fdizin")+1].split(",") else: self.filtre_dizin = [] if "-fdosya" in argv: self.filtre_dosya = argv[argv.index("-fdosya")+1].split(",") else: self.filtre_dosya = [] if "-ftur" in argv: self.filtre_tur = argv[argv.index("-ftur")+1].split(",") else: self.filtre_tur = [] # Konum içerisinde bulunan dizin ve dosyaları tutan değişkenler. self.dizinler = [] self.dosyalar = [] # Listeyi al. self.al(self.konum) # Dosyaları arşivle self.arsivle() def al(self,konum): for i in os.listdir(konum): x = "%s/%s" %(konum,i) if self.filtrele(konum,i)==True: if os.path.isdir(x)==True: self.dizinler.append(x) self.al(x) else: self.dosyalar.append(x) def filtrele(self,konum,veri): durum = True # Dizin kontrolü if os.path.isdir("%s/%s" %(konum,veri))==True: if veri in self.filtre_dizin: durum = False else: # Dosya kontrolü if veri in self.filtre_dosya: durum = False # Dosya türü kontrolü dosya_turu = os.path.splitext(veri)[1] if dosya_turu in self.filtre_tur: durum = False return durum def arsivle(self): arsiv = tarfile.open(self.arsiv_adi,"w:gz") for dizin in self.dizinler: arsiv.add(dizin,recursive=False) for dosya in self.dosyalar: arsiv.add(dosya) arsiv.close() if __name__=="__main__": if sys.argv.__len__()>1: if os.path.isdir(sys.argv[1])==False: print "HATA!" print "-----" print "Dizin bulunamadı." else: if sys.argv.__len__()>2: if os.path.isfile(sys.argv[2])==False: svnar(sys.argv) else: cevap = raw_input("%s konumu dolu görünüyor. Üzerine yazılmasını ister misiniz ? (e/h)" %(sys.argv[2])) if cevap in ["e","E","Evet","evet","y","yes","Y","Yes"]: svnar(sys.argv)