mercoledì 22 dicembre 2010

Dump SVN

Il seguente script permette di eseguire il dump di un repository Subversion (richiede python-subversion installato):
#!/usr/bin/python
# -*- coding: utf-8 -*-

import svn.fs
import svn.core
import svn.repos
from StringIO import StringIO

class SvnManager(object):
    def __init__(self):
        self._repository_path = None
        self._repository = None
        self._fs = None

    def set_repository(self, path):
        self._repository_path = path
        self._repository = svn.repos.open(path)
        self._fs = svn.repos.fs(self._repository)

    def get_last_revision(self):
        return svn.fs.youngest_rev(self._fs)

    def dump_repository(self):
        dumpstream = StringIO()
        feedbackstream = StringIO()
        rev = self.get_last_revision()

        svn.repos.dump_fs2(self._repository,
                           dumpstream,
                           feedbackstream,
                           0,
                           rev,
                           0,
                           0,
                           None)

        self._dump = dumpstream.getvalue()
        self._feedback = feedbackstream.getvalue()

        #print self._feedback.count("* Dumped revision " + str(rev))

    def save_dump(self, dump_name):
        filename = open(dump_name, 'w')
        filename.write(self._dump)
        filename.flush()
        filename.close()

if __name__ == '__main__':
    repository = 'repository'
    filename = 'filename'

    svn_manager = SvnManager()
    svn_manager.set_repository(repository)
    svn_manager.dump_repository()
    svn_manager.save_dump(filename)

Nessun commento:

Posta un commento