# HG changeset patch # User Martin Geisler # Date 1281688139 -7200 # Node ID b9d316bcc0131655ea83547547888e6876310d8f # Parent 7c9beccb0533a32e1c8257e25b2e66d6f4e21cc7# Parent 53fdc0989047af5a368dcb5f4daf0b5450da000e Merge with stable diff -r 53fdc0989047 -r b9d316bcc013 contrib/bash_completion --- a/contrib/bash_completion Thu Aug 12 22:48:22 2010 +0200 +++ b/contrib/bash_completion Fri Aug 13 10:28:59 2010 +0200 @@ -462,6 +462,17 @@ return 1 } +_hg_cmd_qqueue() +{ + local q + local queues + local opts="--list --create --delete" + + queues=$( _hg_cmd qqueue --quiet ) + + COMPREPLY=( $( compgen -W "${opts} ${queues}" "${cur}" ) ) +} + # hbisect _hg_cmd_bisect() diff -r 53fdc0989047 -r b9d316bcc013 contrib/check-code.py --- a/contrib/check-code.py Thu Aug 12 22:48:22 2010 +0200 +++ b/contrib/check-code.py Fri Aug 13 10:28:59 2010 +0200 @@ -7,7 +7,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -import re, glob +import re, glob, os, sys import optparse def repquote(m): @@ -70,12 +70,20 @@ ] pypats = [ + (r'^\s*def\s*\w+\s*\(.*,\s*\(', + "tuple parameter unpacking not available in Python 3+"), + (r'lambda\s*\(.*,.*\)', + "tuple parameter unpacking not available in Python 3+"), + (r'(?]\w', "missing whitespace in expression"), (r'^\s+\w+=\w+[^,)]$', "missing whitespace in assignment"), (r'.{85}', "line too long"), + (r'.{81}', "warning: line over 80 characters"), (r'[^\n]\Z', "no trailing newline"), # (r'^\s+[^_ ][^_. ]+_[^_]+\s*=', "don't use underbars in identifiers"), # (r'\w*[a-z][A-Z]\w*\s*=', "don't use camelcase in identifiers"), @@ -154,7 +162,7 @@ def __init__(self): self._lastseen = None - def log(self, fname, lineno, line, msg): + def log(self, fname, lineno, line, msg, blame): """print error related a to given line of a given file. The faulty line will also be printed but only once in the case @@ -167,14 +175,26 @@ """ msgid = fname, lineno, line if msgid != self._lastseen: - print "%s:%d:" % (fname, lineno) + if blame: + print "%s:%d (%s):" % (fname, lineno, blame) + else: + print "%s:%d:" % (fname, lineno) print " > %s" % line self._lastseen = msgid print " " + msg _defaultlogger = norepeatlogger() -def checkfile(f, logfunc=_defaultlogger.log, maxerr=None, warnings=False): +def getblame(f): + lines = [] + for l in os.popen('hg annotate -un %s' % f): + start, line = l.split(':', 1) + user, rev = start.split() + lines.append((line[1:-1], user, rev)) + return lines + +def checkfile(f, logfunc=_defaultlogger.log, maxerr=None, warnings=False, + blame=False): """checks style and portability of a given file :f: filepath @@ -185,6 +205,7 @@ return True if no error is found, False otherwise. """ + blamecache = None result = True for name, match, filters, pats in checks: fc = 0 @@ -204,7 +225,16 @@ if not warnings and msg.startswith("warning"): continue if re.search(p, l[1]): - logfunc(f, n + 1, l[0], msg) + bd = "" + if blame: + bd = 'working directory' + if not blamecache: + blamecache = getblame(f) + if n < len(blamecache): + bl, bu, br = blamecache[n] + if bl == l[0]: + bd = '%s@%s' % (bu, br) + logfunc(f, n + 1, l[0], msg, bd) fc += 1 result = False if maxerr is not None and fc >= maxerr: @@ -213,15 +243,16 @@ break return result - if __name__ == "__main__": parser = optparse.OptionParser("%prog [options] [files]") parser.add_option("-w", "--warnings", action="store_true", help="include warning-level checks") parser.add_option("-p", "--per-file", type="int", help="max warnings per file") + parser.add_option("-b", "--blame", action="store_true", + help="use annotate to generate blame info") - parser.set_defaults(per_file=15, warnings=False) + parser.set_defaults(per_file=15, warnings=False, blame=False) (options, args) = parser.parse_args() if len(args) == 0: @@ -230,4 +261,8 @@ check = args for f in check: - checkfile(f, maxerr=options.per_file, warnings=options.warnings) + ret = 0 + if not checkfile(f, maxerr=options.per_file, warnings=options.warnings, + blame=options.blame): + ret = 1 + sys.exit(ret) diff -r 53fdc0989047 -r b9d316bcc013 contrib/debugshell.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/debugshell.py Fri Aug 13 10:28:59 2010 +0200 @@ -0,0 +1,21 @@ +# debugshell extension +"""a python shell with repo, changelog & manifest objects""" + +import mercurial +import code + +def debugshell(ui, repo, **opts): + objects = { + 'mercurial': mercurial, + 'repo': repo, + 'cl': repo.changelog, + 'mf': repo.manifest, + } + bannermsg = "loaded repo : %s\n" \ + "using source: %s" % (repo.root, + mercurial.__path__[0]) + code.interact(bannermsg, local=objects) + +cmdtable = { + "debugshell|dbsh": (debugshell, []) +} diff -r 53fdc0989047 -r b9d316bcc013 contrib/hgfixes/fix_bytes.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/hgfixes/fix_bytes.py Fri Aug 13 10:28:59 2010 +0200 @@ -0,0 +1,97 @@ +"""Fixer that changes plain strings to bytes strings.""" + +import re + +from lib2to3 import fixer_base +from lib2to3.pgen2 import token +from lib2to3.fixer_util import Name +from lib2to3.pygram import python_symbols as syms + +_re = re.compile(r'[rR]?[\'\"]') + +# XXX: Implementing a blacklist in 2to3 turned out to be more troublesome than +# blacklisting some modules inside the fixers. So, this is what I came with. + +blacklist = ['mercurial/demandimport.py', + 'mercurial/py3kcompat.py', # valid python 3 already + 'mercurial/i18n.py', + ] + +def isdocstring(node): + def isclassorfunction(ancestor): + symbols = (syms.funcdef, syms.classdef) + # if the current node is a child of a function definition, a class + # definition or a file, then it is a docstring + if ancestor.type == syms.simple_stmt: + try: + while True: + if ancestor.type in symbols: + return True + ancestor = ancestor.parent + except AttributeError: + return False + return False + + def ismodule(ancestor): + # Our child is a docstring if we are a simple statement, and our + # ancestor is file_input. In other words, our child is a lone string in + # the source file. + try: + if (ancestor.type == syms.simple_stmt and + ancestor.parent.type == syms.file_input): + return True + except AttributeError: + return False + + def isdocassignment(ancestor): + # Assigning to __doc__, definitely a string + try: + while True: + if (ancestor.type == syms.expr_stmt and + Name('__doc__') in ancestor.children): + return True + ancestor = ancestor.parent + except AttributeError: + return False + + if ismodule(node.parent) or \ + isdocassignment(node.parent) or \ + isclassorfunction(node.parent): + return True + return False + +def shouldtransform(node): + specialnames = ['__main__'] + + if node.value in specialnames: + return False + + ggparent = node.parent.parent.parent + sggparent = str(ggparent) + + if 'getattr' in sggparent or \ + 'hasattr' in sggparent or \ + 'setattr' in sggparent or \ + 'encode' in sggparent or \ + 'decode' in sggparent: + return False + + return True + +class FixBytes(fixer_base.BaseFix): + + PATTERN = 'STRING' + + def transform(self, node, results): + if self.filename in blacklist: + return + if node.type == token.STRING: + if _re.match(node.value): + if isdocstring(node): + return + if not shouldtransform(node): + return + new = node.clone() + new.value = 'b' + new.value + return new + diff -r 53fdc0989047 -r b9d316bcc013 contrib/hgfixes/fix_bytesmod.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/hgfixes/fix_bytesmod.py Fri Aug 13 10:28:59 2010 +0200 @@ -0,0 +1,63 @@ +"""Fixer that changes bytes % whatever to a function that actually formats +it.""" + +from lib2to3 import fixer_base +from lib2to3.fixer_util import is_tuple, Call, Comma, Name, touch_import + +# XXX: Implementing a blacklist in 2to3 turned out to be more troublesome than +# blacklisting some modules inside the fixers. So, this is what I came with. + +blacklist = ['mercurial/demandimport.py', + 'mercurial/py3kcompat.py', + 'mercurial/i18n.py', + ] + +def isnumberremainder(formatstr, data): + try: + if data.value.isdigit(): + return True + except AttributeError: + return False + +class FixBytesmod(fixer_base.BaseFix): + # XXX: There's one case (I suppose) I can't handle: when a remainder + # operation like foo % bar is performed, I can't really know what the + # contents of foo and bar are. I believe the best approach is to "correct" + # the to-be-converted code and let bytesformatter handle that case in + # runtime. + PATTERN = ''' + term< formatstr=STRING '%' data=STRING > | + term< formatstr=STRING '%' data=atom > | + term< formatstr=NAME '%' data=any > | + term< formatstr=any '%' data=any > + ''' + + def transform(self, node, results): + if self.filename in blacklist: + return + elif self.filename == 'mercurial/util.py': + touch_import('.', 'py3kcompat', node=node) + + formatstr = results['formatstr'].clone() + data = results['data'].clone() + formatstr.prefix = '' # remove spaces from start + + if isnumberremainder(formatstr, data): + return + + # We have two possibilities: + # 1- An identifier or name is passed, it is going to be a leaf, thus, we + # just need to copy its value as an argument to the formatter; + # 2- A tuple is explicitly passed. In this case, we're gonna explode it + # to pass to the formatter + # TODO: Check for normal strings. They don't need to be translated + + if is_tuple(data): + args = [formatstr, Comma().clone()] + \ + [c.clone() for c in data.children[:]] + else: + args = [formatstr, Comma().clone(), data] + + call = Call(Name('bytesformatter', prefix = ' '), args) + return call + diff -r 53fdc0989047 -r b9d316bcc013 contrib/mergetools.hgrc --- a/contrib/mergetools.hgrc Thu Aug 12 22:48:22 2010 +0200 +++ b/contrib/mergetools.hgrc Fri Aug 13 10:28:59 2010 +0200 @@ -13,6 +13,9 @@ gvimdiff.regname=path gvimdiff.priority=-9 +vimdiff.args=$local $other $base +vimdiff.priority=-10 + merge.checkconflicts=True merge.priority=-100 diff -r 53fdc0989047 -r b9d316bcc013 contrib/perf.py --- a/contrib/perf.py Thu Aug 12 22:48:22 2010 +0200 +++ b/contrib/perf.py Fri Aug 13 10:28:59 2010 +0200 @@ -133,6 +133,16 @@ title = 'diffopts: %s' % (diffopt and ('-' + diffopt) or 'none') timer(d, title) +def perfrevlog(ui, repo, file_, **opts): + from mercurial import revlog + dist = opts['dist'] + def d(): + r = revlog.revlog(lambda fn: open(fn, 'rb'), file_) + for x in xrange(0, len(r), dist): + r.revision(r.node(x)) + + timer(d) + cmdtable = { 'perflookup': (perflookup, []), 'perfparents': (perfparents, []), @@ -149,4 +159,7 @@ [('', 'rename', False, 'ask log to follow renames')]), 'perftemplating': (perftemplating, []), 'perfdiffwd': (perfdiffwd, []), + 'perfrevlog': (perfrevlog, + [('d', 'dist', 100, 'distance between the revisions')], + "[INDEXFILE]"), } diff -r 53fdc0989047 -r b9d316bcc013 contrib/zsh_completion --- a/contrib/zsh_completion Thu Aug 12 22:48:22 2010 +0200 +++ b/contrib/zsh_completion Fri Aug 13 10:28:59 2010 +0200 @@ -901,6 +901,7 @@ '(--merge -m)'{-m+,--merge}'[merge from another queue]:' \ '(--name -n)'{-n+,--name}'[merge queue name]:' \ '(--force -f)'{-f,--force}'[apply if the patch has rejects]' \ + '--move[reorder patch series and apply only the patch]' \ ':patch:_hg_qunapplied' } diff -r 53fdc0989047 -r b9d316bcc013 hgext/bookmarks.py --- a/hgext/bookmarks.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/bookmarks.py Fri Aug 13 10:28:59 2010 +0200 @@ -299,7 +299,7 @@ self.ui.debug("checking for updated bookmarks\n") rb = remote.listkeys('bookmarks') - changes = 0 + changed = False for k in rb.keys(): if k in self._bookmarks: nr, nl = rb[k], self._bookmarks[k] @@ -310,12 +310,12 @@ continue if cr in cl.descendants(): self._bookmarks[k] = cr.node() - changes += 1 + changed = True self.ui.status(_("updating bookmark %s\n") % k) else: self.ui.warn(_("not updating divergent" " bookmark %s\n") % k) - if changes: + if changed: write(repo) return result @@ -460,7 +460,7 @@ lmarks = repo.listkeys('bookmarks') rmarks = remote.listkeys('bookmarks') - diff = set(rmarks) - set(lmarks) + diff = sorted(set(rmarks) - set(lmarks)) for k in diff: ui.write(" %-25s %s\n" % (k, rmarks[k][:12])) diff -r 53fdc0989047 -r b9d316bcc013 hgext/bugzilla.py --- a/hgext/bugzilla.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/bugzilla.py Fri Aug 13 10:28:59 2010 +0200 @@ -437,5 +437,5 @@ bz.update(id, ctx) bz.notify(ids, util.email(ctx.user())) except MySQLdb.MySQLError, err: - raise util.Abort(_('database error: %s') % err[1]) + raise util.Abort(_('database error: %s') % err.args[1]) diff -r 53fdc0989047 -r b9d316bcc013 hgext/churn.py --- a/hgext/churn.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/churn.py Fri Aug 13 10:28:59 2010 +0200 @@ -149,7 +149,8 @@ if opts.get('diffstat'): width -= 15 - def format(name, (added, removed)): + def format(name, diffstat): + added, removed = diffstat return "%s %15s %s%s\n" % (pad(name, maxname), '+%d/-%d' % (added, removed), ui.label('+' * charnum(added), diff -r 53fdc0989047 -r b9d316bcc013 hgext/color.py --- a/hgext/color.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/color.py Fri Aug 13 10:28:59 2010 +0200 @@ -216,35 +216,36 @@ _('TYPE'))) try: - import re, pywintypes - from win32console import * + import re, pywintypes, win32console as win32c # http://msdn.microsoft.com/en-us/library/ms682088%28VS.85%29.aspx w32effects = { 'none': 0, 'black': 0, - 'red': FOREGROUND_RED, - 'green': FOREGROUND_GREEN, - 'yellow': FOREGROUND_RED | FOREGROUND_GREEN, - 'blue': FOREGROUND_BLUE, - 'magenta': FOREGROUND_BLUE | FOREGROUND_RED, - 'cyan': FOREGROUND_BLUE | FOREGROUND_GREEN, - 'white': FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, - 'bold': FOREGROUND_INTENSITY, + 'red': win32c.FOREGROUND_RED, + 'green': win32c.FOREGROUND_GREEN, + 'yellow': win32c.FOREGROUND_RED | win32c.FOREGROUND_GREEN, + 'blue': win32c.FOREGROUND_BLUE, + 'magenta': win32c.FOREGROUND_BLUE | win32c.FOREGROUND_RED, + 'cyan': win32c.FOREGROUND_BLUE | win32c.FOREGROUND_GREEN, + 'white': (win32c.FOREGROUND_RED | win32c.FOREGROUND_GREEN | + win32c.FOREGROUND_BLUE), + 'bold': win32c.FOREGROUND_INTENSITY, 'black_background': 0, - 'red_background': BACKGROUND_RED, - 'green_background': BACKGROUND_GREEN, - 'yellow_background': BACKGROUND_RED | BACKGROUND_GREEN, - 'blue_background': BACKGROUND_BLUE, - 'purple_background': BACKGROUND_BLUE | BACKGROUND_RED, - 'cyan_background': BACKGROUND_BLUE | BACKGROUND_GREEN, - 'white_background': BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE, - 'bold_background': BACKGROUND_INTENSITY, - 'underline': COMMON_LVB_UNDERSCORE, # double-byte charsets only - 'inverse': COMMON_LVB_REVERSE_VIDEO, # double-byte charsets only + 'red_background': win32c.BACKGROUND_RED, + 'green_background': win32c.BACKGROUND_GREEN, + 'yellow_background': win32c.BACKGROUND_RED | win32c.BACKGROUND_GREEN, + 'blue_background': win32c.BACKGROUND_BLUE, + 'purple_background': win32c.BACKGROUND_BLUE | win32c.BACKGROUND_RED, + 'cyan_background': win32c.BACKGROUND_BLUE | win32c.BACKGROUND_GREEN, + 'white_background': (win32c.BACKGROUND_RED | win32c.BACKGROUND_GREEN | + win32c.BACKGROUND_BLUE), + 'bold_background': win32c.BACKGROUND_INTENSITY, + 'underline': win32c.COMMON_LVB_UNDERSCORE, # double-byte charsets only + 'inverse': win32c.COMMON_LVB_REVERSE_VIDEO, # double-byte charsets only } - stdout = GetStdHandle(STD_OUTPUT_HANDLE) + stdout = win32c.GetStdHandle(win32c.STD_OUTPUT_HANDLE) try: origattr = stdout.GetConsoleScreenBufferInfo()['Attributes'] except pywintypes.error: diff -r 53fdc0989047 -r b9d316bcc013 hgext/convert/__init__.py --- a/hgext/convert/__init__.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/convert/__init__.py Fri Aug 13 10:28:59 2010 +0200 @@ -86,7 +86,7 @@ rename path/to/source path/to/destination - Comment lines start with '#'. A specificed path matches if it + Comment lines start with '#'. A specified path matches if it equals the full relative name of a file or one of its parent directories. The 'include' or 'exclude' directive with the longest matching path applies, so line order does not matter. @@ -96,8 +96,8 @@ exclusion of all other files and directories not explicitly included. The 'exclude' directive causes files or directories to be omitted. The 'rename' directive renames a file or directory if - is converted. To rename from a subdirectory into the root of the - repository, use '.' as the path to rename to. + it is converted. To rename from a subdirectory into the root of + the repository, use '.' as the path to rename to. The splicemap is a file that allows insertion of synthetic history, letting you specify the parents of a revision. This is diff -r 53fdc0989047 -r b9d316bcc013 hgext/convert/filemap.py --- a/hgext/convert/filemap.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/convert/filemap.py Fri Aug 13 10:28:59 2010 +0200 @@ -33,10 +33,20 @@ def parse(self, path): errs = 0 def check(name, mapping, listname): + if not name: + self.ui.warn(_('%s:%d: path to %s is missing\n') % + (lex.infile, lex.lineno, listname)) + return 1 if name in mapping: self.ui.warn(_('%s:%d: %r already in %s list\n') % (lex.infile, lex.lineno, name, listname)) return 1 + if (name.startswith('/') or + name.endswith('/') or + '//' in name): + self.ui.warn(_('%s:%d: superfluous / in %s %r\n') % + (lex.infile, lex.lineno, listname, name)) + return 1 return 0 lex = shlex.shlex(open(path), path, True) lex.wordchars += '!@#$%^&*()-=+[]{}|;:,./<>?' @@ -298,7 +308,9 @@ self.origparents[rev] = parents - if len(mparents) < 2 and not self.wanted(rev, wp): + closed = 'close' in self.commits[rev].extra + + if len(mparents) < 2 and not closed and not self.wanted(rev, wp): # We don't want this revision. # Update our state and tell the convert process to map this # revision to the same revision its parent as mapped to. diff -r 53fdc0989047 -r b9d316bcc013 hgext/convert/hg.py --- a/hgext/convert/hg.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/convert/hg.py Fri Aug 13 10:28:59 2010 +0200 @@ -175,7 +175,8 @@ if self.filemapmode and nparents == 1: man = self.repo.manifest mnode = self.repo.changelog.read(bin(p2))[0] - if not man.cmp(m1node, man.revision(mnode)): + closed = 'close' in commit.extra + if not closed and not man.cmp(m1node, man.revision(mnode)): self.ui.status(_("filtering out empty revision\n")) self.repo.rollback() return parent diff -r 53fdc0989047 -r b9d316bcc013 hgext/convert/transport.py --- a/hgext/convert/transport.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/convert/transport.py Fri Aug 13 10:28:59 2010 +0200 @@ -98,9 +98,8 @@ svn.ra.reparent(self.ra, self.svn_url.encode('utf8')) class Reporter(object): - def __init__(self, (reporter, report_baton)): - self._reporter = reporter - self._baton = report_baton + def __init__(self, reporter_data): + self._reporter, self._baton = reporter_data def set_path(self, path, revnum, start_empty, lock_token, pool=None): svn.ra.reporter2_invoke_set_path(self._reporter, self._baton, diff -r 53fdc0989047 -r b9d316bcc013 hgext/hgcia.py --- a/hgext/hgcia.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/hgcia.py Fri Aug 13 10:28:59 2010 +0200 @@ -40,7 +40,7 @@ """ from mercurial.i18n import _ -from mercurial.node import * +from mercurial.node import bin, short from mercurial import cmdutil, patch, templater, util, mail import email.Parser diff -r 53fdc0989047 -r b9d316bcc013 hgext/inotify/client.py --- a/hgext/inotify/client.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/inotify/client.py Fri Aug 13 10:28:59 2010 +0200 @@ -27,11 +27,11 @@ except (OSError, socket.error), err: autostart = self.ui.configbool('inotify', 'autostart', True) - if err[0] == errno.ECONNREFUSED: + if err.args[0] == errno.ECONNREFUSED: self.ui.warn(_('inotify-client: found dead inotify server ' 'socket; removing it\n')) os.unlink(os.path.join(self.root, '.hg', 'inotify.sock')) - if err[0] in (errno.ECONNREFUSED, errno.ENOENT) and autostart: + if err.args[0] in (errno.ECONNREFUSED, errno.ENOENT) and autostart: self.ui.debug('(starting inotify server)\n') try: try: @@ -49,13 +49,13 @@ return function(self, *args) except socket.error, err: self.ui.warn(_('inotify-client: could not talk to new ' - 'inotify server: %s\n') % err[-1]) - elif err[0] in (errno.ECONNREFUSED, errno.ENOENT): + 'inotify server: %s\n') % err.args[-1]) + elif err.args[0] in (errno.ECONNREFUSED, errno.ENOENT): # silently ignore normal errors if autostart is False self.ui.debug('(inotify server not running)\n') else: self.ui.warn(_('inotify-client: failed to contact inotify ' - 'server: %s\n') % err[-1]) + 'server: %s\n') % err.args[-1]) self.ui.traceback() raise QueryFailed('inotify query failed') @@ -75,7 +75,7 @@ try: self.sock.connect(sockpath) except socket.error, err: - if err[0] == "AF_UNIX path too long": + if err.args[0] == "AF_UNIX path too long": sockpath = os.readlink(sockpath) self.sock.connect(sockpath) else: diff -r 53fdc0989047 -r b9d316bcc013 hgext/inotify/linux/_inotify.c --- a/hgext/inotify/linux/_inotify.c Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/inotify/linux/_inotify.c Fri Aug 13 10:28:59 2010 +0200 @@ -15,6 +15,15 @@ #include #include +#include + +/* Variables used in the event string representation */ +static PyObject *join; +static PyObject *er_wm; +static PyObject *er_wmc; +static PyObject *er_wmn; +static PyObject *er_wmcn; + static PyObject *init(PyObject *self, PyObject *args) { PyObject *ret = NULL; @@ -312,8 +321,8 @@ }; PyDoc_STRVAR( - event_doc, - "event: Structure describing an inotify event."); + event_doc, + "event: Structure describing an inotify event."); static PyObject *event_new(PyTypeObject *t, PyObject *a, PyObject *k) { @@ -327,20 +336,14 @@ Py_XDECREF(evt->cookie); Py_XDECREF(evt->name); - (*evt->ob_type->tp_free)(evt); + Py_TYPE(evt)->tp_free(evt); } static PyObject *event_repr(struct event *evt) { - int wd = PyInt_AsLong(evt->wd); int cookie = evt->cookie == Py_None ? -1 : PyInt_AsLong(evt->cookie); PyObject *ret = NULL, *pymasks = NULL, *pymask = NULL; - PyObject *join = NULL; - char *maskstr; - - join = PyString_FromString("|"); - if (join == NULL) - goto bail; + PyObject *tuple = NULL, *formatstr = NULL; pymasks = decode_mask(PyInt_AsLong(evt->mask)); if (pymasks == NULL) @@ -350,33 +353,35 @@ if (pymask == NULL) goto bail; - maskstr = PyString_AsString(pymask); - if (evt->name != Py_None) { - PyObject *pyname = PyString_Repr(evt->name, 1); - char *name = pyname ? PyString_AsString(pyname) : "???"; - - if (cookie == -1) - ret = PyString_FromFormat( - "event(wd=%d, mask=%s, name=%s)", - wd, maskstr, name); - else - ret = PyString_FromFormat("event(wd=%d, mask=%s, " - "cookie=0x%x, name=%s)", - wd, maskstr, cookie, name); - - Py_XDECREF(pyname); + if (cookie == -1) { + formatstr = er_wmn; + tuple = PyTuple_Pack(3, evt->wd, pymask, evt->name); + } + else { + formatstr = er_wmcn; + tuple = PyTuple_Pack(4, evt->wd, pymask, + evt->cookie, evt->name); + } } else { - if (cookie == -1) - ret = PyString_FromFormat("event(wd=%d, mask=%s)", - wd, maskstr); + if (cookie == -1) { + formatstr = er_wm; + tuple = PyTuple_Pack(2, evt->wd, pymask); + } else { - ret = PyString_FromFormat( - "event(wd=%d, mask=%s, cookie=0x%x)", - wd, maskstr, cookie); + formatstr = er_wmc; + tuple = PyTuple_Pack(3, evt->wd, pymask, evt->cookie); } } + if (tuple == NULL) + goto bail; + + ret = PyNumber_Remainder(formatstr, tuple); + + if (ret == NULL) + goto bail; + goto done; bail: Py_CLEAR(ret); @@ -384,14 +389,13 @@ done: Py_XDECREF(pymask); Py_XDECREF(pymasks); - Py_XDECREF(join); + Py_XDECREF(tuple); return ret; } static PyTypeObject event_type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_inotify.event", /*tp_name*/ sizeof(struct event), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -561,6 +565,17 @@ return ret; } +static int init_globals(void) +{ + join = PyString_FromString("|"); + er_wm = PyString_FromString("event(wd=%d, mask=%s)"); + er_wmn = PyString_FromString("event(wd=%d, mask=%s, name=%s)"); + er_wmc = PyString_FromString("event(wd=%d, mask=%s, cookie=0x%x)"); + er_wmcn = PyString_FromString("event(wd=%d, mask=%s, cookie=0x%x, name=%s)"); + + return join && er_wm && er_wmn && er_wmc && er_wmcn; +} + PyDoc_STRVAR( read_doc, "read(fd, bufsize[=65536]) -> list_of_events\n" @@ -585,6 +600,35 @@ {NULL}, }; +#ifdef IS_PY3K +static struct PyModuleDef _inotify_module = { + PyModuleDef_HEAD_INIT, + "_inotify", + doc, + -1, + methods +}; + +PyMODINIT_FUNC PyInit__inotify(void) +{ + PyObject *mod, *dict; + + mod = PyModule_Create(&_inotify_module); + + if (mod == NULL) + return NULL; + + if (!init_globals()) + return; + + dict = PyModule_GetDict(mod); + + if (dict) + define_consts(dict); + + return mod; +} +#else void init_inotify(void) { PyObject *mod, *dict; @@ -592,6 +636,9 @@ if (PyType_Ready(&event_type) == -1) return; + if (!init_globals()) + return; + mod = Py_InitModule3("_inotify", methods, doc); dict = PyModule_GetDict(mod); @@ -599,3 +646,4 @@ if (dict) define_consts(dict); } +#endif diff -r 53fdc0989047 -r b9d316bcc013 hgext/inotify/linuxserver.py --- a/hgext/inotify/linuxserver.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/inotify/linuxserver.py Fri Aug 13 10:28:59 2010 +0200 @@ -117,7 +117,7 @@ try: events = cls.poll.poll(timeout) except select.error, err: - if err[0] == errno.EINTR: + if err.args[0] == errno.EINTR: continue raise if events: diff -r 53fdc0989047 -r b9d316bcc013 hgext/inotify/server.py --- a/hgext/inotify/server.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/inotify/server.py Fri Aug 13 10:28:59 2010 +0200 @@ -336,10 +336,10 @@ try: self.sock.bind(self.sockpath) except socket.error, err: - if err[0] == errno.EADDRINUSE: + if err.args[0] == errno.EADDRINUSE: raise AlreadyStartedException(_('cannot start: socket is ' 'already bound')) - if err[0] == "AF_UNIX path too long": + if err.args[0] == "AF_UNIX path too long": if os.path.islink(self.sockpath) and \ not os.path.exists(self.sockpath): raise util.Abort('inotify-server: cannot start: ' @@ -437,7 +437,7 @@ finally: sock.shutdown(socket.SHUT_WR) except socket.error, err: - if err[0] != errno.EPIPE: + if err.args[0] != errno.EPIPE: raise if sys.platform == 'linux2': diff -r 53fdc0989047 -r b9d316bcc013 hgext/keyword.py --- a/hgext/keyword.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/keyword.py Fri Aug 13 10:28:59 2010 +0200 @@ -158,9 +158,9 @@ kwpat = r'\$(%s)(: [^$\n\r]*? )??\$' % '|'.join(escaped) self.re_kw = re.compile(kwpat) - templatefilters.filters['utcdate'] = utcdate - templatefilters.filters['svnisodate'] = svnisodate - templatefilters.filters['svnutcdate'] = svnutcdate + templatefilters.filters.update({'utcdate': utcdate, + 'svnisodate': svnisodate, + 'svnutcdate': svnutcdate}) def substitute(self, data, path, ctx, subfunc): '''Replaces keywords in data with expanded template.''' diff -r 53fdc0989047 -r b9d316bcc013 hgext/mq.py --- a/hgext/mq.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/mq.py Fri Aug 13 10:28:59 2010 +0200 @@ -513,7 +513,7 @@ # apply failed, strip away that rev and merge. hg.clean(repo, head) - self.strip(repo, n, update=False, backup='strip') + self.strip(repo, [n], update=False, backup='strip') ctx = repo[rev] ret = hg.merge(repo, rev) @@ -895,7 +895,7 @@ finally: release(wlock) - def strip(self, repo, rev, update=True, backup="all", force=None): + def strip(self, repo, revs, update=True, backup="all", force=None): wlock = lock = None try: wlock = repo.wlock() @@ -903,12 +903,13 @@ if update: self.check_localchanges(repo, force=force, refresh=False) - urev = self.qparents(repo, rev) + urev = self.qparents(repo, revs[0]) hg.clean(repo, urev) repo.dirstate.write() self.removeundo(repo) - repair.strip(self.ui, repo, rev, backup) + for rev in revs: + repair.strip(self.ui, repo, rev, backup) # strip may have unbundled a set of backed up revisions after # the actual strip self.removeundo(repo) @@ -1197,7 +1198,7 @@ for patch in reversed(self.applied[start:end]): self.ui.status(_("popping %s\n") % patch.name) del self.applied[start:end] - self.strip(repo, rev, update=False, backup='strip') + self.strip(repo, [rev], update=False, backup='strip') if self.applied: self.ui.write(_("now at: %s\n") % self.applied[-1].name) else: @@ -1377,7 +1378,7 @@ repo.dirstate.setparents(*cparents) self.applied.pop() self.applied_dirty = 1 - self.strip(repo, top, update=False, + self.strip(repo, [top], update=False, backup='strip') except: repo.dirstate.invalidate() @@ -1532,7 +1533,7 @@ update = True else: update = False - self.strip(repo, rev, update=update, backup='strip') + self.strip(repo, [rev], update=update, backup='strip') if qpp: self.ui.warn(_("saved queue repository parents: %s %s\n") % (short(qpp[0]), short(qpp[1]))) @@ -1691,11 +1692,22 @@ if existing: if filename == '-': raise util.Abort(_('-e is incompatible with import from -')) - if not patchname: - patchname = normname(filename) - self.check_reserved_name(patchname) - if not os.path.isfile(self.join(patchname)): - raise util.Abort(_("patch %s does not exist") % patchname) + filename = normname(filename) + self.check_reserved_name(filename) + originpath = self.join(filename) + if not os.path.isfile(originpath): + raise util.Abort(_("patch %s does not exist") % filename) + + if patchname: + self.check_reserved_name(patchname) + checkfile(patchname) + + self.ui.write(_('renaming %s to %s\n') + % (filename, patchname)) + util.rename(originpath, self.join(patchname)) + else: + patchname = filename + else: try: if filename == '-': @@ -1810,6 +1822,10 @@ To import a patch from standard input, pass - as the patch file. When importing from standard input, a patch name must be specified using the --name flag. + + To import an existing patch while renaming it:: + + hg qimport -e existing-patch -n new-name """ q = repo.mq try: @@ -1919,7 +1935,7 @@ if qbase: ui.note(_('stripping applied patches from destination ' 'repository\n')) - dr.mq.strip(dr, qbase, update=False, backup=None) + dr.mq.strip(dr, [qbase], update=False, backup=None) if not opts['noupdate']: ui.note(_('updating destination repository\n')) hg.update(dr, dr.changelog.tip()) @@ -2003,7 +2019,7 @@ """ msg = cmdutil.logmessage(opts) def getmsg(): - return ui.edit(msg, ui.username()) + return ui.edit(msg, opts['user'] or ui.username()) q = repo.mq opts['msg'] = msg if opts.get('edit'): @@ -2156,7 +2172,15 @@ ''' def status(idx): guards = q.series_guards[idx] or ['unguarded'] - ui.write('%s: ' % ui.label(q.series[idx], 'qguard.patch')) + if q.series[idx] in applied: + state = 'applied' + elif q.pushable(idx)[0]: + state = 'unapplied' + else: + state = 'guarded' + label = 'qguard.patch qguard.%s qseries.%s' % (state, state) + ui.write('%s: ' % ui.label(q.series[idx], label)) + for i, guard in enumerate(guards): if guard.startswith('+'): ui.write(guard, label='qguard.positive') @@ -2168,6 +2192,7 @@ ui.write(' ') ui.write('\n') q = repo.mq + applied = set(p.name for p in q.applied) patch = None args = list(args) if opts['list']: @@ -2381,14 +2406,12 @@ pass return 0 -def strip(ui, repo, rev, **opts): - """strip a changeset and all its descendants from the repository - - The strip command removes all changesets whose local revision - number is greater than or equal to REV, and then restores any - changesets that are not descendants of REV. If the working - directory has uncommitted changes, the operation is aborted unless - the --force flag is supplied. +def strip(ui, repo, *revs, **opts): + """strip changesets and all their descendants from the repository + + The strip command removes the specified changesets and all their + descendants. If the working directory has uncommitted changes, + the operation is aborted unless the --force flag is supplied. If a parent of the working directory is stripped, then the working directory will automatically be updated to the most recent @@ -2411,30 +2434,42 @@ elif opts['nobackup']: backup = 'none' - rev = repo.lookup(rev) - p = repo.dirstate.parents() cl = repo.changelog - update = True - if p[0] == nullid: - update = False - elif p[1] == nullid and rev != cl.ancestor(p[0], rev): - update = False - elif rev not in (cl.ancestor(p[0], rev), cl.ancestor(p[1], rev)): - update = False + revs = set(cl.rev(repo.lookup(r)) for r in revs) + + descendants = set(cl.descendants(*revs)) + strippedrevs = revs.union(descendants) + roots = revs.difference(descendants) + + update = False + # if one of the wdir parent is stripped we'll need + # to update away to an earlier revision + for p in repo.dirstate.parents(): + if p != nullid and cl.rev(p) in strippedrevs: + update = True + break + + rootnodes = set(cl.node(r) for r in roots) q = repo.mq if q.applied: - if rev == cl.ancestor(repo.lookup('qtip'), rev): + # refresh queue state if we're about to strip + # applied patches + if cl.rev(repo.lookup('qtip')) in strippedrevs: q.applied_dirty = True start = 0 end = len(q.applied) - applied_list = [i.node for i in q.applied] - if rev in applied_list: - start = applied_list.index(rev) + for i, statusentry in enumerate(q.applied): + if statusentry.node in rootnodes: + # if one of the stripped roots is an applied + # patch, only part of the queue is stripped + start = i + break del q.applied[start:end] q.save_dirty() - repo.mq.strip(repo, rev, backup=backup, update=update, force=opts['force']) + repo.mq.strip(repo, list(rootnodes), backup=backup, update=update, + force=opts['force']) return 0 def select(ui, repo, *args, **opts): @@ -2559,7 +2594,7 @@ if not opts['applied'] and not revrange: raise util.Abort(_('no revisions specified')) elif opts['applied']: - revrange = ('qbase:qtip',) + revrange + revrange = ('qbase::qtip',) + revrange q = repo.mq if not q.applied: @@ -2648,7 +2683,7 @@ current = _getcurrent() for queue in _getqueues(): ui.write('%s' % (queue,)) - if queue == current: + if queue == current and not ui.quiet: ui.write(_(' (active)\n')) else: ui.write('\n') @@ -2993,7 +3028,7 @@ ' number greater than REV which are not' ' descendants of REV (DEPRECATED)')), ('n', 'nobackup', None, _('no backups'))], - _('hg strip [-f] [-n] REV')), + _('hg strip [-f] [-n] REV...')), "qtop": (top, [] + seriesopts, _('hg qtop [-s]')), "qunapplied": (unapplied, diff -r 53fdc0989047 -r b9d316bcc013 hgext/rebase.py --- a/hgext/rebase.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/rebase.py Fri Aug 13 10:28:59 2010 +0200 @@ -148,9 +148,14 @@ targetancestors = set(repo.changelog.ancestors(target)) targetancestors.add(target) - for rev in sorted(state): + sortedstate = sorted(state) + total = len(sortedstate) + pos = 0 + for rev in sortedstate: + pos += 1 if state[rev] == -1: - ui.debug("rebasing %d:%s\n" % (rev, repo[rev])) + ui.progress(_("rebasing"), pos, ("%d:%s" % (rev, repo[rev])), + _(' changesets'), total) storestatus(repo, originalwd, target, state, collapsef, keepf, keepbranchesf, external) p1, p2 = defineparents(repo, rev, target, state, @@ -179,6 +184,7 @@ skipped.add(rev) state[rev] = p1 + ui.progress(_('rebasing'), None) ui.note(_('rebase merging completed\n')) if collapsef and not keepopen: diff -r 53fdc0989047 -r b9d316bcc013 hgext/record.py --- a/hgext/record.py Thu Aug 12 22:48:22 2010 +0200 +++ b/hgext/record.py Fri Aug 13 10:28:59 2010 +0200 @@ -10,7 +10,7 @@ from mercurial.i18n import gettext, _ from mercurial import cmdutil, commands, extensions, hg, mdiff, patch from mercurial import util -import copy, cStringIO, errno, operator, os, re, tempfile +import copy, cStringIO, errno, os, re, tempfile lines_re = re.compile(r'@@ -(\d+),(\d+) \+(\d+),(\d+) @@\s*(.*)') @@ -97,7 +97,7 @@ if h.startswith('---'): fp.write(_('%d hunks, %d lines changed\n') % (len(self.hunks), - sum([h.added + h.removed for h in self.hunks]))) + sum([max(h.added, h.removed) for h in self.hunks]))) break fp.write(h) @@ -186,7 +186,8 @@ self.hunk = [] self.stream = [] - def addrange(self, (fromstart, fromend, tostart, toend, proc)): + def addrange(self, limits): + fromstart, fromend, tostart, toend, proc = limits self.fromline = int(fromstart) self.toline = int(tostart) self.proc = proc @@ -354,8 +355,8 @@ applied[chunk.filename()].append(chunk) else: fixoffset += chunk.removed - chunk.added - return reduce(operator.add, [h for h in applied.itervalues() - if h[0].special() or len(h) > 1], []) + return sum([h for h in applied.itervalues() + if h[0].special() or len(h) > 1], []) def record(ui, repo, *pats, **opts): '''interactively select changes to commit @@ -485,7 +486,8 @@ # 3a. apply filtered patch to clean repo (clean) if backups: - hg.revert(repo, repo.dirstate.parents()[0], backups.has_key) + hg.revert(repo, repo.dirstate.parents()[0], + lambda key: key in backups) # 3b. (apply) if dopatch: diff -r 53fdc0989047 -r b9d316bcc013 i18n/ro.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/i18n/ro.po Fri Aug 13 10:28:59 2010 +0200 @@ -0,0 +1,12277 @@ +# Romanian translation for Mercurial +# Traducerea în limba română pentru Mercurial +# +# Copyright (C) 2010 Matt Mackall and others +# +# +# Glosar de traduceri +# =================== +# abort a întrerupe, a renunța +# branch ramură +# bundle pachet (fascicul), a crea un pachet +# change modificare +# changeset set de modificări +# changegroup grup de modificări +# check out a actualiza, a extrage, checkout +# commit depozitare, predare, încredințare, commit +# commit (v) a depozita, a preda, a încredința, commit +# consistency consistență (termen informatic; sens general: coerență) +# deprecated învechit +# discard a înlătura, a renunța la +# head capăt +# hook hook, acțiune, ancoră +# merge a fuziona (a contopi, a îmbina) +# notation notație +# remove a elimina +# repository depozit (magazie) +# resolve a determina [[a rezolva]] +# manage a gestiona +# manifest manifest (și în română, ca "declarație/listă de mărfuri") +# pull (pull), a aduce, a trage, a extrage, +# push (push), a duce, a împinge, a difuza, a distribui +# retrieve a recupera, a regăsi +# switch a comuta +# tag etichetă / a eticheta +# tip vârf +# track a urmări +# update a actualiza +# +# +# NOTĂ: - Terminologia de mai sus este departe de a fi completă sau perfectă. +# De completat și ameliorat +# - Primul termen este cel considerat momentan cel mai potrivit. +# - Măcar pentru primele versiuni, se recomandă păstrarea în paranteze +# a termenului englezesc, mai ales în cazul comenzilor. +# +# Câteva reguli: +# - în ajutorul pentru o comandă, primul rând începe cu un verb +# la prezent fără majusculă +# - în ajutorul pentru o comandă, descrierea opțiunilor se face +# printr-un verb la prezent, pers. a 3-a singular +# +# Dicționar de termeni curenți: +# - a patch queue/stack o stivă de patch-uri (mq) +# - the patch series seria/suita (completă) de patch-uri +# - rejects respingeri, rejectări +# - to revert a reveni +# - the topmost patch ultimul patch aplicat +# - an unrelated repository un depozit neînrudit +# - unversioned neversionat +# unmanaged negestionat +# untracked neurmărit +# - the working directory directorul de lucru +# +# Termeni de păstrat din engleză: +# - a diff un diff +# - a hook un hook +# - a patch un patch +# +# Daniel Dumitriu , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Mercurial\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-08-05 16:06+0200\n" +"PO-Revision-Date: 2010-08-05 15:49+0200\n" +"Last-Translator: Daniel Dumitriu \n" +"Language-Team: Romanian <>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > " +"0 && n%100 < 20)) ? 1 : 2;\n" +"X-Generator: Lokalize 1.0\n" + +#, python-format +msgid " (default: %s)" +msgstr "(implicit: %s)" + +msgid "Options" +msgstr "Opțiuni" + +msgid "Commands" +msgstr "Comenzi" + +msgid " options:" +msgstr " opțiuni:" + +#, python-format +msgid " aliases: %s" +msgstr " alias: %s" + +msgid "hooks for controlling repository access" +msgstr "hook-uri pentru controlul accesului la depozit" + +msgid "" +"This hook makes it possible to allow or deny write access to given\n" +"branches and paths of a repository when receiving incoming changesets\n" +"via pretxnchangegroup and pretxncommit." +msgstr "" +"Acest hook realizează permiterea sau interzicerea accesului\n" +"în scriere la anumite ramuri și căi ale unui depozit, atunci când \n" +"se primesc seturi de modificări prin pretxnchangegroup și pretxncommit." + +msgid "" +"The authorization is matched based on the local user name on the\n" +"system where the hook runs, and not the committer of the original\n" +"changeset (since the latter is merely informative)." +msgstr "" +"Autorizația este căutată pe baza numelui de utilizator local\n" +"de pe sistemul unde rulează hook-ul, nu pe baza numelui celui care a\n" +"publicat setul de modificări original (pentru că acesta e pur informativ)." + +msgid "" +"The acl hook is best used along with a restricted shell like hgsh,\n" +"preventing authenticating users from doing anything other than pushing\n" +"or pulling. The hook is not safe to use if users have interactive\n" +"shell access, as they can then disable the hook. Nor is it safe if\n" +"remote users share an account, because then there is no way to\n" +"distinguish them." +msgstr "" +"Hook-ul acl e folosit optim împreună cu un shell restrictiv precum\n" +"hgsh, care împiedică utilizatorii care doresc să se autentifice să aibă " +"alte\n" +"acțiuni în afară de push și pull. Hook-ul nu prezintă siguranță dacă\n" +"utilizatorii au acces la shell interactiv, deoarece astfel ei pot dezactiva\n" +"hook-ul. De asemenea, nu prezintă siguranță situația în care utilizatorii\n" +"de la distanță partajează un cont, deoarece nu există posibilitatea de\n" +"a-i distinge." + +msgid "The order in which access checks are performed is:" +msgstr "Ordinea în care se fac verificările de acces este:" + +msgid "" +"1) Deny list for branches (section ``acl.deny.branches``)\n" +"2) Allow list for branches (section ``acl.allow.branches``)\n" +"3) Deny list for paths (section ``acl.deny``)\n" +"4) Allow list for paths (section ``acl.allow``)" +msgstr "" +"1) Lista cu interdicții pentru ramuri (secțiunea ``acl.deny.branches``)\n" +"2) Lista cu permisiuni pentru ramuri (secțiunea ``acl.allow.branches``)\n" +"3) Lista cu interdicții pentru căi (secțiunea ``acl.deny``)\n" +"4) Lista cu permisiuni pentru căi (secțiunea ``acl.allow``)" + +msgid "The allow and deny sections take key-value pairs." +msgstr "Secțiunile cu permisiuni și interdicții conțin perechi cheie-valoare." + +msgid "" +"Branch-based Access Control\n" +"---------------------------" +msgstr "" +"Controlul accesului pe bază de ramură\n" +"-------------------------------------" + +msgid "" +"Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n" +"have branch-based access control. Keys in these sections can be\n" +"either:" +msgstr "" +"Utilizați secțiunile ``acl.deny.branches`` și ``acl.allow.branches``\n" +"pentru a avea controlul accesului pe baza ramurii. În aceste secțiuni,\n" +"cheile pot fi:" + +msgid "" +"- a branch name, or\n" +"- an asterisk, to match any branch;" +msgstr "" +"- un nume de ramură, sau\n" +"- un asterisc, însemnând orice ramură;" + +msgid "The corresponding values can be either:" +msgstr "Valorile corespunzatoare pot fi:" + +msgid "" +"- a comma-separated list containing users and groups, or\n" +"- an asterisk, to match anyone;" +msgstr "" +"- o listă separată prin virgule conținând utilizatori și grupuri, sau\n" +"- un asterisc, însemnând oricine;" + +msgid "" +"Path-based Access Control\n" +"-------------------------" +msgstr "" + +msgid "" +"Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n" +"access control. Keys in these sections accept a subtree pattern (with\n" +"a glob syntax by default). The corresponding values follow the same\n" +"syntax as the other sections above." +msgstr "" + +msgid "" +"Groups\n" +"------" +msgstr "" + +msgid "" +"Group names must be prefixed with an ``@`` symbol. Specifying a group\n" +"name has the same effect as specifying all the users in that group." +msgstr "" + +msgid "" +"You can define group members in the ``acl.groups`` section.\n" +"If a group name is not defined there, and Mercurial is running under\n" +"a Unix-like system, the list of users will be taken from the OS.\n" +"Otherwise, an exception will be raised." +msgstr "" + +msgid "" +"Example Configuration\n" +"---------------------" +msgstr "" + +msgid "::" +msgstr "" + +msgid " [hooks]" +msgstr "" + +msgid "" +" # Use this if you want to check access restrictions at commit time\n" +" pretxncommit.acl = python:hgext.acl.hook" +msgstr "" + +msgid "" +" # Use this if you want to check access restrictions for pull, push,\n" +" # bundle and serve.\n" +" pretxnchangegroup.acl = python:hgext.acl.hook" +msgstr "" + +msgid "" +" [acl]\n" +" # Allow or deny access for incoming changes only if their source is\n" +" # listed here, let them pass otherwise. Source is \"serve\" for all\n" +" # remote access (http or ssh), \"push\", \"pull\" or \"bundle\" when the\n" +" # related commands are run locally.\n" +" # Default: serve\n" +" sources = serve" +msgstr "" + +msgid " [acl.deny.branches]" +msgstr "" + +msgid "" +" # Everyone is denied to the frozen branch:\n" +" frozen-branch = *" +msgstr "" + +msgid "" +" # A bad user is denied on all branches:\n" +" * = bad-user" +msgstr "" + +msgid " [acl.allow.branches]" +msgstr "" + +msgid "" +" # A few users are allowed on branch-a:\n" +" branch-a = user-1, user-2, user-3" +msgstr "" + +msgid "" +" # Only one user is allowed on branch-b:\n" +" branch-b = user-1" +msgstr "" + +msgid "" +" # The super user is allowed on any branch:\n" +" * = super-user" +msgstr "" + +msgid "" +" # Everyone is allowed on branch-for-tests:\n" +" branch-for-tests = *" +msgstr "" + +msgid "" +" [acl.deny]\n" +" # This list is checked first. If a match is found, acl.allow is not\n" +" # checked. All users are granted access if acl.deny is not present.\n" +" # Format for both lists: glob pattern = user, ..., @group, ..." +msgstr "" + +msgid "" +" # To match everyone, use an asterisk for the user:\n" +" # my/glob/pattern = *" +msgstr "" + +msgid "" +" # user6 will not have write access to any file:\n" +" ** = user6" +msgstr "" + +msgid "" +" # Group \"hg-denied\" will not have write access to any file:\n" +" ** = @hg-denied" +msgstr "" + +msgid "" +" # Nobody will be able to change \"DONT-TOUCH-THIS.txt\", despite\n" +" # everyone being able to change all other files. See below.\n" +" src/main/resources/DONT-TOUCH-THIS.txt = *" +msgstr "" + +msgid "" +" [acl.allow]\n" +" # if acl.allow is not present, all users are allowed by default\n" +" # empty acl.allow = no users allowed" +msgstr "" + +msgid "" +" # User \"doc_writer\" has write access to any file under the \"docs\"\n" +" # folder:\n" +" docs/** = doc_writer" +msgstr "" + +msgid "" +" # User \"jack\" and group \"designers\" have write access to any file\n" +" # under the \"images\" folder:\n" +" images/** = jack, @designers" +msgstr "" + +msgid "" +" # Everyone (except for \"user6\" - see acl.deny above) will have write\n" +" # access to any file under the \"resources\" folder (except for 1\n" +" # file. See acl.deny):\n" +" src/main/resources/** = *" +msgstr "" + +msgid " .hgtags = release_engineer" +msgstr "" + +#, python-format +msgid "group '%s' is undefined" +msgstr "" + +#, python-format +msgid "" +"config error - hook type \"%s\" cannot stop incoming changesets nor commits" +msgstr "" + +#, python-format +msgid "acl: user \"%s\" denied on branch \"%s\" (changeset \"%s\")" +msgstr "" + +#, python-format +msgid "acl: user \"%s\" not allowed on branch \"%s\" (changeset \"%s\")" +msgstr "" + +#, python-format +msgid "acl: access denied for changeset %s" +msgstr "" + +msgid "track a line of development with movable markers" +msgstr "" + +msgid "" +"Bookmarks are local movable markers to changesets. Every bookmark\n" +"points to a changeset identified by its hash. If you commit a\n" +"changeset that is based on a changeset that has a bookmark on it, the\n" +"bookmark shifts to the new changeset." +msgstr "" + +msgid "" +"It is possible to use bookmark names in every revision lookup (e.g.\n" +":hg:`merge`, :hg:`update`)." +msgstr "" + +msgid "" +"By default, when several bookmarks point to the same changeset, they\n" +"will all move forward together. It is possible to obtain a more\n" +"git-like experience by adding the following configuration option to\n" +"your .hgrc::" +msgstr "" + +msgid "" +" [bookmarks]\n" +" track.current = True" +msgstr "" + +msgid "" +"This will cause Mercurial to track the bookmark that you are currently\n" +"using, and only update it. This is similar to git's approach to\n" +"branching.\n" +msgstr "" + +msgid "" +" Bookmarks are pointers to certain commits that move when\n" +" committing. Bookmarks are local. They can be renamed, copied and\n" +" deleted. It is possible to use bookmark names in :hg:`merge` and\n" +" :hg:`update` to merge and update respectively to a given bookmark." +msgstr "" + +msgid "" +" You can use :hg:`bookmark NAME` to set a bookmark on the working\n" +" directory's parent revision with the given name. If you specify\n" +" a revision using -r REV (where REV may be an existing bookmark),\n" +" the bookmark is assigned to that revision.\n" +" " +msgstr "" + +msgid "a bookmark of this name does not exist" +msgstr "" + +msgid "a bookmark of the same name already exists" +msgstr "" + +msgid "new bookmark name required" +msgstr "" + +msgid "bookmark name required" +msgstr "" + +msgid "bookmark name cannot contain newlines" +msgstr "" + +msgid "bookmark names cannot consist entirely of whitespace" +msgstr "" + +msgid "a bookmark cannot have the name of an existing branch" +msgstr "" + +msgid "no bookmarks set\n" +msgstr "" + +#, python-format +msgid "updating bookmark %s\n" +msgstr "" + +#, python-format +msgid "not updating divergent bookmark %s\n" +msgstr "" + +#, python-format +msgid "updating bookmark %s failed!\n" +msgstr "" + +#, python-format +msgid "remote bookmark %s not found!" +msgstr "" + +#, python-format +msgid "importing bookmark %s\n" +msgstr "" + +#, python-format +msgid "exporting bookmark %s\n" +msgstr "" + +#, python-format +msgid "deleting remote bookmark %s\n" +msgstr "" + +msgid "searching for changes\n" +msgstr "se caută modificări\n" + +msgid "no changes found\n" +msgstr "" + +#, python-format +msgid "comparing with %s\n" +msgstr "" + +msgid "bookmark to import" +msgstr "" + +msgid "bookmark to export" +msgstr "" + +msgid "compare bookmark" +msgstr "" + +msgid "force" +msgstr "" + +msgid "REV" +msgstr "REV" + +msgid "revision" +msgstr "revizia" + +msgid "delete a given bookmark" +msgstr "" + +msgid "NAME" +msgstr "NUME" + +msgid "rename a given bookmark" +msgstr "" + +msgid "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]" +msgstr "" + +msgid "hooks for integrating with the Bugzilla bug tracker" +msgstr "" + +msgid "" +"This hook extension adds comments on bugs in Bugzilla when changesets\n" +"that refer to bugs by Bugzilla ID are seen. The hook does not change\n" +"bug status." +msgstr "" + +msgid "" +"The hook updates the Bugzilla database directly. Only Bugzilla\n" +"installations using MySQL are supported." +msgstr "" + +msgid "" +"The hook relies on a Bugzilla script to send bug change notification\n" +"emails. That script changes between Bugzilla versions; the\n" +"'processmail' script used prior to 2.18 is replaced in 2.18 and\n" +"subsequent versions by 'config/sendbugmail.pl'. Note that these will\n" +"be run by Mercurial as the user pushing the change; you will need to\n" +"ensure the Bugzilla install file permissions are set appropriately." +msgstr "" + +msgid "" +"The extension is configured through three different configuration\n" +"sections. These keys are recognized in the [bugzilla] section:" +msgstr "" + +msgid "" +"host\n" +" Hostname of the MySQL server holding the Bugzilla database." +msgstr "" + +msgid "" +"db\n" +" Name of the Bugzilla database in MySQL. Default 'bugs'." +msgstr "" + +msgid "" +"user\n" +" Username to use to access MySQL server. Default 'bugs'." +msgstr "" + +msgid "" +"password\n" +" Password to use to access MySQL server." +msgstr "" + +msgid "" +"timeout\n" +" Database connection timeout (seconds). Default 5." +msgstr "" + +msgid "" +"version\n" +" Bugzilla version. Specify '3.0' for Bugzilla versions 3.0 and later,\n" +" '2.18' for Bugzilla versions from 2.18 and '2.16' for versions prior\n" +" to 2.18." +msgstr "" + +msgid "" +"bzuser\n" +" Fallback Bugzilla user name to record comments with, if changeset\n" +" committer cannot be found as a Bugzilla user." +msgstr "" + +msgid "" +"bzdir\n" +" Bugzilla install directory. Used by default notify. Default\n" +" '/var/www/html/bugzilla'." +msgstr "" + +msgid "" +"notify\n" +" The command to run to get Bugzilla to send bug change notification\n" +" emails. Substitutes from a map with 3 keys, 'bzdir', 'id' (bug id)\n" +" and 'user' (committer bugzilla email). Default depends on version;\n" +" from 2.18 it is \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl\n" +" %(id)s %(user)s\"." +msgstr "" + +msgid "" +"regexp\n" +" Regular expression to match bug IDs in changeset commit message.\n" +" Must contain one \"()\" group. The default expression matches 'Bug\n" +" 1234', 'Bug no. 1234', 'Bug number 1234', 'Bugs 1234,5678', 'Bug\n" +" 1234 and 5678' and variations thereof. Matching is case insensitive." +msgstr "" + +msgid "" +"style\n" +" The style file to use when formatting comments." +msgstr "" + +msgid "" +"template\n" +" Template to use when formatting comments. Overrides style if\n" +" specified. In addition to the usual Mercurial keywords, the\n" +" extension specifies::" +msgstr "" + +msgid "" +" {bug} The Bugzilla bug ID.\n" +" {root} The full pathname of the Mercurial repository.\n" +" {webroot} Stripped pathname of the Mercurial repository.\n" +" {hgweb} Base URL for browsing Mercurial repositories." +msgstr "" + +msgid "" +" Default 'changeset {node|short} in repo {root} refers '\n" +" 'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'" +msgstr "" + +msgid "" +"strip\n" +" The number of slashes to strip from the front of {root} to produce\n" +" {webroot}. Default 0." +msgstr "" + +msgid "" +"usermap\n" +" Path of file containing Mercurial committer ID to Bugzilla user ID\n" +" mappings. If specified, the file should contain one mapping per\n" +" line, \"committer\"=\"Bugzilla user\". See also the [usermap] section." +msgstr "" + +msgid "" +"The [usermap] section is used to specify mappings of Mercurial\n" +"committer ID to Bugzilla user ID. See also [bugzilla].usermap.\n" +"\"committer\"=\"Bugzilla user\"" +msgstr "" + +msgid "Finally, the [web] section supports one entry:" +msgstr "" + +msgid "" +"baseurl\n" +" Base URL for browsing Mercurial repositories. Reference from\n" +" templates as {hgweb}." +msgstr "" + +msgid "Activating the extension::" +msgstr "" + +msgid "" +" [extensions]\n" +" bugzilla =" +msgstr "" + +msgid "" +" [hooks]\n" +" # run bugzilla hook on every change pulled or pushed in here\n" +" incoming.bugzilla = python:hgext.bugzilla.hook" +msgstr "" + +msgid "Example configuration:" +msgstr "" + +msgid "" +"This example configuration is for a collection of Mercurial\n" +"repositories in /var/local/hg/repos/ used with a local Bugzilla 3.2\n" +"installation in /opt/bugzilla-3.2. ::" +msgstr "" + +msgid "" +" [bugzilla]\n" +" host=localhost\n" +" password=XYZZY\n" +" version=3.0\n" +" bzuser=unknown@domain.com\n" +" bzdir=/opt/bugzilla-3.2\n" +" template=Changeset {node|short} in {root|basename}.\n" +" {hgweb}/{webroot}/rev/{node|short}\\n\n" +" {desc}\\n\n" +" strip=5" +msgstr "" + +msgid "" +" [web]\n" +" baseurl=http://dev.domain.com/hg" +msgstr "" + +msgid "" +" [usermap]\n" +" user@emaildomain.com=user.name@bugzilladomain.com" +msgstr "" + +msgid "Commits add a comment to the Bugzilla bug record of the form::" +msgstr "" + +msgid "" +" Changeset 3b16791d6642 in repository-name.\n" +" http://dev.domain.com/hg/repository-name/rev/3b16791d6642" +msgstr "" + +msgid " Changeset commit comment. Bug 1234.\n" +msgstr "" + +#, python-format +msgid "connecting to %s:%s as %s, password %s\n" +msgstr "" + +#, python-format +msgid "query: %s %s\n" +msgstr "" + +#, python-format +msgid "failed query: %s %s\n" +msgstr "" + +msgid "unknown database schema" +msgstr "" + +#, python-format +msgid "bug %d already knows about changeset %s\n" +msgstr "" + +msgid "telling bugzilla to send mail:\n" +msgstr "" + +#, python-format +msgid " bug %s\n" +msgstr "" + +#, python-format +msgid "running notify command %s\n" +msgstr "" + +#, python-format +msgid "bugzilla notify command %s" +msgstr "" + +msgid "done\n" +msgstr "" + +#, python-format +msgid "looking up user %s\n" +msgstr "" + +#, python-format +msgid "cannot find bugzilla user id for %s" +msgstr "" + +#, python-format +msgid "cannot find bugzilla user id for %s or %s" +msgstr "" + +#, python-format +msgid "bugzilla version %s not supported" +msgstr "" + +msgid "" +"changeset {node|short} in repo {root} refers to bug {bug}.\n" +"details:\n" +"\t{desc|tabindent}" +msgstr "" + +#, python-format +msgid "python mysql support not available: %s" +msgstr "" + +#, python-format +msgid "hook type %s does not pass a changeset id" +msgstr "" + +#, python-format +msgid "database error: %s" +msgstr "" + +msgid "command to display child changesets" +msgstr "" + +msgid "show the children of the given or working directory revision" +msgstr "" + +msgid "" +" Print the children of the working directory's revisions. If a\n" +" revision is given via -r/--rev, the children of that revision will\n" +" be printed. If a file argument is given, revision in which the\n" +" file was last changed (after the working directory revision or the\n" +" argument to --rev if given) is printed.\n" +" " +msgstr "" + +msgid "show children of the specified revision" +msgstr "" + +msgid "hg children [-r REV] [FILE]" +msgstr "" + +msgid "command to display statistics about repository history" +msgstr "" + +#, python-format +msgid "Revision %d is a merge, ignoring...\n" +msgstr "" + +msgid "analyzing" +msgstr "" + +msgid "histogram of changes to the repository" +msgstr "" + +msgid "" +" This command will display a histogram representing the number\n" +" of changed lines or revisions, grouped according to the given\n" +" template. The default template will group changes by author.\n" +" The --dateformat option may be used to group the results by\n" +" date instead." +msgstr "" + +msgid "" +" Statistics are based on the number of changed lines, or\n" +" alternatively the number of matching revisions if the\n" +" --changesets option is specified." +msgstr "" + +msgid " Examples::" +msgstr "" + +msgid "" +" # display count of changed lines for every committer\n" +" hg churn -t '{author|email}'" +msgstr "" + +msgid "" +" # display daily activity graph\n" +" hg churn -f '%H' -s -c" +msgstr "" + +msgid "" +" # display activity of developers by month\n" +" hg churn -f '%Y-%m' -s -c" +msgstr "" + +msgid "" +" # display count of lines changed in every year\n" +" hg churn -f '%Y' -s" +msgstr "" + +msgid "" +" It is possible to map alternate email addresses to a main address\n" +" by providing a file using the following format::" +msgstr "" + +msgid " = " +msgstr " = " + +msgid "" +" Such a file may be specified with the --aliases option, otherwise\n" +" a .hgchurn file will be looked for in the working directory root.\n" +" " +msgstr "" + +msgid "count rate for the specified revision or range" +msgstr "" + +msgid "DATE" +msgstr "" + +msgid "count rate for revisions matching date spec" +msgstr "" + +msgid "TEMPLATE" +msgstr "" + +msgid "template to group changesets" +msgstr "" + +msgid "FORMAT" +msgstr "" + +msgid "strftime-compatible format for grouping by date" +msgstr "" + +msgid "count rate by number of changesets" +msgstr "" + +msgid "sort by key (default: sort by count)" +msgstr "" + +msgid "display added/removed lines separately" +msgstr "" + +msgid "FILE" +msgstr "" + +msgid "file with email aliases" +msgstr "" + +msgid "hg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]" +msgstr "" + +msgid "colorize output from some commands" +msgstr "" + +msgid "" +"This extension modifies the status and resolve commands to add color to " +"their\n" +"output to reflect file status, the qseries command to add color to reflect\n" +"patch status (applied, unapplied, missing), and to diff-related\n" +"commands to highlight additions, removals, diff headers, and trailing\n" +"whitespace." +msgstr "" + +msgid "" +"Other effects in addition to color, like bold and underlined text, are\n" +"also available. Effects are rendered with the ECMA-48 SGR control\n" +"function (aka ANSI escape codes). This module also provides the\n" +"render_text function, which can be used to add effects to any text." +msgstr "" + +msgid "Default effects may be overridden from the .hgrc file::" +msgstr "" + +msgid "" +" [color]\n" +" status.modified = blue bold underline red_background\n" +" status.added = green bold\n" +" status.removed = red bold blue_background\n" +" status.deleted = cyan bold underline\n" +" status.unknown = magenta bold underline\n" +" status.ignored = black bold" +msgstr "" + +msgid "" +" # 'none' turns off all effects\n" +" status.clean = none\n" +" status.copied = none" +msgstr "" + +msgid "" +" qseries.applied = blue bold underline\n" +" qseries.unapplied = black bold\n" +" qseries.missing = red bold" +msgstr "" + +msgid "" +" diff.diffline = bold\n" +" diff.extended = cyan bold\n" +" diff.file_a = red bold\n" +" diff.file_b = green bold\n" +" diff.hunk = magenta\n" +" diff.deleted = red\n" +" diff.inserted = green\n" +" diff.changed = white\n" +" diff.trailingwhitespace = bold red_background" +msgstr "" + +msgid "" +" resolve.unresolved = red bold\n" +" resolve.resolved = green bold" +msgstr "" + +msgid " bookmarks.current = green" +msgstr "" + +msgid "" +"The color extension will try to detect whether to use ANSI codes or\n" +"Win32 console APIs, unless it is made explicit::" +msgstr "" + +msgid "" +" [color]\n" +" mode = ansi" +msgstr "" + +msgid "Any value other than 'ansi', 'win32', or 'auto' will disable color." +msgstr "" + +#, python-format +msgid "ignoring unknown color/effect %r (configured in color.%s)\n" +msgstr "" + +msgid "win32console not found, please install pywin32\n" +msgstr "" + +msgid "when to colorize (always, auto, or never)" +msgstr "când să se coloreze (întotdeauna, auto, sau niciodată)" + +msgid "TYPE" +msgstr "" + +msgid "import revisions from foreign VCS repositories into Mercurial" +msgstr "" + +msgid "convert a foreign SCM repository to a Mercurial one." +msgstr "" + +msgid " Accepted source formats [identifiers]:" +msgstr "" + +msgid "" +" - Mercurial [hg]\n" +" - CVS [cvs]\n" +" - Darcs [darcs]\n" +" - git [git]\n" +" - Subversion [svn]\n" +" - Monotone [mtn]\n" +" - GNU Arch [gnuarch]\n" +" - Bazaar [bzr]\n" +" - Perforce [p4]" +msgstr "" + +msgid " Accepted destination formats [identifiers]:" +msgstr "" + +msgid "" +" - Mercurial [hg]\n" +" - Subversion [svn] (history on branches is not preserved)" +msgstr "" + +msgid "" +" If no revision is given, all revisions will be converted.\n" +" Otherwise, convert will only import up to the named revision\n" +" (given in a format understood by the source)." +msgstr "" + +msgid "" +" If no destination directory name is specified, it defaults to the\n" +" basename of the source with '-hg' appended. If the destination\n" +" repository doesn't exist, it will be created." +msgstr "" + +msgid "" +" By default, all sources except Mercurial will use --branchsort.\n" +" Mercurial uses --sourcesort to preserve original revision numbers\n" +" order. Sort modes have the following effects:" +msgstr "" + +msgid "" +" --branchsort convert from parent to child revision when possible,\n" +" which means branches are usually converted one after\n" +" the other. It generates more compact repositories." +msgstr "" + +msgid "" +" --datesort sort revisions by date. Converted repositories have\n" +" good-looking changelogs but are often an order of\n" +" magnitude larger than the same ones generated by\n" +" --branchsort." +msgstr "" + +msgid "" +" --sourcesort try to preserve source revisions order, only\n" +" supported by Mercurial sources." +msgstr "" + +msgid "" +" If isn't given, it will be put in a default location\n" +" (/.hg/shamap by default). The is a simple text file\n" +" that maps each source commit ID to the destination ID for that\n" +" revision, like so::" +msgstr "" + +msgid " " +msgstr "" + +msgid "" +" If the file doesn't exist, it's automatically created. It's\n" +" updated on each commit copied, so convert-repo can be interrupted\n" +" and can be run repeatedly to copy new commits." +msgstr "" + +msgid "" +" The [username mapping] file is a simple text file that maps each\n" +" source commit author to a destination commit author. It is handy\n" +" for source SCMs that use unix logins to identify authors (eg:\n" +" CVS). One line per author mapping and the line format is:\n" +" srcauthor=whatever string you want" +msgstr "" + +msgid "" +" The filemap is a file that allows filtering and remapping of files\n" +" and directories. Each line can contain one of the following\n" +" directives::" +msgstr "" + +msgid " include path/to/file-or-dir" +msgstr "" + +msgid " exclude path/to/file-or-dir" +msgstr "" + +msgid " rename path/to/source path/to/destination" +msgstr "" + +msgid "" +" Comment lines start with '#'. A specified path matches if it\n" +" equals the full relative name of a file or one of its parent\n" +" directories. The 'include' or 'exclude' directive with the longest\n" +" matching path applies, so line order does not matter." +msgstr "" + +msgid "" +" The 'include' directive causes a file, or all files under a\n" +" directory, to be included in the destination repository, and the\n" +" exclusion of all other files and directories not explicitly\n" +" included. The 'exclude' directive causes files or directories to\n" +" be omitted. The 'rename' directive renames a file or directory if\n" +" it is converted. To rename from a subdirectory into the root of\n" +" the repository, use '.' as the path to rename to." +msgstr "" + +msgid "" +" The splicemap is a file that allows insertion of synthetic\n" +" history, letting you specify the parents of a revision. This is\n" +" useful if you want to e.g. give a Subversion merge two parents, or\n" +" graft two disconnected series of history together. Each entry\n" +" contains a key, followed by a space, followed by one or two\n" +" comma-separated values. The key is the revision ID in the source\n" +" revision control system whose parents should be modified (same\n" +" format as a key in .hg/shamap). The values are the revision IDs\n" +" (in either the source or destination revision control system) that\n" +" should be used as the new parents for that node. For example, if\n" +" you have merged \"release-1.0\" into \"trunk\", then you should\n" +" specify the revision on \"trunk\" as the first parent and the one on\n" +" the \"release-1.0\" branch as the second." +msgstr "" + +msgid "" +" The branchmap is a file that allows you to rename a branch when it is\n" +" being brought in from whatever external repository. When used in\n" +" conjunction with a splicemap, it allows for a powerful combination\n" +" to help fix even the most badly mismanaged repositories and turn them\n" +" into nicely structured Mercurial repositories. The branchmap contains\n" +" lines of the form \"original_branch_name new_branch_name\".\n" +" \"original_branch_name\" is the name of the branch in the source\n" +" repository, and \"new_branch_name\" is the name of the branch is the\n" +" destination repository. This can be used to (for instance) move code\n" +" in one repository from \"default\" to a named branch." +msgstr "" + +msgid "" +" Mercurial Source\n" +" ----------------" +msgstr "" + +msgid "" +" --config convert.hg.ignoreerrors=False (boolean)\n" +" ignore integrity errors when reading. Use it to fix Mercurial\n" +" repositories with missing revlogs, by converting from and to\n" +" Mercurial.\n" +" --config convert.hg.saverev=False (boolean)\n" +" store original revision ID in changeset (forces target IDs to\n" +" change)\n" +" --config convert.hg.startrev=0 (hg revision identifier)\n" +" convert start revision and its descendants" +msgstr "" + +msgid "" +" CVS Source\n" +" ----------" +msgstr "" + +msgid "" +" CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n" +" to indicate the starting point of what will be converted. Direct\n" +" access to the repository files is not needed, unless of course the\n" +" repository is :local:. The conversion uses the top level directory\n" +" in the sandbox to find the CVS repository, and then uses CVS rlog\n" +" commands to find files to convert. This means that unless a\n" +" filemap is given, all files under the starting directory will be\n" +" converted, and that any directory reorganization in the CVS\n" +" sandbox is ignored." +msgstr "" + +msgid " The options shown are the defaults." +msgstr "" + +msgid "" +" --config convert.cvsps.cache=True (boolean)\n" +" Set to False to disable remote log caching, for testing and\n" +" debugging purposes.\n" +" --config convert.cvsps.fuzz=60 (integer)\n" +" Specify the maximum time (in seconds) that is allowed between\n" +" commits with identical user and log message in a single\n" +" changeset. When very large files were checked in as part of a\n" +" changeset then the default may not be long enough.\n" +" --config convert.cvsps.mergeto='{{mergetobranch ([-\\w]+)}}'\n" +" Specify a regular expression to which commit log messages are\n" +" matched. If a match occurs, then the conversion process will\n" +" insert a dummy revision merging the branch on which this log\n" +" message occurs to the branch indicated in the regex.\n" +" --config convert.cvsps.mergefrom='{{mergefrombranch ([-\\w]+)}}'\n" +" Specify a regular expression to which commit log messages are\n" +" matched. If a match occurs, then the conversion process will\n" +" add the most recent revision on the branch indicated in the\n" +" regex as the second parent of the changeset.\n" +" --config hook.cvslog\n" +" Specify a Python function to be called at the end of gathering\n" +" the CVS log. The function is passed a list with the log entries,\n" +" and can modify the entries in-place, or add or delete them.\n" +" --config hook.cvschangesets\n" +" Specify a Python function to be called after the changesets\n" +" are calculated from the the CVS log. The function is passed\n" +" a list with the changeset entries, and can modify the changesets\n" +" in-place, or add or delete them." +msgstr "" + +msgid "" +" An additional \"debugcvsps\" Mercurial command allows the builtin\n" +" changeset merging code to be run without doing a conversion. Its\n" +" parameters and output are similar to that of cvsps 2.1. Please see\n" +" the command help for more details." +msgstr "" + +msgid "" +" Subversion Source\n" +" -----------------" +msgstr "" + +msgid "" +" Subversion source detects classical trunk/branches/tags layouts.\n" +" By default, the supplied \"svn://repo/path/\" source URL is\n" +" converted as a single branch. If \"svn://repo/path/trunk\" exists it\n" +" replaces the default branch. If \"svn://repo/path/branches\" exists,\n" +" its subdirectories are listed as possible branches. If\n" +" \"svn://repo/path/tags\" exists, it is looked for tags referencing\n" +" converted branches. Default \"trunk\", \"branches\" and \"tags\" values\n" +" can be overridden with following options. Set them to paths\n" +" relative to the source URL, or leave them blank to disable auto\n" +" detection." +msgstr "" + +msgid "" +" --config convert.svn.branches=branches (directory name)\n" +" specify the directory containing branches\n" +" --config convert.svn.tags=tags (directory name)\n" +" specify the directory containing tags\n" +" --config convert.svn.trunk=trunk (directory name)\n" +" specify the name of the trunk branch" +msgstr "" + +msgid "" +" Source history can be retrieved starting at a specific revision,\n" +" instead of being integrally converted. Only single branch\n" +" conversions are supported." +msgstr "" + +msgid "" +" --config convert.svn.startrev=0 (svn revision number)\n" +" specify start Subversion revision." +msgstr "" + +msgid "" +" Perforce Source\n" +" ---------------" +msgstr "" + +msgid "" +" The Perforce (P4) importer can be given a p4 depot path or a\n" +" client specification as source. It will convert all files in the\n" +" source to a flat Mercurial repository, ignoring labels, branches\n" +" and integrations. Note that when a depot path is given you then\n" +" usually should specify a target directory, because otherwise the\n" +" target may be named ...-hg." +msgstr "" + +msgid "" +" It is possible to limit the amount of source history to be\n" +" converted by specifying an initial Perforce revision." +msgstr "" + +msgid "" +" --config convert.p4.startrev=0 (perforce changelist number)\n" +" specify initial Perforce revision." +msgstr "" + +msgid "" +" Mercurial Destination\n" +" ---------------------" +msgstr "" + +msgid "" +" --config convert.hg.clonebranches=False (boolean)\n" +" dispatch source branches in separate clones.\n" +" --config convert.hg.tagsbranch=default (branch name)\n" +" tag revisions branch name\n" +" --config convert.hg.usebranchnames=True (boolean)\n" +" preserve branch names" +msgstr "" + +msgid " " +msgstr "" + +msgid "create changeset information from CVS" +msgstr "" + +msgid "" +" This command is intended as a debugging tool for the CVS to\n" +" Mercurial converter, and can be used as a direct replacement for\n" +" cvsps." +msgstr "" + +msgid "" +" Hg debugcvsps reads the CVS rlog for current directory (or any\n" +" named directory) in the CVS repository, and converts the log to a\n" +" series of changesets based on matching commit log entries and\n" +" dates." +msgstr "" + +msgid "username mapping filename" +msgstr "" + +msgid "destination repository type" +msgstr "" + +msgid "remap file names using contents of file" +msgstr "" + +msgid "import up to target revision REV" +msgstr "" + +msgid "source repository type" +msgstr "" + +msgid "splice synthesized history into place" +msgstr "" + +msgid "change branch names while converting" +msgstr "" + +msgid "try to sort changesets by branches" +msgstr "" + +msgid "try to sort changesets by date" +msgstr "" + +msgid "preserve source changesets order" +msgstr "" + +msgid "hg convert [OPTION]... SOURCE [DEST [REVMAP]]" +msgstr "" + +msgid "only return changes on specified branches" +msgstr "" + +msgid "prefix to remove from file names" +msgstr "" + +msgid "only return changes after or between specified tags" +msgstr "" + +msgid "update cvs log cache" +msgstr "" + +msgid "create new cvs log cache" +msgstr "" + +msgid "set commit time fuzz in seconds" +msgstr "" + +msgid "specify cvsroot" +msgstr "" + +msgid "show parent changesets" +msgstr "" + +msgid "show current changeset in ancestor branches" +msgstr "" + +msgid "ignored for compatibility" +msgstr "" + +msgid "hg debugcvsps [OPTION]... [PATH]..." +msgstr "" + +#, python-format +msgid "%s does not look like a Bazaar repository" +msgstr "" + +msgid "Bazaar modules could not be loaded" +msgstr "" + +msgid "" +"warning: lightweight checkouts may cause conversion failures, try with a " +"regular branch instead.\n" +msgstr "" + +msgid "bzr source type could not be determined\n" +msgstr "" + +#, python-format +msgid "%s is not a valid revision in current branch" +msgstr "" + +#, python-format +msgid "%s is not available in %s anymore" +msgstr "" + +#, python-format +msgid "%s.%s symlink has no target" +msgstr "" + +#, python-format +msgid "cannot find required \"%s\" tool" +msgstr "" + +#, python-format +msgid "%s error:\n" +msgstr "" + +#, python-format +msgid "syntax error in %s(%d): key/value pair expected" +msgstr "" + +#, python-format +msgid "could not open map file %r: %s" +msgstr "" + +#, python-format +msgid "%s: invalid source repository type" +msgstr "" + +#, python-format +msgid "%s: missing or unsupported repository" +msgstr "" + +#, python-format +msgid "%s: invalid destination repository type" +msgstr "" + +#, python-format +msgid "convert: %s\n" +msgstr "" + +#, python-format +msgid "%s: unknown repository type" +msgstr "" + +#, fuzzy +msgid "getting files" +msgstr "se primește %s\n" + +msgid "revisions" +msgstr "" + +msgid "scanning" +msgstr "" + +#, python-format +msgid "unknown sort mode: %s" +msgstr "" + +#, python-format +msgid "cycle detected between %s and %s" +msgstr "" + +msgid "not all revisions were sorted" +msgstr "" + +#, python-format +msgid "Writing author map file %s\n" +msgstr "" + +#, python-format +msgid "Ignoring bad line in author map file %s: %s\n" +msgstr "" + +#, python-format +msgid "mapping author %s to %s\n" +msgstr "" + +#, python-format +msgid "overriding mapping for author %s, was %s, will be %s\n" +msgstr "" + +#, python-format +msgid "spliced in %s as parents of %s\n" +msgstr "" + +msgid "scanning source...\n" +msgstr "" + +msgid "sorting...\n" +msgstr "" + +msgid "converting...\n" +msgstr "" + +#, python-format +msgid "source: %s\n" +msgstr "" + +msgid "converting" +msgstr "" + +#, python-format +msgid "assuming destination %s\n" +msgstr "" + +msgid "more than one sort mode specified" +msgstr "" + +msgid "--sourcesort is not supported by this data source" +msgstr "" + +#, python-format +msgid "%s does not look like a CVS checkout" +msgstr "" + +#, python-format +msgid "revision %s is not a patchset number" +msgstr "" + +#, python-format +msgid "connecting to %s\n" +msgstr "" + +msgid "CVS pserver authentication failed" +msgstr "" + +#, python-format +msgid "" +"unexpected response from CVS server (expected \"Valid-requests\", but got %r)" +msgstr "" + +#, python-format +msgid "%d bytes missing from remote file" +msgstr "" + +msgid "malformed response from CVS" +msgstr "" + +#, python-format +msgid "cvs server: %s\n" +msgstr "" + +#, python-format +msgid "unknown CVS response: %s" +msgstr "" + +msgid "collecting CVS rlog\n" +msgstr "" + +msgid "not a CVS sandbox" +msgstr "" + +#, python-format +msgid "reading cvs log cache %s\n" +msgstr "" + +#, python-format +msgid "cache has %d log entries\n" +msgstr "" + +#, python-format +msgid "error reading cache: %r\n" +msgstr "" + +#, python-format +msgid "running %s\n" +msgstr "" + +msgid "RCS file must be followed by working file" +msgstr "" + +msgid "must have at least some revisions" +msgstr "" + +msgid "expected revision number" +msgstr "" + +msgid "revision must be followed by date line" +msgstr "" + +msgid "log cache overlaps with new log entries, re-run without cache." +msgstr "" + +#, python-format +msgid "writing cvs log cache %s\n" +msgstr "" + +#, python-format +msgid "%d log entries\n" +msgstr "" + +msgid "creating changesets\n" +msgstr "" + +msgid "synthetic changeset cannot have multiple parents" +msgstr "" + +#, python-format +msgid "" +"warning: CVS commit message references non-existent branch %r:\n" +"%s\n" +msgstr "" + +#, python-format +msgid "%d changeset entries\n" +msgstr "" + +#, python-format +msgid "%s does not look like a darcs repository" +msgstr "" + +#, python-format +msgid "darcs version 2.1 or newer needed (found %r)" +msgstr "" + +msgid "Python ElementTree module is not available" +msgstr "" + +msgid "internal calling inconsistency" +msgstr "" + +msgid "errors in filemap" +msgstr "" + +#, python-format +msgid "%s:%d: path to %s is missing\n" +msgstr "" + +#, python-format +msgid "%s:%d: %r already in %s list\n" +msgstr "" + +#, python-format +msgid "%s:%d: superfluous / in %s %r\n" +msgstr "" + +#, python-format +msgid "%s:%d: unknown directive %r\n" +msgstr "" + +msgid "source repository doesn't support --filemap" +msgstr "" + +#, python-format +msgid "%s does not look like a Git repository" +msgstr "" + +msgid "cannot retrieve git heads" +msgstr "" + +#, python-format +msgid "cannot read %r object at %s" +msgstr "" + +#, python-format +msgid "cannot read changes in %s" +msgstr "" + +#, python-format +msgid "cannot read tags from %s" +msgstr "" + +#, python-format +msgid "%s does not look like a GNU Arch repository" +msgstr "" + +msgid "cannot find a GNU Arch tool" +msgstr "" + +#, python-format +msgid "analyzing tree version %s...\n" +msgstr "" + +#, python-format +msgid "" +"tree analysis stopped because it points to an unregistered archive %s...\n" +msgstr "" + +#, python-format +msgid "could not parse cat-log of %s" +msgstr "" + +#, python-format +msgid "%s is not a local Mercurial repository" +msgstr "" + +#, python-format +msgid "initializing destination %s repository\n" +msgstr "" + +#, python-format +msgid "could not create hg repository %s as sink" +msgstr "" + +#, python-format +msgid "pulling from %s into %s\n" +msgstr "" + +msgid "filtering out empty revision\n" +msgstr "" + +msgid "updating tags\n" +msgstr "" + +#, python-format +msgid "%s is not a valid start revision" +msgstr "" + +#, python-format +msgid "ignoring: %s\n" +msgstr "" + +#, python-format +msgid "%s does not look like a monotone repository" +msgstr "" + +#, python-format +msgid "copying file in renamed directory from '%s' to '%s'" +msgstr "" + +#, python-format +msgid "%s does not look like a P4 repository" +msgstr "" + +msgid "reading p4 views\n" +msgstr "" + +msgid "collecting p4 changelists\n" +msgstr "" + +msgid "Mercurial failed to run itself, check hg executable is in PATH" +msgstr "" + +msgid "" +"svn: cannot probe remote repository, assume it could be a subversion " +"repository. Use --source-type if you know better.\n" +msgstr "" + +#, python-format +msgid "%s does not look like a Subversion repository" +msgstr "" + +msgid "Subversion python bindings could not be loaded" +msgstr "" + +#, python-format +msgid "Subversion python bindings %d.%d found, 1.4 or later required" +msgstr "" + +msgid "Subversion python bindings are too old, 1.4 or later required" +msgstr "" + +#, python-format +msgid "svn: revision %s is not an integer" +msgstr "" + +#, python-format +msgid "svn: start revision %s is not an integer" +msgstr "" + +#, python-format +msgid "no revision found in module %s" +msgstr "" + +#, python-format +msgid "expected %s to be at %r, but not found" +msgstr "" + +#, python-format +msgid "found %s at %r\n" +msgstr "" + +#, python-format +msgid "ignoring empty branch %s\n" +msgstr "" + +#, python-format +msgid "found branch %s at %d\n" +msgstr "" + +msgid "svn: start revision is not supported with more than one branch" +msgstr "" + +#, python-format +msgid "svn: no revision found after start revision %d" +msgstr "" + +#, python-format +msgid "%s not found up to revision %d" +msgstr "" + +msgid "scanning paths" +msgstr "" + +#, python-format +msgid "found parent of branch %s at %d: %s\n" +msgstr "" + +#, python-format +msgid "fetching revision log for \"%s\" from %d to %d\n" +msgstr "" + +#, python-format +msgid "svn: branch has no revision %s" +msgstr "" + +#, python-format +msgid "initializing svn repository %r\n" +msgstr "" + +#, python-format +msgid "initializing svn working copy %r\n" +msgstr "" + +msgid "unexpected svn output:\n" +msgstr "" + +msgid "unable to cope with svn output" +msgstr "" + +msgid "XXX TAGS NOT IMPLEMENTED YET\n" +msgstr "" + +msgid "automatically manage newlines in repository files" +msgstr "" + +msgid "" +"This extension allows you to manage the type of line endings (CRLF or\n" +"LF) that are used in the repository and in the local working\n" +"directory. That way you can get CRLF line endings on Windows and LF on\n" +"Unix/Mac, thereby letting everybody use their OS native line endings." +msgstr "" + +msgid "" +"The extension reads its configuration from a versioned ``.hgeol``\n" +"configuration file every time you run an ``hg`` command. The\n" +"``.hgeol`` file use the same syntax as all other Mercurial\n" +"configuration files. It uses two sections, ``[patterns]`` and\n" +"``[repository]``." +msgstr "" + +msgid "" +"The ``[patterns]`` section specifies the line endings used in the\n" +"working directory. The format is specified by a file pattern. The\n" +"first match is used, so put more specific patterns first. The\n" +"available line endings are ``LF``, ``CRLF``, and ``BIN``." +msgstr "" + +msgid "" +"Files with the declared format of ``CRLF`` or ``LF`` are always\n" +"checked out in that format and files declared to be binary (``BIN``)\n" +"are left unchanged. Additionally, ``native`` is an alias for the\n" +"platform's default line ending: ``LF`` on Unix (including Mac OS X)\n" +"and ``CRLF`` on Windows. Note that ``BIN`` (do nothing to line\n" +"endings) is Mercurial's default behaviour; it is only needed if you\n" +"need to override a later, more general pattern." +msgstr "" + +msgid "" +"The optional ``[repository]`` section specifies the line endings to\n" +"use for files stored in the repository. It has a single setting,\n" +"``native``, which determines the storage line endings for files\n" +"declared as ``native`` in the ``[patterns]`` section. It can be set to\n" +"``LF`` or ``CRLF``. The default is ``LF``. For example, this means\n" +"that on Windows, files configured as ``native`` (``CRLF`` by default)\n" +"will be converted to ``LF`` when stored in the repository. Files\n" +"declared as ``LF``, ``CRLF``, or ``BIN`` in the ``[patterns]`` section\n" +"are always stored as-is in the repository." +msgstr "" + +msgid "Example versioned ``.hgeol`` file::" +msgstr "" + +msgid "" +" [patterns]\n" +" **.py = native\n" +" **.vcproj = CRLF\n" +" **.txt = native\n" +" Makefile = LF\n" +" **.jpg = BIN" +msgstr "" + +msgid "" +" [repository]\n" +" native = LF" +msgstr "" + +msgid "" +"The extension uses an optional ``[eol]`` section in your hgrc file\n" +"(not the ``.hgeol`` file) for settings that control the overall\n" +"behavior. There are two settings:" +msgstr "" + +msgid "" +"- ``eol.native`` (default ``os.linesep``) can be set to ``LF`` or\n" +" ``CRLF`` override the default interpretation of ``native`` for\n" +" checkout. This can be used with :hg:`archive` on Unix, say, to\n" +" generate an archive where files have line endings for Windows." +msgstr "" + +msgid "" +"- ``eol.only-consistent`` (default True) can be set to False to make\n" +" the extension convert files with inconsistent EOLs. Inconsistent\n" +" means that there is both ``CRLF`` and ``LF`` present in the file.\n" +" Such files are normally not touched under the assumption that they\n" +" have mixed EOLs on purpose." +msgstr "" + +msgid "" +"See :hg:`help patterns` for more information about the glob patterns\n" +"used.\n" +msgstr "" + +#, python-format +msgid "%s should not have CRLF line endings" +msgstr "" + +#, python-format +msgid "%s should not have LF line endings" +msgstr "" + +msgid "the eol extension is incompatible with the win32text extension" +msgstr "" + +#, python-format +msgid "ignoring unknown EOL style '%s' from %s\n" +msgstr "" + +#, python-format +msgid "inconsistent newline style in %s\n" +msgstr "" + +msgid "command to allow external programs to compare revisions" +msgstr "" + +msgid "" +"The extdiff Mercurial extension allows you to use external programs\n" +"to compare revisions, or revision with working directory. The external\n" +"diff programs are called with a configurable set of options and two\n" +"non-option arguments: paths to directories containing snapshots of\n" +"files to compare." +msgstr "" + +msgid "" +"The extdiff extension also allows to configure new diff commands, so\n" +"you do not need to type :hg:`extdiff -p kdiff3` always. ::" +msgstr "" + +msgid "" +" [extdiff]\n" +" # add new command that runs GNU diff(1) in 'context diff' mode\n" +" cdiff = gdiff -Nprc5\n" +" ## or the old way:\n" +" #cmd.cdiff = gdiff\n" +" #opts.cdiff = -Nprc5" +msgstr "" + +msgid "" +" # add new command called vdiff, runs kdiff3\n" +" vdiff = kdiff3" +msgstr "" + +msgid "" +" # add new command called meld, runs meld (no need to name twice)\n" +" meld =" +msgstr "" + +msgid "" +" # add new command called vimdiff, runs gvimdiff with DirDiff plugin\n" +" # (see http://www.vim.org/scripts/script.php?script_id=102) Non\n" +" # English user, be sure to put \"let g:DirDiffDynamicDiffText = 1\" in\n" +" # your .vimrc\n" +" vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'" +msgstr "" + +msgid "Tool arguments can include variables that are expanded at runtime::" +msgstr "" + +msgid "" +" $parent1, $plabel1 - filename, descriptive label of first parent\n" +" $child, $clabel - filename, descriptive label of child revision\n" +" $parent2, $plabel2 - filename, descriptive label of second parent\n" +" $parent is an alias for $parent1." +msgstr "" + +msgid "" +"The extdiff extension will look in your [diff-tools] and [merge-tools]\n" +"sections for diff tool arguments, when none are specified in [extdiff]." +msgstr "" + +msgid "" +" [extdiff]\n" +" kdiff3 =" +msgstr "" + +msgid "" +" [diff-tools]\n" +" kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child" +msgstr "" + +msgid "" +"You can use -I/-X and list of file or directory names like normal\n" +":hg:`diff` command. The extdiff extension makes snapshots of only\n" +"needed files, so running the external diff program will actually be\n" +"pretty fast (at least faster than having to compare the entire tree).\n" +msgstr "" + +#, python-format +msgid "making snapshot of %d files from rev %s\n" +msgstr "" + +#, python-format +msgid "making snapshot of %d files from working directory\n" +msgstr "" + +msgid "cannot specify --rev and --change at the same time" +msgstr "" + +msgid "cleaning up temp directory\n" +msgstr "" + +msgid "use external program to diff repository (or selected files)" +msgstr "" + +msgid "" +" Show differences between revisions for the specified files, using\n" +" an external program. The default program used is diff, with\n" +" default options \"-Npru\"." +msgstr "" + +msgid "" +" To select a different program, use the -p/--program option. The\n" +" program will be passed the names of two directories to compare. To\n" +" pass additional options to the program, use -o/--option. These\n" +" will be passed before the names of the directories to compare." +msgstr "" + +msgid "" +" When two revision arguments are given, then changes are shown\n" +" between those revisions. If only one revision is specified then\n" +" that revision is compared to the working directory, and, when no\n" +" revisions are specified, the working directory files are compared\n" +" to its parent." +msgstr "" + +msgid "CMD" +msgstr "CMD" + +msgid "comparison program to run" +msgstr "" + +msgid "OPT" +msgstr "" + +msgid "pass option to comparison program" +msgstr "" + +msgid "change made by revision" +msgstr "" + +msgid "hg extdiff [OPT]... [FILE]..." +msgstr "" + +#, python-format +msgid "use %(path)s to diff repository (or selected files)" +msgstr "" + +#, python-format +msgid "" +" Show differences between revisions for the specified files, using\n" +" the %(path)s program." +msgstr "" + +#, python-format +msgid "hg %s [OPTION]... [FILE]..." +msgstr "" + +msgid "pull, update and merge in one command" +msgstr "" + +msgid "pull changes from a remote repository, merge new changes if needed." +msgstr "" + +msgid "" +" This finds all changes from the repository at the specified path\n" +" or URL and adds them to the local repository." +msgstr "" + +msgid "" +" If the pulled changes add a new branch head, the head is\n" +" automatically merged, and the result of the merge is committed.\n" +" Otherwise, the working directory is updated to include the new\n" +" changes." +msgstr "" + +msgid "" +" When a merge occurs, the newly pulled changes are assumed to be\n" +" \"authoritative\". The head of the new changes is used as the first\n" +" parent, with local changes as the second. To switch the merge\n" +" order, use --switch-parent." +msgstr "" + +msgid "" +" See :hg:`help dates` for a list of formats valid for -d/--date.\n" +" " +msgstr "" +" Vezi :hg:`help dates` pentru o listă de formate valide cu d/--date.\n" +" " + +msgid "" +"working dir not at branch tip (use \"hg update\" to check out branch tip)" +msgstr "" + +msgid "outstanding uncommitted merge" +msgstr "" + +msgid "outstanding uncommitted changes" +msgstr "" + +msgid "working directory is missing some files" +msgstr "" + +msgid "" +"multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)" +msgstr "" + +#, python-format +msgid "pulling from %s\n" +msgstr "" + +msgid "" +"Other repository doesn't support revision lookup, so a rev cannot be " +"specified." +msgstr "" + +#, python-format +msgid "" +"not merging with %d other new branch heads (use \"hg heads .\" and \"hg merge" +"\" to merge them)\n" +msgstr "" + +#, python-format +msgid "updating to %d:%s\n" +msgstr "" + +#, python-format +msgid "merging with %d:%s\n" +msgstr "" + +#, python-format +msgid "new changeset %d:%s merges remote changes with local\n" +msgstr "" + +msgid "a specific revision you would like to pull" +msgstr "" + +msgid "edit commit message" +msgstr "" + +msgid "edit commit message (DEPRECATED)" +msgstr "" + +msgid "switch parents when merging" +msgstr "" + +msgid "hg fetch [SOURCE]" +msgstr "" + +msgid "commands to sign and verify changesets" +msgstr "" + +msgid "error while verifying signature" +msgstr "" + +#, python-format +msgid "%s Bad signature from \"%s\"\n" +msgstr "" + +#, python-format +msgid "%s Note: Signature has expired (signed by: \"%s\")\n" +msgstr "" + +#, python-format +msgid "%s Note: This key has expired (signed by: \"%s\")\n" +msgstr "" + +msgid "list signed changesets" +msgstr "" + +#, python-format +msgid "%s:%d node does not exist\n" +msgstr "" + +msgid "verify all the signatures there may be for a particular revision" +msgstr "" + +#, python-format +msgid "No valid signature for %s\n" +msgstr "" + +msgid "add a signature for the current or given revision" +msgstr "" + +msgid "" +" If no revision is given, the parent of the working directory is used,\n" +" or tip if no revision is checked out." +msgstr "" + +msgid "uncommitted merge - please provide a specific revision" +msgstr "" + +#, python-format +msgid "Signing %d:%s\n" +msgstr "" + +msgid "Error while signing" +msgstr "" + +msgid "" +"working copy of .hgsigs is changed (please commit .hgsigs manually or use --" +"force)" +msgstr "" + +msgid "unknown signature version" +msgstr "" + +msgid "make the signature local" +msgstr "" + +msgid "sign even if the sigfile is modified" +msgstr "" + +msgid "do not commit the sigfile after signing" +msgstr "" + +msgid "ID" +msgstr "" + +msgid "the key id to sign with" +msgstr "" + +msgid "TEXT" +msgstr "" + +msgid "commit message" +msgstr "" + +msgid "hg sign [OPTION]... [REVISION]..." +msgstr "" + +msgid "hg sigcheck REVISION" +msgstr "" + +msgid "hg sigs" +msgstr "" + +msgid "command to view revision graphs from a shell" +msgstr "" + +msgid "" +"This extension adds a --graph option to the incoming, outgoing and log\n" +"commands. When this options is given, an ASCII representation of the\n" +"revision graph is also shown.\n" +msgstr "" + +#, python-format +msgid "--graph option is incompatible with --%s" +msgstr "" + +msgid "show revision history alongside an ASCII revision graph" +msgstr "" + +msgid "" +" Print a revision history alongside a revision graph drawn with\n" +" ASCII characters." +msgstr "" + +msgid "" +" Nodes printed as an @ character are parents of the working\n" +" directory.\n" +" " +msgstr "" + +msgid "show the revision DAG" +msgstr "afișează graful (DAG) reviziilor" + +msgid "NUM" +msgstr "" + +msgid "limit number of changes displayed" +msgstr "limitează numărul de modificări afișat" + +msgid "show patch" +msgstr "afișează patch-ul" + +msgid "show the specified revision or range" +msgstr "afișează revizia sau intervalul specificat" + +msgid "hg glog [OPTION]... [FILE]" +msgstr "" + +msgid "hooks for integrating with the CIA.vc notification service" +msgstr "" + +msgid "" +"This is meant to be run as a changegroup or incoming hook. To\n" +"configure it, set the following options in your hgrc::" +msgstr "" + +msgid "" +" [cia]\n" +" # your registered CIA user name\n" +" user = foo\n" +" # the name of the project in CIA\n" +" project = foo\n" +" # the module (subproject) (optional)\n" +" #module = foo\n" +" # Append a diffstat to the log message (optional)\n" +" #diffstat = False\n" +" # Template to use for log messages (optional)\n" +" #template = {desc}\\n{baseurl}/rev/{node}-- {diffstat}\n" +" # Style to use (optional)\n" +" #style = foo\n" +" # The URL of the CIA notification service (optional)\n" +" # You can use mailto: URLs to send by email, eg\n" +" # mailto:cia@cia.vc\n" +" # Make sure to set email.from if you do this.\n" +" #url = http://cia.vc/\n" +" # print message instead of sending it (optional)\n" +" #test = False" +msgstr "" + +msgid "" +" [hooks]\n" +" # one of these:\n" +" changegroup.cia = python:hgcia.hook\n" +" #incoming.cia = python:hgcia.hook" +msgstr "" + +msgid "" +" [web]\n" +" # If you want hyperlinks (optional)\n" +" baseurl = http://server/path/to/repo\n" +msgstr "" + +#, python-format +msgid "%s returned an error: %s" +msgstr "" + +#, python-format +msgid "hgcia: sending update to %s\n" +msgstr "" + +msgid "email.from must be defined when sending by email" +msgstr "" + +msgid "browse the repository in a graphical way" +msgstr "" + +msgid "" +"The hgk extension allows browsing the history of a repository in a\n" +"graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not\n" +"distributed with Mercurial.)" +msgstr "" + +msgid "" +"hgk consists of two parts: a Tcl script that does the displaying and\n" +"querying of information, and an extension to Mercurial named hgk.py,\n" +"which provides hooks for hgk to get information. hgk can be found in\n" +"the contrib directory, and the extension is shipped in the hgext\n" +"repository, and needs to be enabled." +msgstr "" + +msgid "" +"The :hg:`view` command will launch the hgk Tcl script. For this command\n" +"to work, hgk must be in your search path. Alternately, you can specify\n" +"the path to hgk in your .hgrc file::" +msgstr "" + +msgid "" +" [hgk]\n" +" path=/location/of/hgk" +msgstr "" + +msgid "" +"hgk can make use of the extdiff extension to visualize revisions.\n" +"Assuming you had already configured extdiff vdiff command, just add::" +msgstr "" + +msgid "" +" [hgk]\n" +" vdiff=vdiff" +msgstr "" + +msgid "" +"Revisions context menu will now display additional entries to fire\n" +"vdiff on hovered and selected revisions.\n" +msgstr "" + +msgid "diff trees from two commits" +msgstr "" + +msgid "output common ancestor information" +msgstr "" + +msgid "cat a specific revision" +msgstr "" + +msgid "cat-file: type or revision not supplied\n" +msgstr "" + +msgid "aborting hg cat-file only understands commits\n" +msgstr "" + +msgid "parse given revisions" +msgstr "" + +msgid "print revisions" +msgstr "" + +msgid "print extension options" +msgstr "" + +msgid "start interactive history viewer" +msgstr "" + +msgid "hg view [-l LIMIT] [REVRANGE]" +msgstr "" + +msgid "generate patch" +msgstr "" + +msgid "recursive" +msgstr "" + +msgid "pretty" +msgstr "" + +msgid "stdin" +msgstr "" + +msgid "detect copies" +msgstr "" + +msgid "search" +msgstr "" + +msgid "hg git-diff-tree [OPTION]... NODE1 NODE2 [FILE]..." +msgstr "" + +msgid "hg debug-cat-file [OPTION]... TYPE FILE" +msgstr "" + +msgid "hg debug-config" +msgstr "" + +msgid "hg debug-merge-base REV REV" +msgstr "" + +msgid "ignored" +msgstr "" + +msgid "hg debug-rev-parse REV" +msgstr "" + +msgid "header" +msgstr "" + +msgid "topo-order" +msgstr "" + +msgid "parents" +msgstr "" + +msgid "max-count" +msgstr "" + +msgid "hg debug-rev-list [OPTION]... REV..." +msgstr "" + +msgid "syntax highlighting for hgweb (requires Pygments)" +msgstr "" + +msgid "" +"It depends on the Pygments syntax highlighting library:\n" +"http://pygments.org/" +msgstr "" + +msgid "There is a single configuration option::" +msgstr "" + +msgid "" +" [web]\n" +" pygments_style =