def lookup_reg(key, valname=None, scope=None): """ Look up a key/value name in the Windows registry. valname: value name. If unspecified, the default value for the key is used. scope: optionally specify scope for registry lookup, this can be a sequence of scopes to look up in order. Default (CURRENT_USER, LOCAL_MACHINE). """ try: from _winreg import HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, QueryValueEx, OpenKey except ImportError: return None if scope is None: scope = (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE) elif not isinstance(scope, (list, tuple)): scope = (scope,) for s in scope: try: val = QueryValueEx(OpenKey(s, key), valname)[0] # never let a Unicode string escape into the wild return util.tolocal(val.encode("UTF-8")) except EnvironmentError: pass
def lookup_reg(key, valname=None, scope=None): ''' Look up a key/value name in the Windows registry. valname: value name. If unspecified, the default value for the key is used. scope: optionally specify scope for registry lookup, this can be a sequence of scopes to look up in order. Default (CURRENT_USER, LOCAL_MACHINE). ''' try: from _winreg import HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, \ QueryValueEx, OpenKey except ImportError: return None if scope is None: scope = (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE) elif not isinstance(scope, (list, tuple)): scope = (scope, ) for s in scope: try: val = QueryValueEx(OpenKey(s, key), valname)[0] # never let a Unicode string escape into the wild return util.tolocal(val.encode('UTF-8')) except EnvironmentError: pass
def read(self, node): """ format used: nodeid\n : manifest node in ascii user\n : user, no \n or \r allowed time tz extra\n : date (time is int or float, timezone is int) : extra is metadatas, encoded and separated by '\0' : older versions ignore it files\n\n : files modified by the cset, no \n or \r allowed (.*) : comment (free text, ideally utf-8) changelog v0 doesn't use extra """ text = self.revision(node) if not text: return (nullid, "", (0, 0), [], "", {'branch': 'default'}) last = text.index("\n\n") desc = util.tolocal(text[last + 2:]) l = text[:last].split('\n') manifest = bin(l[0]) user = util.tolocal(l[1]) extra_data = l[2].split(' ', 2) if len(extra_data) != 3: time = float(extra_data.pop(0)) try: # various tools did silly things with the time zone field. timezone = int(extra_data[0]) except: timezone = 0 extra = {} else: time, timezone, extra = extra_data time, timezone = float(time), int(timezone) extra = self.decode_extra(extra) if not extra.get('branch'): extra['branch'] = 'default' files = l[3:] return (manifest, user, (time, timezone), files, desc, extra)
def showbranches(**args): branch = changes[5].get("branch") if branch != 'default': branch = util.tolocal(branch) return showlist('branch', [branch], plural='branches', **args)
def _show(self, rev, changenode, copies, props): '''show a single changeset or file revision''' log = self.repo.changelog if changenode is None: changenode = log.node(rev) elif not rev: rev = log.rev(changenode) if self.ui.quiet: self.ui.write("%d:%s\n" % (rev, short(changenode))) return changes = log.read(changenode) date = util.datestr(changes[2]) extra = changes[5] branch = extra.get("branch") hexfunc = self.ui.debugflag and hex or short parents = [(p, hexfunc(log.node(p))) for p in self._meaningful_parentrevs(log, rev)] self.ui.write(_("changeset: %d:%s\n") % (rev, hexfunc(changenode))) # don't show the default branch name if branch != 'default': branch = util.tolocal(branch) self.ui.write(_("branch: %s\n") % branch) for tag in self.repo.nodetags(changenode): self.ui.write(_("tag: %s\n") % tag) for parent in parents: self.ui.write(_("parent: %d:%s\n") % parent) if self.ui.debugflag: self.ui.write( _("manifest: %d:%s\n") % (self.repo.manifest.rev(changes[0]), hex(changes[0]))) self.ui.write(_("user: %s\n") % changes[1]) self.ui.write(_("date: %s\n") % date) if self.ui.debugflag: files = self.repo.status(log.parents(changenode)[0], changenode)[:3] for key, value in zip( [_("files:"), _("files+:"), _("files-:")], files): if value: self.ui.write("%-12s %s\n" % (key, " ".join(value))) elif changes[3] and self.ui.verbose: self.ui.write(_("files: %s\n") % " ".join(changes[3])) if copies and self.ui.verbose: copies = ['%s (%s)' % c for c in copies] self.ui.write(_("copies: %s\n") % ' '.join(copies)) if extra and self.ui.debugflag: extraitems = extra.items() extraitems.sort() for key, value in extraitems: self.ui.write( _("extra: %s=%s\n") % (key, value.encode('string_escape'))) description = changes[4].strip() if description: if self.ui.verbose: self.ui.write(_("description:\n")) self.ui.write(description) self.ui.write("\n\n") else: self.ui.write( _("summary: %s\n") % description.splitlines()[0]) self.ui.write("\n") self.showpatch(changenode)
def _show(self, rev, changenode, copies, props): '''show a single changeset or file revision''' log = self.repo.changelog if changenode is None: changenode = log.node(rev) elif not rev: rev = log.rev(changenode) if self.ui.quiet: self.ui.write("%d:%s\n" % (rev, short(changenode))) return changes = log.read(changenode) date = util.datestr(changes[2]) extra = changes[5] branch = extra.get("branch") hexfunc = self.ui.debugflag and hex or short parents = [(p, hexfunc(log.node(p))) for p in self._meaningful_parentrevs(log, rev)] self.ui.write(_("changeset: %d:%s\n") % (rev, hexfunc(changenode))) # don't show the default branch name if branch != 'default': branch = util.tolocal(branch) self.ui.write(_("branch: %s\n") % branch) for tag in self.repo.nodetags(changenode): self.ui.write(_("tag: %s\n") % tag) for parent in parents: self.ui.write(_("parent: %d:%s\n") % parent) if self.ui.debugflag: self.ui.write(_("manifest: %d:%s\n") % (self.repo.manifest.rev(changes[0]), hex(changes[0]))) self.ui.write(_("user: %s\n") % changes[1]) self.ui.write(_("date: %s\n") % date) if self.ui.debugflag: files = self.repo.status(log.parents(changenode)[0], changenode)[:3] for key, value in zip([_("files:"), _("files+:"), _("files-:")], files): if value: self.ui.write("%-12s %s\n" % (key, " ".join(value))) elif changes[3] and self.ui.verbose: self.ui.write(_("files: %s\n") % " ".join(changes[3])) if copies and self.ui.verbose: copies = ['%s (%s)' % c for c in copies] self.ui.write(_("copies: %s\n") % ' '.join(copies)) if extra and self.ui.debugflag: extraitems = extra.items() extraitems.sort() for key, value in extraitems: self.ui.write(_("extra: %s=%s\n") % (key, value.encode('string_escape'))) description = changes[4].strip() if description: if self.ui.verbose: self.ui.write(_("description:\n")) self.ui.write(description) self.ui.write("\n\n") else: self.ui.write(_("summary: %s\n") % description.splitlines()[0]) self.ui.write("\n") self.showpatch(changenode)