def genignore(ui, repo, force=False, **opts): """generate .hgignore from svn:ignore properties. """ if repo is None: raise error.RepoError("There is no Mercurial repository" " here (.hg not found)") ignpath = repo.wjoin('.hgignore') if not force and os.path.exists(ignpath): raise hgutil.Abort('not overwriting existing .hgignore, try --force?') svn = svnrepo.svnremoterepo(repo.ui).svn meta = repo.svnmeta() hashes = meta.revmap.hashes() parent = util.parentrev(ui, repo, meta, hashes) r, br = hashes[parent.node()] branchpath = meta.layoutobj.remotename(br) if branchpath: branchpath += '/' ignorelines = ['.hgignore', 'syntax:glob'] dirs = [''] + [d[0] for d in svn.list_files(branchpath, r) if d[1] == 'd'] for dir in dirs: path = '%s%s' % (branchpath, dir) props = svn.list_props(path, r) if 'svn:ignore' not in props: continue lines = props['svn:ignore'].strip().split('\n') ignorelines += [dir and (dir + '/' + prop) or prop for prop in lines if prop.strip()] repo.wopener('.hgignore', 'w').write('\n'.join(ignorelines) + '\n')
def genignore(ui, repo, force=False, **opts): """generate .hgignore from svn:ignore properties. """ if repo is None: raise error.RepoError("There is no Mercurial repository" " here (.hg not found)") ignpath = repo.wjoin(".hgignore") if not force and os.path.exists(ignpath): raise hgutil.Abort("not overwriting existing .hgignore, try --force?") svn = svnrepo.svnremoterepo(repo.ui).svn meta = repo.svnmeta() hashes = meta.revmap.hashes() parent = util.parentrev(ui, repo, meta, hashes) r, br = hashes[parent.node()] if meta.layout == "single": branchpath = "" else: branchpath = br and ("branches/%s/" % br) or "trunk/" ignorelines = [".hgignore", "syntax:glob"] dirs = [""] + [d[0] for d in svn.list_files(branchpath, r) if d[1] == "d"] for dir in dirs: path = "%s%s" % (branchpath, dir) props = svn.list_props(path, r) if "svn:ignore" not in props: continue lines = props["svn:ignore"].strip().split("\n") ignorelines += [dir and (dir + "/" + prop) or prop for prop in lines] repo.wopener(".hgignore", "w").write("\n".join(ignorelines) + "\n")
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 = parent.extra()["convert_revision"][40:].split("@")[0] if meta.layout == "single": branchpath = "" elif br == None: branchpath = "/trunk" elif br.startswith("../"): branchpath = "/%s" % br[3:] subdir = subdir.replace("branches/../", "") else: branchpath = "/branches/%s" % br remoterepo = svnrepo.svnremoterepo(repo.ui) url = "%s%s" % (remoterepo.svnurl, branchpath) 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)"), } )
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 = parent.extra()['convert_revision'][40:].split('@')[0] if meta.layout == 'single': branchpath = '' elif br == None: branchpath = '/trunk' elif br.startswith('../'): branchpath = '/%s' % br[3:] subdir = subdir.replace('branches/../', '') else: branchpath = '/branches/%s' % br remoterepo = svnrepo.svnremoterepo(repo.ui) url = '%s%s' % (remoterepo.svnurl, branchpath) 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)') })
def parents(orig, ui, repo, *args, **opts): """show Mercurial & Subversion parents of the working dir or revision """ if not opts.get('svn', False): return orig(ui, repo, *args, **opts) meta = repo.svnmeta() hashes = meta.revmap.hashes() ha = util.parentrev(ui, repo, meta, hashes) if ha.node() == node.nullid: raise hgutil.Abort('No parent svn revision!') displayer = cmdutil.show_changeset(ui, repo, opts, buffered=False) displayer.show(ha) return 0
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)') })