##// END OF EJS Templates
merge with stable
Matt Mackall -
r20072:6d4fda48 merge default
parent child Browse files
Show More
@@ -386,9 +386,7 b' def templatelabel(context, mapping, args'
386 # i18n: "label" is a keyword
386 # i18n: "label" is a keyword
387 raise error.ParseError(_("label expects two arguments"))
387 raise error.ParseError(_("label expects two arguments"))
388
388
389 thing = templater.stringify(args[1][0](context, mapping, args[1][1]))
389 thing = templater._evalifliteral(args[1], context, mapping)
390 thing = templater.runtemplate(context, mapping,
391 templater.compiletemplate(thing, context))
392
390
393 # apparently, repo could be a string that is the favicon?
391 # apparently, repo could be a string that is the favicon?
394 repo = mapping.get('repo', '')
392 repo = mapping.get('repo', '')
@@ -159,6 +159,7 b' from mercurial import scmutil'
159 from mercurial import util
159 from mercurial import util
160 from mercurial import obsolete
160 from mercurial import obsolete
161 from mercurial import merge as mergemod
161 from mercurial import merge as mergemod
162 from mercurial.lock import release
162 from mercurial.i18n import _
163 from mercurial.i18n import _
163
164
164 cmdtable = {}
165 cmdtable = {}
@@ -476,6 +477,15 b' def histedit(ui, repo, *freeargs, **opts'
476 for intentional "edit" command, but also for resolving unexpected
477 for intentional "edit" command, but also for resolving unexpected
477 conflicts).
478 conflicts).
478 """
479 """
480 lock = wlock = None
481 try:
482 wlock = repo.wlock()
483 lock = repo.lock()
484 _histedit(ui, repo, *freeargs, **opts)
485 finally:
486 release(lock, wlock)
487
488 def _histedit(ui, repo, *freeargs, **opts):
479 # TODO only abort if we try and histedit mq patches, not just
489 # TODO only abort if we try and histedit mq patches, not just
480 # blanket if mq patches are applied somewhere
490 # blanket if mq patches are applied somewhere
481 mq = getattr(repo, 'mq', None)
491 mq = getattr(repo, 'mq', None)
@@ -3010,12 +3010,13 b' msgstr ""'
3010 " [repository]\n"
3010 " [repository]\n"
3011 " native = LF"
3011 " native = LF"
3012
3012
3013 msgid ""
3013 msgid ".. note::"
3014 ".. note::\n"
3014 msgstr ".. note::"
3015
3016 msgid ""
3015 " The rules will first apply when files are touched in the working\n"
3017 " The rules will first apply when files are touched in the working\n"
3016 " copy, e.g. by updating to null and back to tip to touch all files."
3018 " copy, e.g. by updating to null and back to tip to touch all files."
3017 msgstr ""
3019 msgstr ""
3018 ".. note::\n"
3019 " As regras passarão a ser aplicadas a partir do momento em que os\n"
3020 " As regras passarão a ser aplicadas a partir do momento em que os\n"
3020 " arquivos forem mexidos na cópia de trabalho, por exemplo após um\n"
3021 " arquivos forem mexidos na cópia de trabalho, por exemplo após um\n"
3021 " update para null e de volta para a revisão atual para mexer em\n"
3022 " update para null e de volta para a revisão atual para mexer em\n"
@@ -4709,11 +4710,9 b' msgstr ""'
4709 " svn = True"
4710 " svn = True"
4710
4711
4711 msgid ""
4712 msgid ""
4712 ".. note::\n"
4713 " The more specific you are in your filename patterns the less you\n"
4713 " The more specific you are in your filename patterns the less you\n"
4714 " lose speed in huge repositories."
4714 " lose speed in huge repositories."
4715 msgstr ""
4715 msgstr ""
4716 ".. note::\n"
4717 " Quanto mais específico você for em seus padrões de arquivo,\n"
4716 " Quanto mais específico você for em seus padrões de arquivo,\n"
4718 " menos velocidade será perdida em repositórios muito grandes."
4717 " menos velocidade será perdida em repositórios muito grandes."
4719
4718
@@ -6749,12 +6748,11 b' msgstr ""'
6749 " Sem argumentos, imprime as guardas ativas no momento.\n"
6748 " Sem argumentos, imprime as guardas ativas no momento.\n"
6750 " Com um argumento, define guardas para o patch pedido."
6749 " Com um argumento, define guardas para o patch pedido."
6751
6750
6752 msgid ""
6751 msgid " .. note::"
6753 " .. note::\n"
6752 msgstr " .. note::"
6754 " Specifying negative guards now requires '--'."
6753
6755 msgstr ""
6754 msgid " Specifying negative guards now requires '--'."
6756 " .. note::\n"
6755 msgstr " A especificação de guardas negativas agora exige '--'."
6757 " A especificação de guardas negativas agora exige '--'."
6758
6756
6759 msgid " To set guards on another patch::"
6757 msgid " To set guards on another patch::"
6760 msgstr " Para definir guardas em um outro patch::"
6758 msgstr " Para definir guardas em um outro patch::"
@@ -7342,7 +7340,7 b' msgid ""'
7342 "Notifications will not be sent until the ``notify.test`` value is set\n"
7340 "Notifications will not be sent until the ``notify.test`` value is set\n"
7343 "to ``False``; see below."
7341 "to ``False``; see below."
7344 msgstr ""
7342 msgstr ""
7345 "Notificações mas não serão enviadas até que você defina a entrada\n"
7343 "Notificações não serão enviadas até que você defina a entrada\n"
7346 "``notify.test`` como ``False``; veja abaixo."
7344 "``notify.test`` como ``False``; veja abaixo."
7347
7345
7348 msgid ""
7346 msgid ""
@@ -7433,7 +7431,7 b' msgid ""'
7433 "notify.outgoing\n"
7431 "notify.outgoing\n"
7434 " Template to use when run as an outgoing hook, overriding ``notify.template``."
7432 " Template to use when run as an outgoing hook, overriding ``notify.template``."
7435 msgstr ""
7433 msgstr ""
7436 "notify.incoming\n"
7434 "notify.outgoing\n"
7437 " O modelo usado ao executar o gancho outgoing; sobrepõe\n"
7435 " O modelo usado ao executar o gancho outgoing; sobrepõe\n"
7438 " ``notify.template``."
7436 " ``notify.template``."
7439
7437
@@ -8946,7 +8944,6 b' msgstr ""'
8946 " compartilha seu histórico com outro repositório."
8944 " compartilha seu histórico com outro repositório."
8947
8945
8948 msgid ""
8946 msgid ""
8949 " .. note::\n"
8950 " using rollback or extensions that destroy/modify history (mq,\n"
8947 " using rollback or extensions that destroy/modify history (mq,\n"
8951 " rebase, etc.) can cause considerable confusion with shared\n"
8948 " rebase, etc.) can cause considerable confusion with shared\n"
8952 " clones. In particular, if two shared clones are both updated to\n"
8949 " clones. In particular, if two shared clones are both updated to\n"
@@ -8957,7 +8954,6 b' msgid ""'
8957 " the broken clone to reset it to a changeset that still exists.\n"
8954 " the broken clone to reset it to a changeset that still exists.\n"
8958 " "
8955 " "
8959 msgstr ""
8956 msgstr ""
8960 " .. note::\n"
8961 " o uso de rollback ou extensões que destroem ou modificam\n"
8957 " o uso de rollback ou extensões que destroem ou modificam\n"
8962 " o histórico (mq, rebase, etc) pode causar confusão considerável\n"
8958 " o histórico (mq, rebase, etc) pode causar confusão considerável\n"
8963 " com clones compartilhados. Em particular, se dois clones\n"
8959 " com clones compartilhados. Em particular, se dois clones\n"
@@ -10790,11 +10786,9 b' msgstr ""'
10790 " manualmente."
10786 " manualmente."
10791
10787
10792 msgid ""
10788 msgid ""
10793 " .. note::\n"
10794 " backout cannot be used to fix either an unwanted or\n"
10789 " backout cannot be used to fix either an unwanted or\n"
10795 " incorrect merge."
10790 " incorrect merge."
10796 msgstr ""
10791 msgstr ""
10797 " .. note::\n"
10798 " backout não pode ser usado para corrigir uma mesclagem\n"
10792 " backout não pode ser usado para corrigir uma mesclagem\n"
10799 " incorreta ou indesejada."
10793 " incorreta ou indesejada."
10800
10794
@@ -11230,12 +11224,10 b' msgid "set or show the current branch na'
11230 msgstr "define ou mostra o nome de ramo atual"
11224 msgstr "define ou mostra o nome de ramo atual"
11231
11225
11232 msgid ""
11226 msgid ""
11233 " .. note::\n"
11234 " Branch names are permanent and global. Use :hg:`bookmark` to create a\n"
11227 " Branch names are permanent and global. Use :hg:`bookmark` to create a\n"
11235 " light-weight bookmark instead. See :hg:`help glossary` for more\n"
11228 " light-weight bookmark instead. See :hg:`help glossary` for more\n"
11236 " information about named branches and bookmarks."
11229 " information about named branches and bookmarks."
11237 msgstr ""
11230 msgstr ""
11238 " .. note::\n"
11239 " Nomes de ramos são permanentes e globais. Use :hg:`bookmark`\n"
11231 " Nomes de ramos são permanentes e globais. Use :hg:`bookmark`\n"
11240 " para criar um marcador leve temporário. Veja :hg:`help glossary`\n"
11232 " para criar um marcador leve temporário. Veja :hg:`help glossary`\n"
11241 " para mais informações sobre ramos nomeados e marcadores."
11233 " para mais informações sobre ramos nomeados e marcadores."
@@ -12461,12 +12453,10 b' msgstr ""'
12461 " \"unified diff\"."
12453 " \"unified diff\"."
12462
12454
12463 msgid ""
12455 msgid ""
12464 " .. note::\n"
12465 " diff may generate unexpected results for merges, as it will\n"
12456 " diff may generate unexpected results for merges, as it will\n"
12466 " default to comparing against the working directory's first\n"
12457 " default to comparing against the working directory's first\n"
12467 " parent changeset if no revisions are specified."
12458 " parent changeset if no revisions are specified."
12468 msgstr ""
12459 msgstr ""
12469 " .. note::\n"
12470 " diff pode gerar resultados inesperados para mesclagens, já\n"
12460 " diff pode gerar resultados inesperados para mesclagens, já\n"
12471 " que por padrão irá comparar com o primeiro pai do diretório de\n"
12461 " que por padrão irá comparar com o primeiro pai do diretório de\n"
12472 " trabalho se uma revisão não for especificada."
12462 " trabalho se uma revisão não for especificada."
@@ -12569,12 +12559,10 b' msgstr ""'
12569 " e comentário de consolidação."
12559 " e comentário de consolidação."
12570
12560
12571 msgid ""
12561 msgid ""
12572 " .. note::\n"
12573 " export may generate unexpected diff output for merge\n"
12562 " export may generate unexpected diff output for merge\n"
12574 " changesets, as it will compare the merge changeset against its\n"
12563 " changesets, as it will compare the merge changeset against its\n"
12575 " first parent only."
12564 " first parent only."
12576 msgstr ""
12565 msgstr ""
12577 " .. note::\n"
12578 " export pode gerar saída de diff inesperada para revisões\n"
12566 " export pode gerar saída de diff inesperada para revisões\n"
12579 " de mesclagem, já que irá comparar a revisão de mesclagem\n"
12567 " de mesclagem, já que irá comparar a revisão de mesclagem\n"
12580 " apenas com seu primeiro pai."
12568 " apenas com seu primeiro pai."
@@ -12761,12 +12749,8 b' msgstr ""'
12761 " resolvidos, o processo de enxerto pode ser retomado usando a\n"
12749 " resolvidos, o processo de enxerto pode ser retomado usando a\n"
12762 " opção -c/--continue."
12750 " opção -c/--continue."
12763
12751
12764 msgid ""
12752 msgid " The -c/--continue option does not reapply earlier options."
12765 " .. note::\n"
12753 msgstr " A opção -c/--continue não reaplica opções anteriores."
12766 " The -c/--continue option does not reapply earlier options."
12767 msgstr ""
12768 " .. note::\n"
12769 " A opção -c/--continue não reaplica opções anteriores."
12770
12754
12771 msgid ""
12755 msgid ""
12772 " - copy a single change to the stable branch and edit its description::"
12756 " - copy a single change to the stable branch and edit its description::"
@@ -13453,26 +13437,22 b' msgstr ""'
13453 " mensagem de consolidação completa."
13437 " mensagem de consolidação completa."
13454
13438
13455 msgid ""
13439 msgid ""
13456 " .. note::\n"
13457 " log -p/--patch may generate unexpected diff output for merge\n"
13440 " log -p/--patch may generate unexpected diff output for merge\n"
13458 " changesets, as it will only compare the merge changeset against\n"
13441 " changesets, as it will only compare the merge changeset against\n"
13459 " its first parent. Also, only files different from BOTH parents\n"
13442 " its first parent. Also, only files different from BOTH parents\n"
13460 " will appear in files:."
13443 " will appear in files:."
13461 msgstr ""
13444 msgstr ""
13462 " .. note::\n"
13463 " log -p/--patch pode gerar saídas de diff inesperadas para\n"
13445 " log -p/--patch pode gerar saídas de diff inesperadas para\n"
13464 " mesclagens, pois irá comparar a revisão de mesclagem apenas\n"
13446 " mesclagens, pois irá comparar a revisão de mesclagem apenas\n"
13465 " com seu primeiro pai. Além disso, apenas arquivos diferentes\n"
13447 " com seu primeiro pai. Além disso, apenas arquivos diferentes\n"
13466 " de AMBOS os pais aparecerão na lista de arquivos."
13448 " de AMBOS os pais aparecerão na lista de arquivos."
13467
13449
13468 msgid ""
13450 msgid ""
13469 " .. note::\n"
13470 " for performance reasons, log FILE may omit duplicate changes\n"
13451 " for performance reasons, log FILE may omit duplicate changes\n"
13471 " made on branches and will not show deletions. To see all\n"
13452 " made on branches and will not show deletions. To see all\n"
13472 " changes including duplicates and deletions, use the --removed\n"
13453 " changes including duplicates and deletions, use the --removed\n"
13473 " switch."
13454 " switch."
13474 msgstr ""
13455 msgstr ""
13475 " .. note::\n"
13476 " por razões de desempenho, log ARQUIVO pode omitir mudanças\n"
13456 " por razões de desempenho, log ARQUIVO pode omitir mudanças\n"
13477 " duplicadas feitas em outros ramos, e não mostra remoções.\n"
13457 " duplicadas feitas em outros ramos, e não mostra remoções.\n"
13478 " Para ver todas as mudanças incluindo duplicatas e remoções,\n"
13458 " Para ver todas as mudanças incluindo duplicatas e remoções,\n"
@@ -14033,12 +14013,10 b' msgstr ""'
14033 " forçar outras mudanças."
14013 " forçar outras mudanças."
14034
14014
14035 msgid ""
14015 msgid ""
14036 " .. note::\n"
14037 " Extra care should be taken with the -f/--force option,\n"
14016 " Extra care should be taken with the -f/--force option,\n"
14038 " which will push all new heads on all branches, an action which will\n"
14017 " which will push all new heads on all branches, an action which will\n"
14039 " almost always cause confusion for collaborators."
14018 " almost always cause confusion for collaborators."
14040 msgstr ""
14019 msgstr ""
14041 " .. note::\n"
14042 " Cuidado extra deve ser tomado ao usar a opção -f/--force,\n"
14020 " Cuidado extra deve ser tomado ao usar a opção -f/--force,\n"
14043 " que enviará todas as novas cabeças em todos os ramos, o que\n"
14021 " que enviará todas as novas cabeças em todos os ramos, o que\n"
14044 " quase sempre confunde os outros colaboradores."
14022 " quase sempre confunde os outros colaboradores."
@@ -14363,12 +14341,10 b' msgstr ""'
14363 "restaura arquivos para o estado correspondente a uma cópia de trabalho"
14341 "restaura arquivos para o estado correspondente a uma cópia de trabalho"
14364
14342
14365 msgid ""
14343 msgid ""
14366 " .. note::\n"
14367 " To check out earlier revisions, you should use :hg:`update REV`.\n"
14344 " To check out earlier revisions, you should use :hg:`update REV`.\n"
14368 " To cancel an uncommitted merge (and lose your changes),\n"
14345 " To cancel an uncommitted merge (and lose your changes),\n"
14369 " use :hg:`update --clean .`."
14346 " use :hg:`update --clean .`."
14370 msgstr ""
14347 msgstr ""
14371 " .. note::\n"
14372 " Para obter revisões anteriores, você deve usar :hg:`update REV`.\n"
14348 " Para obter revisões anteriores, você deve usar :hg:`update REV`.\n"
14373 " Para cancelar uma mesclagem não consolidada (e descartar suas\n"
14349 " Para cancelar uma mesclagem não consolidada (e descartar suas\n"
14374 " modificações), use :hg:`update --clean .`."
14350 " modificações), use :hg:`update --clean .`."
@@ -14735,13 +14711,11 b' msgstr ""'
14735 " com -u/--unknown (desconhecidos) ou -i/--ignored (ignorados)."
14711 " com -u/--unknown (desconhecidos) ou -i/--ignored (ignorados)."
14736
14712
14737 msgid ""
14713 msgid ""
14738 " .. note::\n"
14739 " status may appear to disagree with diff if permissions have\n"
14714 " status may appear to disagree with diff if permissions have\n"
14740 " changed or a merge has occurred. The standard diff format does\n"
14715 " changed or a merge has occurred. The standard diff format does\n"
14741 " not report permission changes and diff only reports changes\n"
14716 " not report permission changes and diff only reports changes\n"
14742 " relative to one merge parent."
14717 " relative to one merge parent."
14743 msgstr ""
14718 msgstr ""
14744 " .. note::\n"
14745 " o comando status pode aparentemente discordar do comando\n"
14719 " o comando status pode aparentemente discordar do comando\n"
14746 " diff se ocorrer uma mudança de permissões ou uma mesclagem. O\n"
14720 " diff se ocorrer uma mudança de permissões ou uma mesclagem. O\n"
14747 " formato diff padrão não informa mudanças de permissão e o\n"
14721 " formato diff padrão não informa mudanças de permissão e o\n"
@@ -23586,15 +23560,6 b' msgstr "IPv6 indispon\xc3\xadvel nesse sistema"'
23586 msgid "cannot start server at '%s:%d': %s"
23560 msgid "cannot start server at '%s:%d': %s"
23587 msgstr "não é possível iniciar o servidor em '%s:%d': %s"
23561 msgstr "não é possível iniciar o servidor em '%s:%d': %s"
23588
23562
23589 msgid "exact revision search"
23590 msgstr "busca exata por revisões"
23591
23592 msgid "literal keyword search"
23593 msgstr "busca por palavra chave literal"
23594
23595 msgid "revset expression search"
23596 msgstr "busca por expressão revset"
23597
23598 #, python-format
23563 #, python-format
23599 msgid "(binary file %s, hash: %s)"
23564 msgid "(binary file %s, hash: %s)"
23600 msgstr "(arquivo binário %s, hash: %s)"
23565 msgstr "(arquivo binário %s, hash: %s)"
@@ -24284,6 +24249,9 b' msgstr "aplica\xc3\xa7\xc3\xa3o do patch falhou"'
24284 msgid "cannot %s; remote repository does not support the %r capability"
24249 msgid "cannot %s; remote repository does not support the %r capability"
24285 msgstr "impossível %s; repositório remoto não suporta a funcionalidade '%r'"
24250 msgstr "impossível %s; repositório remoto não suporta a funcionalidade '%r'"
24286
24251
24252 msgid "cannot lookup negative revision"
24253 msgstr "não é possível buscar por uma revisão negativa"
24254
24287 msgid "cannot change null revision phase"
24255 msgid "cannot change null revision phase"
24288 msgstr "não é possível mudar a fase da revisão nula"
24256 msgstr "não é possível mudar a fase da revisão nula"
24289
24257
@@ -26253,6 +26221,12 b' msgstr "autentica\xc3\xa7\xc3\xa3o http: usu\xc3\xa1rio %s, senha %s\\n"'
26253 msgid "command '%s' failed: %s"
26221 msgid "command '%s' failed: %s"
26254 msgstr "falha ao executar o comando '%s' : %s"
26222 msgstr "falha ao executar o comando '%s' : %s"
26255
26223
26224 msgid "filename ends with '\\', which is invalid on Windows"
26225 msgstr "o nome de arquivo termina em '\\', o que não é permitido em Windows"
26226
26227 msgid "directory name ends with '\\', which is invalid on Windows"
26228 msgstr "o nome de diretório termina em '\\', o que não é permitido em Windows"
26229
26256 #, python-format
26230 #, python-format
26257 msgid "filename contains '%s', which is reserved on Windows"
26231 msgid "filename contains '%s', which is reserved on Windows"
26258 msgstr "o nome de arquivo contém '%s', que é um nome reservado em Windows"
26232 msgstr "o nome de arquivo contém '%s', que é um nome reservado em Windows"
@@ -940,9 +940,7 b' def show_changeset(ui, repo, opts, buffe'
940
940
941 tmpl = opts.get('template')
941 tmpl = opts.get('template')
942 style = None
942 style = None
943 if tmpl:
943 if not tmpl:
944 tmpl = templater.parsestring(tmpl, quoted=False)
945 else:
946 style = opts.get('style')
944 style = opts.get('style')
947
945
948 # ui settings
946 # ui settings
@@ -52,7 +52,7 b' def tokenizer(data):'
52 if not decode:
52 if not decode:
53 yield ('string', program[s:pos].replace('\\', r'\\'), s)
53 yield ('string', program[s:pos].replace('\\', r'\\'), s)
54 break
54 break
55 yield ('string', program[s:pos].decode('string-escape'), s)
55 yield ('string', program[s:pos], s)
56 break
56 break
57 pos += 1
57 pos += 1
58 else:
58 else:
@@ -80,19 +80,19 b' def compiletemplate(tmpl, context):'
80 parsed = []
80 parsed = []
81 pos, stop = 0, len(tmpl)
81 pos, stop = 0, len(tmpl)
82 p = parser.parser(tokenizer, elements)
82 p = parser.parser(tokenizer, elements)
83
84 while pos < stop:
83 while pos < stop:
85 n = tmpl.find('{', pos)
84 n = tmpl.find('{', pos)
86 if n < 0:
85 if n < 0:
87 parsed.append(("string", tmpl[pos:]))
86 parsed.append(("string", tmpl[pos:].decode("string-escape")))
88 break
87 break
89 if n > 0 and tmpl[n - 1] == '\\':
88 if n > 0 and tmpl[n - 1] == '\\':
90 # escaped
89 # escaped
91 parsed.append(("string", tmpl[pos:n - 1] + "{"))
90 parsed.append(("string",
91 (tmpl[pos:n - 1] + "{").decode("string-escape")))
92 pos = n + 1
92 pos = n + 1
93 continue
93 continue
94 if n > pos:
94 if n > pos:
95 parsed.append(("string", tmpl[pos:n]))
95 parsed.append(("string", tmpl[pos:n].decode("string-escape")))
96
96
97 pd = [tmpl, n + 1, stop]
97 pd = [tmpl, n + 1, stop]
98 parseres, pos = p.parse(pd)
98 parseres, pos = p.parse(pd)
@@ -258,6 +258,13 b' def get(context, mapping, args):'
258 key = args[1][0](context, mapping, args[1][1])
258 key = args[1][0](context, mapping, args[1][1])
259 yield dictarg.get(key)
259 yield dictarg.get(key)
260
260
261 def _evalifliteral(arg, context, mapping):
262 t = stringify(arg[0](context, mapping, arg[1]))
263 if arg[0] == runstring:
264 yield runtemplate(context, mapping, compiletemplate(t, context))
265 else:
266 yield t
267
261 def if_(context, mapping, args):
268 def if_(context, mapping, args):
262 if not (2 <= len(args) <= 3):
269 if not (2 <= len(args) <= 3):
263 # i18n: "if" is a keyword
270 # i18n: "if" is a keyword
@@ -265,11 +272,9 b' def if_(context, mapping, args):'
265
272
266 test = stringify(args[0][0](context, mapping, args[0][1]))
273 test = stringify(args[0][0](context, mapping, args[0][1]))
267 if test:
274 if test:
268 t = stringify(args[1][0](context, mapping, args[1][1]))
275 yield _evalifliteral(args[1], context, mapping)
269 yield runtemplate(context, mapping, compiletemplate(t, context))
270 elif len(args) == 3:
276 elif len(args) == 3:
271 t = stringify(args[2][0](context, mapping, args[2][1]))
277 yield _evalifliteral(args[2], context, mapping)
272 yield runtemplate(context, mapping, compiletemplate(t, context))
273
278
274 def ifeq(context, mapping, args):
279 def ifeq(context, mapping, args):
275 if not (3 <= len(args) <= 4):
280 if not (3 <= len(args) <= 4):
@@ -279,11 +284,9 b' def ifeq(context, mapping, args):'
279 test = stringify(args[0][0](context, mapping, args[0][1]))
284 test = stringify(args[0][0](context, mapping, args[0][1]))
280 match = stringify(args[1][0](context, mapping, args[1][1]))
285 match = stringify(args[1][0](context, mapping, args[1][1]))
281 if test == match:
286 if test == match:
282 t = stringify(args[2][0](context, mapping, args[2][1]))
287 yield _evalifliteral(args[2], context, mapping)
283 yield runtemplate(context, mapping, compiletemplate(t, context))
284 elif len(args) == 4:
288 elif len(args) == 4:
285 t = stringify(args[3][0](context, mapping, args[3][1]))
289 yield _evalifliteral(args[3], context, mapping)
286 yield runtemplate(context, mapping, compiletemplate(t, context))
287
290
288 def join(context, mapping, args):
291 def join(context, mapping, args):
289 if not (1 <= len(args) <= 2):
292 if not (1 <= len(args) <= 2):
@@ -313,8 +316,7 b' def label(context, mapping, args):'
313 raise error.ParseError(_("label expects two arguments"))
316 raise error.ParseError(_("label expects two arguments"))
314
317
315 # ignore args[0] (the label string) since this is supposed to be a a no-op
318 # ignore args[0] (the label string) since this is supposed to be a a no-op
316 t = stringify(args[1][0](context, mapping, args[1][1]))
319 yield _evalifliteral(args[1], context, mapping)
317 yield runtemplate(context, mapping, compiletemplate(t, context))
318
320
319 def rstdoc(context, mapping, args):
321 def rstdoc(context, mapping, args):
320 if len(args) != 2:
322 if len(args) != 2:
@@ -80,8 +80,8 b''
80 return m ? m[1] : null;
80 return m ? m[1] : null;
81 },
81 },
82 '.bigtable > tbody:nth-of-type(2)',
82 '.bigtable > tbody:nth-of-type(2)',
83 '<tr class="%class%">\
83 '<tr class="%class%">\\
84 <td colspan="3" style="text-align: center;">%text%</td>\
84 <td colspan="3" style="text-align: center;">%text%</td>\\
85 </tr>'
85 </tr>'
86 );
86 );
87 </script>
87 </script>
@@ -1601,3 +1601,23 b' Test date format:'
1601 date: 70 01 01 02 +0000
1601 date: 70 01 01 02 +0000
1602 date: 70 01 01 01 +0000
1602 date: 70 01 01 01 +0000
1603 date: 70 01 01 00 +0000
1603 date: 70 01 01 00 +0000
1604
1605 Test string escaping:
1606
1607 $ hg log -R latesttag -r 0 --template '>\n<>\\n<{if(rev, "[>\n<>\\n<]")}>\n<>\\n<\n'
1608 >
1609 <>\n<[>
1610 <>\n<]>
1611 <>\n<
1612
1613 Test recursive evaluation:
1614
1615 $ hg init r
1616 $ cd r
1617 $ echo a > a
1618 $ hg ci -Am '{rev}'
1619 adding a
1620 $ hg log -r 0 --template '{if(rev, desc)}\n'
1621 {rev}
1622 $ hg log -r 0 --template '{if(rev, "{author} {rev}")}\n'
1623 test 0
@@ -97,6 +97,7 b' log after edit'
97 Check histedit_source
97 Check histedit_source
98
98
99 $ hg log --debug --rev f518305ce889
99 $ hg log --debug --rev f518305ce889
100 invalid branchheads cache (visible): tip differs
100 changeset: 4:f518305ce889c07cb5bd05522176d75590ef3324
101 changeset: 4:f518305ce889c07cb5bd05522176d75590ef3324
101 tag: tip
102 tag: tip
102 phase: draft
103 phase: draft
General Comments 0
You need to be logged in to leave comments. Login now