diff -Nru mercurial-4.0~wily1/debian/changelog mercurial-4.0.1~wily1/debian/changelog --- mercurial-4.0~wily1/debian/changelog 2016-12-01 22:04:18.000000000 +0000 +++ mercurial-4.0.1~wily1/debian/changelog 2016-12-01 22:04:18.000000000 +0000 @@ -1,5 +1,5 @@ -mercurial (4.0~wily1) wily; urgency=medium +mercurial (4.0.1~wily1) wily; urgency=medium * Automated build performed by upstream. - -- Mercurial Devel Tue, 01 Nov 2016 18:17:27 +0000 + -- Mercurial Devel Thu, 01 Dec 2016 22:01:55 +0000 diff -Nru mercurial-4.0~wily1/.hg_archival.txt mercurial-4.0.1~wily1/.hg_archival.txt --- mercurial-4.0~wily1/.hg_archival.txt 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/.hg_archival.txt 2016-11-25 09:39:02.000000000 +0000 @@ -1,4 +1,4 @@ repo: 9117c6561b0bd7792fa13b50d28239d51b78e51f -node: eab27446995210c334c3d06f1a659e3b9b5da769 +node: b3b1ae98f6a0e14c1e1ba806a6c18e193b6dae5c branch: stable -tag: 4.0 +tag: 4.0.1 diff -Nru mercurial-4.0~wily1/hgext/shelve.py mercurial-4.0.1~wily1/hgext/shelve.py --- mercurial-4.0~wily1/hgext/shelve.py 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/hgext/shelve.py 2016-11-25 09:39:02.000000000 +0000 @@ -865,7 +865,7 @@ files. If specific files or directories are named, only changes to those files are shelved. - In bare shelve(when no files are specified, without interactive, + In bare shelve (when no files are specified, without interactive, include and exclude option), shelving remembers information if the working directory was on newly created branch, in other words working directory was on different branch than its first parent. In this diff -Nru mercurial-4.0~wily1/.hgsigs mercurial-4.0.1~wily1/.hgsigs --- mercurial-4.0~wily1/.hgsigs 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/.hgsigs 2016-11-25 09:39:02.000000000 +0000 @@ -134,3 +134,4 @@ ccd436f7db6d5d7b9af89715179b911d031d44f1 0 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 diff -Nru mercurial-4.0~wily1/.hgtags mercurial-4.0.1~wily1/.hgtags --- mercurial-4.0~wily1/.hgtags 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/.hgtags 2016-11-25 09:39:02.000000000 +0000 @@ -147,3 +147,4 @@ ccd436f7db6d5d7b9af89715179b911d031d44f1 3.9.1 149433e68974eb5c63ccb03f794d8b57339a80c4 3.9.2 438173c415874f6ac653efc1099dec9c9150e90f 4.0-rc +eab27446995210c334c3d06f1a659e3b9b5da769 4.0 diff -Nru mercurial-4.0~wily1/i18n/ja.po mercurial-4.0.1~wily1/i18n/ja.po --- mercurial-4.0~wily1/i18n/ja.po 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/i18n/ja.po 2016-11-25 09:39:02.000000000 +0000 @@ -10464,7 +10464,7 @@ " 指定対象の変更のみが退避されます。" msgid "" -" In bare shelve(when no files are specified, without interactive,\n" +" In bare shelve (when no files are specified, without interactive,\n" " include and exclude option), shelving remembers information if the\n" " working directory was on newly created branch, in other words working\n" " directory was on different branch than its first parent. In this\n" diff -Nru mercurial-4.0~wily1/i18n/pt_BR.po mercurial-4.0.1~wily1/i18n/pt_BR.po --- mercurial-4.0~wily1/i18n/pt_BR.po 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/i18n/pt_BR.po 2016-11-25 09:39:02.000000000 +0000 @@ -4322,23 +4322,35 @@ msgid "Faster status operations with the Watchman file monitor (EXPERIMENTAL)" msgstr "" +"Operações de status de arquivo mais rápidas usando o monitorador Watchman " +"(EXPERIMENTAL)" msgid "" "Integrates the file-watching program Watchman with Mercurial to produce faster\n" "status results." msgstr "" +"Integra o programa Watchman de monitoração de arquivos com o Mercurial\n" +"para acelerar o resultado de operações status." msgid "" "On a particular Linux system, for a real-world repository with over 400,000\n" "files hosted on ext4, vanilla `hg status` takes 1.3 seconds. On the same\n" "system, with fsmonitor it takes about 0.3 seconds." msgstr "" +"Em um sistema Linux em particular, para um repositório real\n" +"contendo mais de 400,000 arquivos em um sistema de arquivos ext4,\n" +"um comando `hg status` leva 1.3 seconds. No mesmo sistema, com a\n" +"extensão fsmonitor, ele leva cerca de 0.3 segundos." msgid "" "fsmonitor requires no configuration -- it will tell Watchman about your\n" "repository as necessary. You'll need to install Watchman from\n" "https://facebook.github.io/watchman/ and make sure it is in your PATH." msgstr "" +"A fsmonitor não requer configuração -- ela comunicará os dados do\n" +"repositório para o Watchman conforme for necessário. Você precisará\n" +"instalar o programa Watchman a partir de\n" +"https://facebook.github.io/watchman/ e colocá-lo em seu PATH." msgid "The following configuration options exist:" msgstr "Existem as seguintes opções de configuração::" @@ -4347,6 +4359,8 @@ " [fsmonitor]\n" " mode = {off, on, paranoid}" msgstr "" +" [fsmonitor]\n" +" mode = {off, on, paranoid}" msgid "" "When `mode = off`, fsmonitor will disable itself (similar to not loading the\n" @@ -4354,30 +4368,45 @@ "When `mode = paranoid`, fsmonitor will query both Watchman and the filesystem,\n" "and ensure that the results are consistent." msgstr "" +"Se `mode = off`, fsmonitor será desabilitada (de modo similar a\n" +"não carregar a extensão). Se `mode = on`, fsmonitor será habilitada\n" +"(o padrão). Se `mode = paranoid`, fsmonitor consultará tanto o\n" +"Watchman como o sistema de arquivos, e garantirá consistência dos\n" +"resultados." msgid "" " [fsmonitor]\n" " timeout = (float)" msgstr "" +" [fsmonitor]\n" +" timeout = (ponto flutuante)" msgid "" "A value, in seconds, that determines how long fsmonitor will wait for Watchman\n" "to return results. Defaults to `2.0`." msgstr "" +"Um valor, em segundos, que determina quanto tempo a fsmonitor esperará\n" +"pelos resultados do Watchman. O padrão é `2.0`." msgid "" " [fsmonitor]\n" " blacklistusers = (list of userids)" msgstr "" +" [fsmonitor]\n" +" blacklistusers = (lista de ids de usuários)" msgid "" "A list of usernames for which fsmonitor will disable itself altogether." msgstr "" +"Uma lista de nomes de usuários para os quais a fsmonitor será\n" +"desabilitada." msgid "" " [fsmonitor]\n" " walk_on_invalidate = (boolean)" msgstr "" +" [fsmonitor]\n" +" walk_on_invalidate = (booleana)" msgid "" "Whether or not to walk the whole repo ourselves when our cached state has been\n" @@ -4388,11 +4417,24 @@ "that can outpace the IPC overhead of getting the result data for the full repo\n" "from Watchman. Defaults to false." msgstr "" +"Determina se o repositório inteiro será varrido quando o estado\n" +"em cache do fsmonitor for invalidado, por exemplo quando o Watchman\n" +"for reiniciado ou regras .hgignore forem modificadas.\n" +"Varrer o repositório nesse caso produzirá I/O competindo com o\n" +"próprio Watchman. Para repositórios grandes é recomendado\n" +"definir esse valor como False (desabilitado).\n" +"Você pode querer definir como True (habilitado) para um sistema\n" +"de arquivos bastante rápido, que devolva resultados mais rapidamente\n" +"do que a comunicação com o processo Watchman para o repositório\n" +"inteiro.\n" +"O padrão é False." msgid "" "fsmonitor is incompatible with the largefiles and eol extensions, and\n" "will disable itself if any of those are active." msgstr "" +"A fsmonitor é incompatível com as extensões largefiles e eol, e será\n" +"automaticamente desabilitada se qualquer dessas extensões estiver ativa." msgid "unknown" msgstr "desconhecido" @@ -10582,7 +10624,7 @@ " engavetadas." msgid "" -" In bare shelve(when no files are specified, without interactive,\n" +" In bare shelve (when no files are specified, without interactive,\n" " include and exclude option), shelving remembers information if the\n" " working directory was on newly created branch, in other words working\n" " directory was on different branch than its first parent. In this\n" @@ -13491,8 +13533,8 @@ msgstr "" " - clona um repositório remoto para um novo diretório chamado hg/::" -msgid " hg clone http://selenic.com/hg" -msgstr " hg clone http://selenic.com/hg" +msgid " hg clone https://www.mercurial-scm.org/repo/hg/" +msgstr " hg clone https://www.mercurial-scm.org/repo/hg/" msgid " - create a lightweight local clone::" msgstr " - cria um clone leve local::" @@ -13530,8 +13572,8 @@ msgid " - clone (and track) a particular named branch::" msgstr " - clona (e rastreia) um ramo nomeado em particular::" -msgid " hg clone http://selenic.com/hg#stable" -msgstr " hg clone http://selenic.com/hg#stable" +msgid " hg clone https://www.mercurial-scm.org/repo/hg/#stable" +msgstr " hg clone https://www.mercurial-scm.org/repo/hg/#stable" msgid " See :hg:`help urls` for details on specifying URLs." msgstr " Veja :hg:`help urls` para detalhes sobre a especificação de URLs." @@ -15579,8 +15621,8 @@ msgid " - check the most recent revision of a remote repository::" msgstr " - verifica a revisão mais recente de um repositório remoto::" -msgid " hg id -r tip http://selenic.com/hg/" -msgstr " hg id -r tip http://selenic.com/hg/" +msgid " hg id -r tip https://www.mercurial-scm.org/repo/hg/" +msgstr " hg id -r tip https://www.mercurial-scm.org/repo/hg/" msgid "" " See :hg:`log` for generating more information about specific revisions,\n" @@ -15769,8 +15811,10 @@ msgid " - import a changeset from an hgweb server::" msgstr " - importa uma revisão de um servidor hgweb::" -msgid " hg import http://www.selenic.com/hg/rev/5ca8c111e9aa" -msgstr " hg import http://www.selenic.com/hg/rev/5ca8c111e9aa" +msgid "" +" hg import https://www.mercurial-scm.org/repo/hg/rev/5ca8c111e9aa" +msgstr "" +" hg import https://www.mercurial-scm.org/repo/hg/rev/5ca8c111e9aa" msgid " - import all the patches in an Unix-style mbox::" msgstr " - importa todos os patches em uma mbox estilo Unix::" @@ -17757,8 +17801,9 @@ msgid "uncommitted merge" msgstr "mesclagem não consolidada pendente" -msgid "not at a branch head (use -f to force)" -msgstr "não está em uma cabeça de ramo (use -f para forçar)" +msgid "working directory is not at a branch head (use -f to force)" +msgstr "" +"o diretório de trabalho não está em uma cabeça de ramo (use -f para forçar)" msgid "cannot tag null revision" msgstr "não é possível adicionar uma etiqueta na revisão nula" @@ -26317,11 +26362,14 @@ "\"\"\"\"\"\"\"\"\n" "Página Principal: https://mercurial-scm.org/" -msgid "Source code repository: http://selenic.com/hg" -msgstr "Repositório de código fonte: http://selenic.com/hg" +msgid "Source code repository: https://www.mercurial-scm.org/repo/hg" +msgstr "Repositório do código fonte: https://www.mercurial-scm.org/repo/hg" -msgid "Mailing list: http://selenic.com/mailman/listinfo/mercurial" -msgstr "Lista de discussão: http://selenic.com/mailman/listinfo/mercurial" +msgid "" +"Mailing list: https://www.mercurial-scm.org/mailman/listinfo/mercurial/" +msgstr "" +"Lista de discussão: https://www.mercurial-" +"scm.org/mailman/listinfo/mercurial/" msgid "" "Copying\n" diff -Nru mercurial-4.0~wily1/mercurial/hgweb/webcommands.py mercurial-4.0.1~wily1/mercurial/hgweb/webcommands.py --- mercurial-4.0~wily1/mercurial/hgweb/webcommands.py 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/mercurial/hgweb/webcommands.py 2016-11-25 09:39:02.000000000 +0000 @@ -861,12 +861,24 @@ f = fctx.path() parity = paritygen(web.stripecount) + # parents() is called once per line and several lines likely belong to + # same revision. So it is worth caching. + # TODO there are still redundant operations within basefilectx.parents() + # and from the fctx.annotate() call itself that could be cached. + parentscache = {} def parents(f): - for p in f.parents(): - yield { - "node": p.hex(), - "rev": p.rev(), - } + rev = f.rev() + if rev not in parentscache: + parentscache[rev] = [] + for p in f.parents(): + entry = { + 'node': p.hex(), + 'rev': p.rev(), + } + parentscache[rev].append(entry) + + for p in parentscache[rev]: + yield p def annotate(**map): if util.binary(fctx.data()): diff -Nru mercurial-4.0~wily1/mercurial/scmutil.py mercurial-4.0.1~wily1/mercurial/scmutil.py --- mercurial-4.0~wily1/mercurial/scmutil.py 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/mercurial/scmutil.py 2016-11-25 09:39:02.000000000 +0000 @@ -390,8 +390,7 @@ newstat = util.filestat(dstpath) if newstat.isambig(oldstat): # stat of renamed file is ambiguous to original one - advanced = (oldstat.stat.st_mtime + 1) & 0x7fffffff - os.utime(dstpath, (advanced, advanced)) + newstat.avoidambig(dstpath, oldstat) return ret return util.rename(self.join(src), dstpath) @@ -1458,8 +1457,7 @@ newstat = util.filestat(self._origfh.name) if newstat.isambig(oldstat): # stat of changed file is ambiguous to original one - advanced = (oldstat.stat.st_mtime + 1) & 0x7fffffff - os.utime(self._origfh.name, (advanced, advanced)) + newstat.avoidambig(self._origfh.name, oldstat) def __exit__(self, exc_type, exc_value, exc_tb): self._origfh.__exit__(exc_type, exc_value, exc_tb) diff -Nru mercurial-4.0~wily1/mercurial/util.py mercurial-4.0.1~wily1/mercurial/util.py --- mercurial-4.0~wily1/mercurial/util.py 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/mercurial/util.py 2016-11-25 09:39:02.000000000 +0000 @@ -1497,6 +1497,24 @@ except AttributeError: return False + def avoidambig(self, path, old): + """Change file stat of specified path to avoid ambiguity + + 'old' should be previous filestat of 'path'. + + This skips avoiding ambiguity, if a process doesn't have + appropriate privileges for 'path'. + """ + advanced = (old.stat.st_mtime + 1) & 0x7fffffff + try: + os.utime(path, (advanced, advanced)) + except OSError as inst: + if inst.errno == errno.EPERM: + # utime() on the file created by another user causes EPERM, + # if a process doesn't have appropriate privileges + return + raise + def __ne__(self, other): return not self == other diff -Nru mercurial-4.0~wily1/tests/test-shelve.t mercurial-4.0.1~wily1/tests/test-shelve.t --- mercurial-4.0~wily1/tests/test-shelve.t 2016-11-01 18:03:42.000000000 +0000 +++ mercurial-4.0.1~wily1/tests/test-shelve.t 2016-11-25 09:39:02.000000000 +0000 @@ -36,7 +36,7 @@ specific files or directories are named, only changes to those files are shelved. - In bare shelve(when no files are specified, without interactive, include + In bare shelve (when no files are specified, without interactive, include and exclude option), shelving remembers information if the working directory was on newly created branch, in other words working directory was on different branch than its first parent. In this situation