def info(ui, repo, **opts): """show Subversion details similar to `svn info' """ if repo is None: raise error.RepoError("There is no Mercurial repository" " here (.hg not found)") meta = repo.svnmeta() hashes = meta.revmap.hashes() if opts.get('rev'): parent = repo[opts['rev']] else: parent = util.parentrev(ui, repo, meta, hashes) pn = parent.node() if pn not in hashes: ui.status('Not a child of an svn revision.\n') return 0 r, br = hashes[pn] subdir = util.getsvnrev(parent)[40:].split('@')[0] remoterepo = svnrepo.svnremoterepo(repo.ui) url = meta.layoutobj.remotepath(br, remoterepo.svnurl) author = meta.authors.reverselookup(parent.user()) # cleverly figure out repo root w/o actually contacting the server reporoot = url[:len(url) - len(subdir)] ui.write( '''URL: %(url)s Repository Root: %(reporoot)s Repository UUID: %(uuid)s Revision: %(revision)s Node Kind: directory Last Changed Author: %(author)s Last Changed Rev: %(revision)s Last Changed Date: %(date)s\n''' % { 'reporoot': reporoot, 'uuid': meta.uuid, 'url': url, 'author': author, 'revision': r, # TODO I'd like to format this to the user's local TZ if possible 'date': compathacks.datestr(parent.date(), '%Y-%m-%d %H:%M:%S %1%2 (%a, %d %b %Y)') })
def _templatehelper(ctx, kw): ''' Helper function for displaying information about converted changesets. ''' convertinfo = util.getsvnrev(ctx, '') if not convertinfo or not convertinfo.startswith('svn:'): return '' if kw == 'svnuuid': return convertinfo[4:40] elif kw == 'svnpath': return convertinfo[40:].rsplit('@', 1)[0] elif kw == 'svnrev': return convertinfo[40:].rsplit('@', 1)[-1] else: raise hgerror.Abort('unrecognized hgsubversion keyword %s' % kw)
def info(ui, repo, **opts): """show Subversion details similar to `svn info' """ if repo is None: raise error.RepoError("There is no Mercurial repository" " here (.hg not found)") meta = repo.svnmeta() hashes = meta.revmap.hashes() if opts.get('rev'): parent = repo[opts['rev']] else: parent = util.parentrev(ui, repo, meta, hashes) pn = parent.node() if pn not in hashes: ui.status('Not a child of an svn revision.\n') return 0 r, br = hashes[pn] subdir = util.getsvnrev(parent)[40:].split('@')[0] remoterepo = svnrepo.svnremoterepo(repo.ui) url = meta.layoutobj.remotepath(br, remoterepo.svnurl) author = meta.authors.reverselookup(parent.user()) # cleverly figure out repo root w/o actually contacting the server reporoot = url[:len(url)-len(subdir)] ui.write('''URL: %(url)s Repository Root: %(reporoot)s Repository UUID: %(uuid)s Revision: %(revision)s Node Kind: directory Last Changed Author: %(author)s Last Changed Rev: %(revision)s Last Changed Date: %(date)s\n''' % {'reporoot': reporoot, 'uuid': meta.uuid, 'url': url, 'author': author, 'revision': r, # TODO I'd like to format this to the user's local TZ if possible 'date': hgutil.datestr(parent.date(), '%Y-%m-%d %H:%M:%S %1%2 (%a, %d %b %Y)') })
numrevs = len(repo) - startrev # ctx.children() visits all revisions in the repository after ctx. Calling # it would make us use O(revisions^2) time, so we perform an extra traversal # of the repository instead. During this traversal, we find all converted # changesets that close a branch, and store their first parent for rev in xrange(startrev, len(repo)): ui.progress('prepare', rev - startrev, total=numrevs) try: ctx = repo[rev] except error.RepoError: # this revision is hidden continue convinfo = util.getsvnrev(ctx, None) if not convinfo: continue svnrevnum = int(convinfo.rsplit('@', 1)[1]) youngest = max(youngest, svnrevnum) if ctx.extra().get('close', None) is None: continue droprev = lambda x: x.rsplit('@', 1)[0] parentctx = ctx.parents()[0] parentinfo = util.getsvnrev(parentctx, '@') if droprev(parentinfo) == droprev(convinfo): if parentctx.rev() < startrev: parentbranch = parentctx.branch()