Exemplo n.º 1
0
 def __init__(self, ui, path, rev=None):
     converter_source.__init__(self, ui, path, rev)
     self.ignoreerrors = ui.configbool('convert', 'hg.ignoreerrors', False)
     self.ignored = set()
     self.saverev = ui.configbool('convert', 'hg.saverev', False)
     try:
         self.repo = hg.repository(self.ui, path)
         # try to provoke an exception if this isn't really a hg
         # repo, but some other bogus compatible-looking url
         if not self.repo.local():
             raise error.RepoError()
     except error.RepoError:
         ui.traceback()
         raise NoRepo("%s is not a local Mercurial repo" % path)
     self.lastrev = None
     self.lastctx = None
     self._changescache = None
     self.convertfp = None
     # Restrict converted revisions to startrev descendants
     startnode = ui.config('convert', 'hg.startrev')
     if startnode is not None:
         try:
             startnode = self.repo.lookup(startnode)
         except error.RepoError:
             raise util.Abort(
                 _('%s is not a valid start revision') % startnode)
         startrev = self.repo.changelog.rev(startnode)
         children = {startnode: 1}
         for rev in self.repo.changelog.descendants(startrev):
             children[self.repo.changelog.node(rev)] = 1
         self.keep = children.__contains__
     else:
         self.keep = util.always
Exemplo n.º 2
0
    def __init__(self, ui, path, rev=None):
        converter_source.__init__(self, ui, path, rev=rev)
        commandline.__init__(self, ui, 'darcs')

        # check for _darcs, ElementTree so that we can easily skip
        # test-convert-darcs if ElementTree is not around
        if not os.path.exists(os.path.join(path, '_darcs')):
            raise NoRepo(_("%s does not look like a darcs repository") % path)

        checktool('darcs')
        version = self.run0('--version').splitlines()[0].strip()
        if version < '2.1':
            raise util.Abort(_('darcs version 2.1 or newer needed (found %r)') %
                             version)

        if ElementTree is None:
            raise util.Abort(_("Python ElementTree module is not available"))

        self.path = os.path.realpath(path)

        self.lastrev = None
        self.changes = {}
        self.parents = {}
        self.tags = {}

        # Check darcs repository format
        format = self.format()
        if format:
            if format in ('darcs-1.0', 'hashed'):
                raise NoRepo(_("%s repository format is unsupported, "
                               "please upgrade") % format)
        else:
            self.ui.warn(_('failed to detect repository format!'))
Exemplo n.º 3
0
 def __init__(self, ui, path, rev=None):
     converter_source.__init__(self, ui, path, rev)
     self.ignoreerrors = ui.configbool('convert', 'hg.ignoreerrors', False)
     self.ignored = set()
     self.saverev = ui.configbool('convert', 'hg.saverev', False)
     try:
         self.repo = hg.repository(self.ui, path)
         # try to provoke an exception if this isn't really a hg
         # repo, but some other bogus compatible-looking url
         if not self.repo.local():
             raise error.RepoError()
     except error.RepoError:
         ui.traceback()
         raise NoRepo(_("%s is not a local Mercurial repository") % path)
     self.lastrev = None
     self.lastctx = None
     self._changescache = None
     self.convertfp = None
     # Restrict converted revisions to startrev descendants
     startnode = ui.config('convert', 'hg.startrev')
     if startnode is not None:
         try:
             startnode = self.repo.lookup(startnode)
         except error.RepoError:
             raise util.Abort(_('%s is not a valid start revision')
                              % startnode)
         startrev = self.repo.changelog.rev(startnode)
         children = {startnode: 1}
         for rev in self.repo.changelog.descendants(startrev):
             children[self.repo.changelog.node(rev)] = 1
         self.keep = children.__contains__
     else:
         self.keep = util.always
Exemplo n.º 4
0
    def __init__(self, ui, path, rev=None):
        converter_source.__init__(self, ui, path, rev=rev)
        commandline.__init__(self, ui, 'darcs')

        # check for _darcs, ElementTree, _darcs/inventory so that we can
        # easily skip test-convert-darcs if ElementTree is not around
        if not os.path.exists(os.path.join(path, '_darcs', 'inventories')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        if not os.path.exists(os.path.join(path, '_darcs')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        checktool('darcs')
        version = self.run0('--version').splitlines()[0].strip()
        if version < '2.1':
            raise util.Abort(
                _('darcs version 2.1 or newer needed (found %r)') % version)

        if ElementTree is None:
            raise util.Abort(_("Python ElementTree module is not available"))

        self.path = os.path.realpath(path)

        self.lastrev = None
        self.changes = {}
        self.parents = {}
        self.tags = {}
Exemplo n.º 5
0
    def __init__(self, ui, path, rev=None):
        converter_source.__init__(self, ui, path, rev=rev)
        commandline.__init__(self, ui, "darcs")

        # check for _darcs, ElementTree so that we can easily skip
        # test-convert-darcs if ElementTree is not around
        if not os.path.exists(os.path.join(path, "_darcs")):
            raise NoRepo(_("%s does not look like a darcs repository") % path)

        checktool("darcs")
        version = self.run0("--version").splitlines()[0].strip()
        if version < "2.1":
            raise util.Abort(_("darcs version 2.1 or newer needed (found %r)") % version)

        if ElementTree is None:
            raise util.Abort(_("Python ElementTree module is not available"))

        self.path = os.path.realpath(path)

        self.lastrev = None
        self.changes = {}
        self.parents = {}
        self.tags = {}

        # Check darcs repository format
        format = self.format()
        if format:
            if format in ("darcs-1.0", "hashed"):
                raise NoRepo(_("%s repository format is unsupported, " "please upgrade") % format)
        else:
            self.ui.warn(_("failed to detect repository format!"))
Exemplo n.º 6
0
    def __init__(self, ui, path, rev=None):
        converter_source.__init__(self, ui, path, rev=rev)
        commandline.__init__(self, ui, 'darcs')

        # check for _darcs, ElementTree so that we can easily skip
        # test-convert-darcs if ElementTree is not around
        if not os.path.exists(os.path.join(path, '_darcs')):
            raise NoRepo(_("%s does not look like a darcs repository") % path)

        checktool('darcs', debname='darcs')
        version = self.run0('--version').splitlines()[0].strip()
        if version < '2.1':
            raise util.Abort(_('darcs version 2.1 or newer needed (found %r)') %
                             version)

        if "ElementTree" not in globals():
            raise util.Abort(_("Python ElementTree module is not available") +
                             _(" (try installing the %s package)") % 'python-celementtree')

        self.path = os.path.realpath(path)

        self.lastrev = None
        self.changes = {}
        self.parents = {}
        self.tags = {}

        # Check darcs repository format
        format = self.format()
        if format:
            if format in ('darcs-1.0', 'hashed'):
                raise NoRepo(_("%s repository format is unsupported, "
                               "please upgrade") % format)
        else:
            self.ui.warn(_('failed to detect repository format!'))
Exemplo n.º 7
0
    def __init__(self, ui, path, rev=None):
        converter_source.__init__(self, ui, path, rev=rev)
        commandline.__init__(self, ui, 'darcs')

        # check for _darcs, ElementTree, _darcs/inventory so that we can
        # easily skip test-convert-darcs if ElementTree is not around
        if not os.path.exists(os.path.join(path, '_darcs', 'inventories')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        if not os.path.exists(os.path.join(path, '_darcs')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        checktool('darcs')
        version = self.run0('--version').splitlines()[0].strip()
        if version < '2.1':
            raise util.Abort(_('darcs version 2.1 or newer needed (found %r)') %
                             version)

        if ElementTree is None:
            raise util.Abort(_("Python ElementTree module is not available"))

        self.path = os.path.realpath(path)

        self.lastrev = None
        self.changes = {}
        self.parents = {}
        self.tags = {}
Exemplo n.º 8
0
    def __init__(self, ui, path=None, rev=None):
        converter_source.__init__(self, ui, path, rev)
        commandline.__init__(self, ui, 'mtn')

        self.ui = ui
        self.path = path

        norepo = NoRepo(_("%s does not look like a monotone repository")
                        % path)
        if not os.path.exists(os.path.join(path, '_MTN')):
            # Could be a monotone repository (SQLite db file)
            try:
                header = file(path, 'rb').read(16)
            except:
                header = ''
            if header != 'SQLite format 3\x00':
                raise norepo

        # regular expressions for parsing monotone output
        space    = r'\s*'
        name     = r'\s+"((?:\\"|[^"])*)"\s*'
        value    = name
        revision = r'\s+\[(\w+)\]\s*'
        lines    = r'(?:.|\n)+'

        self.dir_re      = re.compile(space + "dir" + name)
        self.file_re     = re.compile(space + "file" + name +
                                      "content" + revision)
        self.add_file_re = re.compile(space + "add_file" + name +
                                      "content" + revision)
        self.patch_re    = re.compile(space + "patch" + name +
                                      "from" + revision + "to" + revision)
        self.rename_re   = re.compile(space + "rename" + name + "to" + name)
        self.delete_re   = re.compile(space + "delete" + name)
        self.tag_re      = re.compile(space + "tag" + name + "revision" +
                                      revision)
        self.cert_re     = re.compile(lines + space + "name" + name +
                                      "value" + value)

        attr = space + "file" + lines + space + "attr" + space
        self.attr_execute_re = re.compile(attr  + '"mtn:execute"' +
                                          space + '"true"')

        # cached data
        self.manifest_rev = None
        self.manifest = None
        self.files = None
        self.dirs  = None

        checktool('mtn', abort=False)

        # test if there are any revisions
        self.rev = None
        try:
            self.getheads()
        except:
            raise norepo
        self.rev = rev
Exemplo n.º 9
0
 def __init__(self, ui, path, revs=None):
     converter_source.__init__(self, ui, path, revs)
     self.ignoreerrors = ui.configbool('convert', 'hg.ignoreerrors', False)
     self.ignored = set()
     self.saverev = ui.configbool('convert', 'hg.saverev', False)
     try:
         self.repo = hg.repository(self.ui, path)
         # try to provoke an exception if this isn't really a hg
         # repo, but some other bogus compatible-looking url
         if not self.repo.local():
             raise error.RepoError
     except error.RepoError:
         ui.traceback()
         raise NoRepo(_("%s is not a local Mercurial repository") % path)
     self.lastrev = None
     self.lastctx = None
     self._changescache = None, None
     self.convertfp = None
     # Restrict converted revisions to startrev descendants
     startnode = ui.config('convert', 'hg.startrev')
     hgrevs = ui.config('convert', 'hg.revs')
     if hgrevs is None:
         if startnode is not None:
             try:
                 startnode = self.repo.lookup(startnode)
             except error.RepoError:
                 raise error.Abort(
                     _('%s is not a valid start revision') % startnode)
             startrev = self.repo.changelog.rev(startnode)
             children = {startnode: 1}
             for r in self.repo.changelog.descendants([startrev]):
                 children[self.repo.changelog.node(r)] = 1
             self.keep = children.__contains__
         else:
             self.keep = util.always
         if revs:
             self._heads = [self.repo[r].node() for r in revs]
         else:
             self._heads = self.repo.heads()
     else:
         if revs or startnode is not None:
             raise error.Abort(
                 _('hg.revs cannot be combined with '
                   'hg.startrev or --rev'))
         nodes = set()
         parents = set()
         for r in scmutil.revrange(self.repo, [hgrevs]):
             ctx = self.repo[r]
             nodes.add(ctx.node())
             parents.update(p.node() for p in ctx.parents())
         self.keep = nodes.__contains__
         self._heads = nodes - parents
Exemplo n.º 10
0
 def __init__(self, ui, path, rev=None):
     converter_source.__init__(self, ui, path, rev)
     self.ignoreerrors = ui.configbool('convert', 'hg.ignoreerrors', False)
     self.ignored = set()
     self.saverev = ui.configbool('convert', 'hg.saverev', False)
     try:
         self.repo = hg.repository(self.ui, path)
         # try to provoke an exception if this isn't really a hg
         # repo, but some other bogus compatible-looking url
         if not self.repo.local():
             raise error.RepoError
     except error.RepoError:
         ui.traceback()
         raise NoRepo(_("%s is not a local Mercurial repository") % path)
     self.lastrev = None
     self.lastctx = None
     self._changescache = None, None
     self.convertfp = None
     # Restrict converted revisions to startrev descendants
     startnode = ui.config('convert', 'hg.startrev')
     hgrevs = ui.config('convert', 'hg.revs')
     if hgrevs is None:
         if startnode is not None:
             try:
                 startnode = self.repo.lookup(startnode)
             except error.RepoError:
                 raise util.Abort(_('%s is not a valid start revision')
                                  % startnode)
             startrev = self.repo.changelog.rev(startnode)
             children = {startnode: 1}
             for r in self.repo.changelog.descendants([startrev]):
                 children[self.repo.changelog.node(r)] = 1
             self.keep = children.__contains__
         else:
             self.keep = util.always
         if rev:
             self._heads = [self.repo[rev].node()]
         else:
             self._heads = self.repo.heads()
     else:
         if rev or startnode is not None:
             raise util.Abort(_('hg.revs cannot be combined with '
                                'hg.startrev or --rev'))
         nodes = set()
         parents = set()
         for r in scmutil.revrange(self.repo, [hgrevs]):
             ctx = self.repo[r]
             nodes.add(ctx.node())
             parents.update(p.node() for p in ctx.parents())
         self.keep = nodes.__contains__
         self._heads = nodes - parents
Exemplo n.º 11
0
    def __init__(self, ui, path=None, revs=None):
        converter_source.__init__(self, ui, path, revs)
        if revs and len(revs) > 1:
            raise error.Abort(_("monotone source does not support specifying " "multiple revs"))
        commandline.__init__(self, ui, "mtn")

        self.ui = ui
        self.path = path
        self.automatestdio = False
        self.revs = revs

        norepo = NoRepo(_("%s does not look like a monotone repository") % path)
        if not os.path.exists(os.path.join(path, "_MTN")):
            # Could be a monotone repository (SQLite db file)
            try:
                f = file(path, "rb")
                header = f.read(16)
                f.close()
            except IOError:
                header = ""
            if header != "SQLite format 3\x00":
                raise norepo

        # regular expressions for parsing monotone output
        space = r"\s*"
        name = r'\s+"((?:\\"|[^"])*)"\s*'
        value = name
        revision = r"\s+\[(\w+)\]\s*"
        lines = r"(?:.|\n)+"

        self.dir_re = re.compile(space + "dir" + name)
        self.file_re = re.compile(space + "file" + name + "content" + revision)
        self.add_file_re = re.compile(space + "add_file" + name + "content" + revision)
        self.patch_re = re.compile(space + "patch" + name + "from" + revision + "to" + revision)
        self.rename_re = re.compile(space + "rename" + name + "to" + name)
        self.delete_re = re.compile(space + "delete" + name)
        self.tag_re = re.compile(space + "tag" + name + "revision" + revision)
        self.cert_re = re.compile(lines + space + "name" + name + "value" + value)

        attr = space + "file" + lines + space + "attr" + space
        self.attr_execute_re = re.compile(attr + '"mtn:execute"' + space + '"true"')

        # cached data
        self.manifest_rev = None
        self.manifest = None
        self.files = None
        self.dirs = None

        checktool("mtn", abort=False)
Exemplo n.º 12
0
 def __init__(self, ui, path, rev=None):
     converter_source.__init__(self, ui, path, rev)
     self.saverev = ui.configbool('convert', 'hg.saverev', True)
     try:
         self.repo = hg.repository(self.ui, path)
         # try to provoke an exception if this isn't really a hg
         # repo, but some other bogus compatible-looking url
         if not self.repo.local():
             raise RepoError()
     except RepoError:
         ui.print_exc()
         raise NoRepo("%s is not a local Mercurial repo" % path)
     self.lastrev = None
     self.lastctx = None
     self._changescache = None
     self.convertfp = None
Exemplo n.º 13
0
Arquivo: hg.py Projeto: c0ns0le/cygwin
 def __init__(self, ui, path, rev=None):
     converter_source.__init__(self, ui, path, rev)
     self.saverev = ui.configbool('convert', 'hg.saverev', True)
     try:
         self.repo = hg.repository(self.ui, path)
         # try to provoke an exception if this isn't really a hg
         # repo, but some other bogus compatible-looking url
         if not self.repo.local():
             raise RepoError()
     except RepoError:
         ui.print_exc()
         raise NoRepo("%s is not a local Mercurial repo" % path)
     self.lastrev = None
     self.lastctx = None
     self._changescache = None
     self.convertfp = None
Exemplo n.º 14
0
    def __init__(self, ui, path, rev=None):
        converter_source.__init__(self, ui, path, rev=rev)
        commandline.__init__(self, ui, 'darcs')

        # check for _darcs, ElementTree, _darcs/inventory so that we can
        # easily skip test-convert-darcs if ElementTree is not around
        if not os.path.exists(os.path.join(path, '_darcs')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        checktool('darcs')

        if ElementTree is None:
            raise util.Abort(_("Python ElementTree module is not available. Try installing the python-elementtree Debian package to convert from darcs"))

        if not os.path.exists(os.path.join(path, '_darcs', 'inventory')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        self.path = os.path.realpath(path)

        self.lastrev = None
        self.changes = {}
        self.parents = {}
        self.tags = {}
Exemplo n.º 15
0
    def __init__(self, ui, path, rev=None):
        converter_source.__init__(self, ui, path, rev=rev)
        commandline.__init__(self, ui, 'darcs')

        # check for _darcs, ElementTree, _darcs/inventory so that we can
        # easily skip test-convert-darcs if ElementTree is not around
        if not os.path.exists(os.path.join(path, '_darcs')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        checktool('darcs')

        if ElementTree is None:
            raise util.Abort(_("Python ElementTree module is not available"))

        if not os.path.exists(os.path.join(path, '_darcs', 'inventory')):
            raise NoRepo("%s does not look like a darcs repo" % path)

        self.path = os.path.realpath(path)

        self.lastrev = None
        self.changes = {}
        self.parents = {}
        self.tags = {}