in tools/server-side/svn-backup-dumps.py [0:0]
def __init__(self, options, args):
# need 3 args: progname, reposname, dumpdir
if len(args) != 3:
if len(args) < 3:
raise SvnBackupException("too few arguments, specify"
" repospath and dumpdir.\nuse -h or"
" --help option to see help.")
else:
raise SvnBackupException("too many arguments, specify"
" repospath and dumpdir only.\nuse"
" -h or --help option to see help.")
self.__repospath = args[1]
self.__dumpdir = args[2]
# check repospath
rpathparts = os.path.split(self.__repospath)
if len(rpathparts[1]) == 0:
# repospath without trailing slash
self.__repospath = rpathparts[0]
if not os.path.exists(self.__repospath):
raise SvnBackupException("repos '%s' does not exist." % self.__repospath)
if not os.path.isdir(self.__repospath):
raise SvnBackupException("repos '%s' is not a directory." % self.__repospath)
for subdir in [ "db", "conf", "hooks" ]:
dir = os.path.join(self.__repospath, subdir)
if not os.path.isdir(dir):
raise SvnBackupException("repos '%s' is not a repository." % self.__repospath)
rpathparts = os.path.split(self.__repospath)
self.__reposname = rpathparts[1]
if self.__reposname in [ "", ".", ".." ]:
raise SvnBackupException("couldn't extract repos name from '%s'." % self.__repospath)
# check dumpdir
if not os.path.exists(self.__dumpdir):
raise SvnBackupException("dumpdir '%s' does not exist." % self.__dumpdir)
elif not os.path.isdir(self.__dumpdir):
raise SvnBackupException("dumpdir '%s' is not a directory." % self.__dumpdir)
# set options
self.__rev_nr = options.rev
self.__count = options.cnt
self.__quiet = options.quiet
self.__deltas = options.deltas
self.__relative_incremental = options.relative_incremental
# svnadmin/svnlook path
self.__svnadmin_path = "svnadmin"
if options.svnadmin_path:
self.__svnadmin_path = options.svnadmin_path
self.__svnlook_path = "svnlook"
if options.svnlook_path:
self.__svnlook_path = options.svnlook_path
# check compress option
self.__gzip_path = options.gzip_path
self.__bzip2_path = options.bzip2_path
self.__zip = None
compress_options = 0
if options.gzip_path != None:
compress_options = compress_options + 1
if options.bzip2_path != None:
compress_options = compress_options + 1
if options.bzip2:
compress_options = compress_options + 1
self.__zip = "bzip2"
if options.gzip:
compress_options = compress_options + 1
self.__zip = "gzip"
if compress_options > 1:
raise SvnBackupException("--bzip2-path, --gzip-path, -b, -z are "
"mutually exclusive.")
self.__overwrite = False
self.__overwrite_all = False
if options.overwrite > 0:
self.__overwrite = True
if options.overwrite > 1:
self.__overwrite_all = True
self.__transfer = None
if options.transfer != None:
self.__transfer = options.transfer.split(":")
if len(self.__transfer) != 5:
if len(self.__transfer) < 5:
raise SvnBackupException("too few fields for transfer '%s'." % self.__transfer)
else:
raise SvnBackupException("too many fields for transfer '%s'." % self.__transfer)
if self.__transfer[0] not in [ "ftp", "smb" ]:
raise SvnBackupException("unknown transfer method '%s'." % self.__transfer[0])