--- a/.hgsigs Mon Dec 21 22:26:31 2015 -0800
+++ b/.hgsigs Wed Mar 02 16:44:56 2016 -0600
@@ -121,3 +121,4 @@
158bdc8965720ca4061f8f8d806563cfc7cdb62e 0 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
--- a/.hgtags Mon Dec 21 22:26:31 2015 -0800
+++ b/.hgtags Wed Mar 02 16:44:56 2016 -0600
@@ -134,3 +134,4 @@
158bdc8965720ca4061f8f8d806563cfc7cdb62e 3.7-rc
2408645de650d8a29a6ce9e7dce601d8dd0d1474 3.7
b698abf971e7377d9b7ec7fc8c52df45255b0329 3.7.1
+d493d64757eb45ada99fcb3693e479a51b7782da 3.7.2
--- a/hgext/strip.py Mon Dec 21 22:26:31 2015 -0800
+++ b/hgext/strip.py Wed Mar 02 16:44:56 2016 -0600
@@ -90,7 +90,7 @@
"strip")),
('B', 'bookmark', [], _("remove revs only reachable from given"
" bookmark"))],
- _('hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV...'))
+ _('hg strip [-k] [-f] [-B bookmark] [-r] REV...'))
def stripcmd(ui, repo, *revs, **opts):
"""strip changesets and all their descendants from the repository
--- a/i18n/pt_BR.po Mon Dec 21 22:26:31 2015 -0800
+++ b/i18n/pt_BR.po Wed Mar 02 16:44:56 2016 -0600
@@ -5175,7 +5175,7 @@
msgid " - `edit` to edit this changeset"
msgstr " - `edit` para editar a revisão"
-msgid " There are a number of ways to select the root changset:"
+msgid " There are a number of ways to select the root changeset:"
msgstr " Há diversas maneiras de selecionar a revisão raiz:"
msgid " - Specify ANCESTOR directly"
@@ -18670,6 +18670,10 @@
" contendo quebras de linha misturadas são incluídos em cada\n"
" um dos estilos correspondentes."
+#. i18n: "eol" is a keyword
+msgid "eol requires a style name"
+msgstr "eol requer um nome de estilo"
+
msgid ""
"``copied()``\n"
" File that is recorded as being copied."
@@ -19569,8 +19573,8 @@
"fará com que ``hg echo foo`` imprima ``foo`` em seu terminal.\n"
"Um exemplo melhor (em um Unix) poderia ser::"
-msgid " purge = !$HG status --no-status --unknown -0 | xargs -0 rm"
-msgstr " purge = !$HG status --no-status --unknown -0 | xargs -0 rm"
+msgid " purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm"
+msgstr " purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm"
msgid ""
"which will make ``hg purge`` delete all unknown files in the\n"
@@ -19694,12 +19698,12 @@
"autenticação. Por exemplo::"
msgid ""
-" foo.prefix = hg.intevation.org/mercurial\n"
+" foo.prefix = hg.intevation.de/mercurial\n"
" foo.username = foo\n"
" foo.password = bar\n"
" foo.schemes = http https"
msgstr ""
-" foo.prefix = hg.intevation.org/mercurial\n"
+" foo.prefix = hg.intevation.de/mercurial\n"
" foo.username = foo\n"
" foo.password = bar\n"
" foo.schemes = http https"
@@ -21079,10 +21083,12 @@
msgid ""
" [hostfingerprints]\n"
-" hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0"
+" hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33\n"
+" hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33"
msgstr ""
" [hostfingerprints]\n"
-" hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0"
+" hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33\n"
+" hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33"
msgid "This feature is only supported when using Python 2.6 or later."
msgstr ""
@@ -23447,7 +23453,7 @@
"``backgroundclose``\n"
" Whether to enable closing file handles on background threads during certain\n"
" operations. Some platforms aren't very efficient at closing file\n"
-" handles that have been written or appened to. By performing file closing\n"
+" handles that have been written or appended to. By performing file closing\n"
" on background threads, file write rate can increase substantially.\n"
" (default: true on Windows, false elsewhere)"
msgstr ""
@@ -27665,22 +27671,22 @@
msgstr ".. functionsmarker"
msgid ""
-"Also, for any expression that returns a list, there is a list operator:"
+"Also, for any expression that returns a list, there is a list operator::"
msgstr ""
"Além disso, para cada expressão que devolve uma lista, há um\n"
-"operador de lista:"
-
-msgid "- expr % \"{template}\""
-msgstr "- expr % \"{modelo}\""
-
-msgid ""
-"As seen in the above example, \"{template}\" is interpreted as a template.\n"
-"To prevent it from being interpreted, you can use an escape character \"\\{\"\n"
-"or a raw string prefix, \"r'...'\"."
-msgstr ""
-"Como visto no exemplo acima, \"{modelo}\" é interpretado como um modelo.\n"
+"operador de lista::"
+
+msgid " expr % \"{template}\""
+msgstr " expr % \"{modelo}\""
+
+msgid ""
+"As seen in the above example, ``{template}`` is interpreted as a template.\n"
+"To prevent it from being interpreted, you can use an escape character ``\\{``\n"
+"or a raw string prefix, ``r'...'``."
+msgstr ""
+"Como visto no exemplo acima, ``{modelo}`` é interpretado como um modelo.\n"
"Para impedir que seja interpretado, você pode usar um caractere de\n"
-"escape \"\\{\" ou um prefixo de string literal \"r'...'\"."
+"escape ``\\{`` ou um prefixo de string literal ``r'...'``."
msgid "Some sample command line templates:"
msgstr "Alguns exemplos de modelos de linha de comando:"
@@ -32230,7 +32236,7 @@
#, python-format
msgid "reading manifest delta %s"
-msgstr "lendo alterações no manifesto %s"
+msgstr "lendo delta %s do manifesto"
msgid "crosschecking files in changesets and manifests\n"
msgstr "checagem cruzada de arquivos em revisões e no manifesto\n"
@@ -32321,6 +32327,121 @@
msgid "number of cpus must be an integer"
msgstr "o número de cpus deve ser um inteiro"
+#~ msgid "Check for unrecorded moves at commit time (EXPERIMENTAL)"
+#~ msgstr ""
+#~ "Testa por renomeações não registradas no momento da consolidação "
+#~ "(EXPERIMENTAL)"
+
+#~ msgid ""
+#~ "This extension checks at commit/amend time if any of the committed files\n"
+#~ "comes from an unrecorded mv."
+#~ msgstr ""
+#~ "Esta extensão verifica durante consolidações se algum arquivo consolidado\n"
+#~ "foi renomeado sem registrar essa renomeação pelo comando mv."
+
+#~ msgid ""
+#~ "The threshold at which a file is considered a move can be set with the\n"
+#~ "``automv.similarity`` config option. This option takes a percentage between 0\n"
+#~ "(disabled) and 100 (files must be identical), the default is 95."
+#~ msgstr ""
+#~ "O limiar no qual um arquivo será considerado uma renomeação\n"
+#~ "pode ser definido com a opção de configuração ``automv.similarity``.\n"
+#~ "Esta opção recebe uma porcentagem entre 0 (desabilitado) e 100\n"
+#~ "(os arquivos devem ser idênticos). O valor padrão é 95."
+
+#~ msgid "disable automatic file move detection"
+#~ msgstr "desabilita detecção automática de renomeações"
+
+#~ msgid "automv.similarity must be between 0 and 100"
+#~ msgstr "automv.similarity deve ser um número entre 0 e 100"
+
+#~ msgid "detected move of %s as %s (%d%% similar)\n"
+#~ msgstr "detectada remoção de %s como %s (%d%% de similaridade)\n"
+
+#~ msgid "detected move of %d files\n"
+#~ msgstr "foram detectadas renomeações de %d arquivos\n"
+
+#~ msgid ""
+#~ " [blackbox]\n"
+#~ " track = *\n"
+#~ " dirty = True"
+#~ msgstr ""
+#~ " [blackbox]\n"
+#~ " track = *"
+
+#~ msgid "histedit"
+#~ msgstr "histedit"
+
+#~ msgid "rebase"
+#~ msgstr "%d rebaseados"
+
+#~ msgid "nothing to rebase - updating instead\n"
+#~ msgstr "nada para rebasear de %s para %s\n"
+
+#~ msgid "invalid value for --daemon-postexec"
+#~ msgstr "valor %r inválido para a opção %s, int esperado"
+
+#~ msgid "forget added file %s (yn)?$$ &Yes $$ &No"
+#~ msgstr "a mesclagem de '%s' teve sucesso (yn)?$$ (&Y) sim $$ &Não"
+
+#~ msgid "no %s in progress"
+#~ msgstr "nenhum rebaseamento em andamento"
+
+#~ msgid "graft"
+#~ msgstr "força o enxerto"
+
+#~ msgid ""
+#~ "multiple matching bookmarks to rebase - please rebase to an explicit rev or "
+#~ "bookmark"
+#~ msgstr ""
+#~ "múltiplos marcadores para mesclar - por favor mescle com uma revisão ou "
+#~ "marcador explícitos"
+
+#~ msgid ""
+#~ "no matching bookmark to rebase - please rebase to an explicit rev or "
+#~ "bookmark"
+#~ msgstr ""
+#~ "nenhum marcador correspondente para mesclar - por favor mescle com uma "
+#~ "revisão ou marcador explícitos"
+
+#~ msgid "branch '%s' has %d heads - please rebase to an explicit rev"
+#~ msgstr ""
+#~ "o ramo '%s' tem %d cabeças - por favor mescle com uma revisão explícita"
+
+#~ msgid "heads are bookmarked - please rebase to an explicit rev"
+#~ msgstr ""
+#~ "as cabeças estão marcadas com bookmarks - por favor mescle com uma revisão "
+#~ "explícita"
+
+#~ msgid "branch '%s' has one head - please rebase to an explicit rev"
+#~ msgstr ""
+#~ "o ramo '%s' tem apenas uma cabeça - por favor mescle com uma revisão "
+#~ "explícita"
+
+#~ msgid "nothing to rebase"
+#~ msgstr "nada para rebasear\n"
+
+#~ msgid "use 'hg update' or rebase to an explicit revision"
+#~ msgstr "use 'hg update' ou mescle com uma revisão explícita"
+
+#~ msgid "source set is empty"
+#~ msgstr "o patch %s é vazio\n"
+
+#~ msgid "source set is rooted in multiple branches"
+#~ msgstr "a origem cvs não suporta a especificação de múltiplas revisões"
+
+#~ msgid "rebaseset is rooted in multiple named branches"
+#~ msgstr "não é possível colapsar múltiplos ramos nomeados"
+
+#~ msgid "specify an explicit destination with --dest"
+#~ msgstr "você não pode especificar uma revisão com --all"
+
+#~ msgid "%i other divergent bookmarks for \"%s\"\n"
+#~ msgstr "marcador divergente %s guardado como %s\n"
+
+#~ msgid "%i other heads for branch \"%s\"\n"
+#~ msgstr "novas cabeças remotas no ramo '%s':\n"
+
#~ msgid ""
#~ "``merge``\n"
#~ "---------"
@@ -32368,6 +32489,25 @@
#~ " que não são ignorados.\n"
#~ " (padrão: ``abort``)"
+#~ msgid "%s not in parent-directory manifest"
+#~ msgstr "abre o manifesto do diretório"
+
+#~ msgid "parent-directory manifest refers to unknown revision %s"
+#~ msgstr "revisão se refere a manifesto desconhecido %s"
+
+#~ msgid "checking directory manifests\n"
+#~ msgstr "abre o manifesto do diretório"
+
+#~ msgid "manifest refers to unknown revision %s"
+#~ msgstr "revisão se refere a manifesto desconhecido %s"
+
+#~ msgid ""
+#~ " [hostfingerprints]\n"
+#~ " hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0"
+#~ msgstr ""
+#~ " [hostfingerprints]\n"
+#~ " hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0"
+
#~ msgid ""
#~ "# Edit history between %s and %s\n"
#~ "#\n"
--- a/mercurial/commands.py Mon Dec 21 22:26:31 2015 -0800
+++ b/mercurial/commands.py Wed Mar 02 16:44:56 2016 -0600
@@ -1270,7 +1270,7 @@
_('show only branches that have unmerged heads (DEPRECATED)')),
('c', 'closed', False, _('show normal and closed branches')),
] + formatteropts,
- _('[-ac]'))
+ _('[-c]'))
def branches(ui, repo, active=False, closed=False, **opts):
"""list repository named branches
@@ -5234,7 +5234,7 @@
('P', 'preview', None,
_('review revisions to merge (no merge is performed)'))
] + mergetoolopts,
- _('[-P] [-f] [[-r] REV]'))
+ _('[-P] [[-r] REV]'))
def merge(ui, repo, node=None, **opts):
"""merge another revision into working directory
--- a/mercurial/hg.py Mon Dec 21 22:26:31 2015 -0800
+++ b/mercurial/hg.py Wed Mar 02 16:44:56 2016 -0600
@@ -343,17 +343,30 @@
"support clone by revision"))
revs = [srcpeer.lookup(r) for r in rev]
+ # Obtain a lock before checking for or cloning the pooled repo otherwise
+ # 2 clients may race creating or populating it.
+ pooldir = os.path.dirname(sharepath)
+ # lock class requires the directory to exist.
+ try:
+ util.makedir(pooldir, False)
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+
+ poolvfs = scmutil.vfs(pooldir)
basename = os.path.basename(sharepath)
- if os.path.exists(sharepath):
- ui.status(_('(sharing from existing pooled repository %s)\n') %
- basename)
- else:
- ui.status(_('(sharing from new pooled repository %s)\n') % basename)
- # Always use pull mode because hardlinks in share mode don't work well.
- # Never update because working copies aren't necessary in share mode.
- clone(ui, peeropts, source, dest=sharepath, pull=True,
- rev=rev, update=False, stream=stream)
+ with lock.lock(poolvfs, '%s.lock' % basename):
+ if os.path.exists(sharepath):
+ ui.status(_('(sharing from existing pooled repository %s)\n') %
+ basename)
+ else:
+ ui.status(_('(sharing from new pooled repository %s)\n') % basename)
+ # Always use pull mode because hardlinks in share mode don't work
+ # well. Never update because working copies aren't necessary in
+ # share mode.
+ clone(ui, peeropts, source, dest=sharepath, pull=True,
+ rev=rev, update=False, stream=stream)
sharerepo = repository(ui, path=sharepath)
share(ui, sharerepo, dest=dest, update=False, bookmarks=False)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/lockdelay.py Wed Mar 02 16:44:56 2016 -0600
@@ -0,0 +1,26 @@
+# Dummy extension that adds a delay after acquiring a lock.
+#
+# This extension can be used to test race conditions between lock acquisition.
+
+from __future__ import absolute_import
+
+import os
+import time
+
+from mercurial import (
+ lock as lockmod,
+)
+
+class delaylock(lockmod.lock):
+ def lock(self):
+ delay = float(os.environ.get('HGPRELOCKDELAY', '0.0'))
+ if delay:
+ time.sleep(delay)
+ res = super(delaylock, self).lock()
+ delay = float(os.environ.get('HGPOSTLOCKDELAY', '0.0'))
+ if delay:
+ time.sleep(delay)
+ return res
+
+def extsetup(ui):
+ lockmod.lock = delaylock
--- a/tests/test-clone.t Mon Dec 21 22:26:31 2015 -0800
+++ b/tests/test-clone.t Wed Mar 02 16:44:56 2016 -0600
@@ -1036,3 +1036,49 @@
$ hg --config share.pool=share -q clone -e "python \"$TESTDIR/dummyssh\"" a ssh://user@dummy/remote
$ hg -R remote id -r 0
acb14030fe0a
+
+Cloning into pooled storage doesn't race (issue5104)
+
+ $ HGPOSTLOCKDELAY=2.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace1 > race1.log 2>&1 &
+ $ HGPRELOCKDELAY=1.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace2 > race2.log 2>&1
+ $ wait
+
+ $ hg -R share-destrace1 log -r tip
+ changeset: 2:e5bfe23c0b47
+ bookmark: bookA
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: 1a
+
+
+ $ hg -R share-destrace2 log -r tip
+ changeset: 2:e5bfe23c0b47
+ bookmark: bookA
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: 1a
+
+ $ cat race1.log
+ (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 3 changes to 1 files
+ updating working directory
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ searching for changes
+ no changes found
+ adding remote bookmark bookA
+
+ $ cat race2.log
+ (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
+ updating working directory
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ waiting for lock on repository share-destrace2 held by * (glob)
+ got lock after \d+ seconds (re)
+ searching for changes
+ no changes found
+ adding remote bookmark bookA
--- a/tests/test-strip.t Mon Dec 21 22:26:31 2015 -0800
+++ b/tests/test-strip.t Wed Mar 02 16:44:56 2016 -0600
@@ -660,7 +660,7 @@
$ hg strip -b tip
hg strip: option -b not recognized
- hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV...
+ hg strip [-k] [-f] [-B bookmark] [-r] REV...
strip changesets and all their descendants from the repository