Google Code üzerindeki proje oluşturma limitini ne yazık ki doldurdum. İşe yaramayacak bir kaç projeyi sildim ancak tam olarak silinmediği için hala limit dolu olarak görünüyor. Bunun üzerine svnservisi.com alan adını alıp kendi svn sunucumu kurmaya karar verdim. Tabi genel kullanımada açık ve herhangi bir sınırlama olmayacak (maddi, manevi gidebildiği yere kadar
)
Şu an bir vps üzerinde. Sistemde tam olarak bitmedi iş yoğunluğundan ötürü. Eğer asterisk sunucusu ile ilgili yapılacakları bu hafta sonu tamamlayabilirsem sanırım bu pazartesi ya da hafta ortalarında rahata kavuşacağım ve biraz dinlenme imkanı bulacağım. Böyle bir durumda bir iki hafta sonra svnservisi.com yayın hayatına başlayabilir.
Bu sitede kullanmak üzere python ile arka planda depo işlemlerini gerçekleştirebilmek için bir modül geliştirdim. Benim işimi şu an için görüyor. Bir kaç şey daha eklemem ve kodları biraz daha düzenlemem gerekecek gibi. Onlarıda bahsi geçen iş yoğunluğu bittikten sonra ele alabilirim. Yarın yorucu bir gün olacak, iletiyi burada noktalayıp biraz dinlensem iyi olur kanaatimce.
#-*- coding: utf-8 -*- import os import sys import ConfigParser def create_value_list(argv): i = 0 value_list = {} value_name = "" for value in argv: if i==0: value_list[value[2:]] = "" value_name = value[2:] i = 1 else: if value.split(",").__len__()>1: value_list[value_name] = value.split(",") else: value_list[value_name] = value i = 0 return value_list class SvnConf: def user_add(self): config_file = "%s%s/conf/passwd" %(self.argv['repo_path'],self.argv['project']) config = ConfigParser.RawConfigParser() config.read(config_file) config.set("users", self.argv['username'], self.argv['secret']) configfile = open(config_file,"wb") config.write(configfile) def user_del(self): config_file = "%s%s/conf/passwd" %(self.argv['repo_path'],self.argv['project']) config = ConfigParser.RawConfigParser() config.read(config_file) config.remove_option("users", self.argv['username']) configfile = open(config_file,"wb") config.write(configfile) def user_edit(self): self.user_del() self.user_add() def set_svnserve(self): config_file = "%s%s/conf/svnserve.conf" %(self.argv['repo_path'],self.argv['project']) config = ConfigParser.RawConfigParser() config.read(config_file) if self.argv.has_key("realm"): config.set("general", "realm", self.argv['realm']) if self.argv.has_key("password_db"): config.set("general", "password-db", self.argv['password_db']) if self.argv.has_key("auth_access"): config.set("general", "auth-access", self.argv['auth_access']) if self.argv.has_key("anon_access"): config.set("general", "anon-access", self.argv['anon_access']) if self.argv.has_key("authz"): config.set("general", "authz-db", self.argv['authz']) configfile = open(config_file,"wb") config.write(configfile) class SvnApi(SvnConf): def __init__(self,argv): self.argv = argv def create(self): trunk_dir = "file:///%s%s/trunk" %(self.argv['repo_path'],self.argv['project']) branches_dir = "file:///%s%s/branches" %(self.argv['repo_path'],self.argv['project']) tags_dir = "file:///%s%s/tags" %(self.argv['repo_path'],self.argv['project']) os.system("svnadmin create %s%s" %(self.argv['repo_path'],self.argv['project'])) os.system("svn mkdir -m 'Initial directory structure.' %s %s %s --username %s" %( trunk_dir, branches_dir, tags_dir, self.argv['username'] ) ) if __name__=="__main__": argv = create_value_list(sys.argv[1:]) svn = SvnApi(argv) for action in argv['action_list']: if not action=="": exec("svn.%s()" %(action))
Kullanımına dair bir kaç örnek:
# Proje oluşturur ve proje için bir kullanıcı tanımlar. $ python svnapi.py --repo_path /var/svn/ --project proje_adi --username omer --secret 12345 --action_list create,user_add # Kullanıcı bilgilerini düzenler $ python svnapi.py --repo_path /var/svn/ --project proje_adi --username omer --secret 1029304 --action_list user_edit, # Kullanıcıyı siler $ python svnapi.py --repo_path /var/svn/ --project proje_adi --username omer --action_list user_del,







cok guzel bir fikir.
bu arada, svn icin python’a yazilmis guzel bir kutuphane vardi diye hatirliyorum. ama server tarafi icin miydi emin degilim.
pysvn ile yükleyip denemiştim ancak bir depo oluşturmak için uğraşmış ve yapamamıştım.
Yalnız:
>>> import svn.repos
>>> dir(svn.repos)
İşe yarayacak gibi bu işlemler için.