Hello community,

here is the log from the commit of package mercurial for openSUSE:Factory 
checked in at 2014-07-23 22:07:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mercurial (Old)
 and      /work/SRC/openSUSE:Factory/.mercurial.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mercurial"

Changes:
--------
--- /work/SRC/openSUSE:Factory/mercurial/mercurial.changes      2014-06-10 
14:38:46.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.mercurial.new/mercurial.changes 2014-07-24 
00:41:24.000000000 +0200
@@ -1,0 +2,17 @@
+Tue Jul 22 14:32:00 UTC 2014 - devel...@develop7.info
+
+- update to v 3.0.2
+  * cmdutil: add copy-filtering support to duplicatecopies
+  * hgweb: avoid initialization race (issue4280)
+  * keyword: suppress keyword expansion for internal merge
+  * match: make glob '**/' match the empty string
+  * p4: accept changesets with no description (issue4282)
+  * parsers.c: fix a couple of memory leaks
+  * push: restore contents of HG_URL for hooks (issue4268)
+  * rebase: fix bug that caused transitive copy records to disappear 
(issue4192)
+  * repoview: do not crash when localtags refers to non existing revisions
+  * resolve: keep wlock while resolving
+  * revlog: hold a private reference to self._cache
+  * revlog: make _chunkcache access atomic
+
+-------------------------------------------------------------------

Old:
----
  mercurial-3.0.1.tar.gz

New:
----
  mercurial-3.0.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.Kg3WoG/_old  2014-07-24 00:41:25.000000000 +0200
+++ /var/tmp/diff_new_pack.Kg3WoG/_new  2014-07-24 00:41:25.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           mercurial
-Version:        3.0.1
+Version:        3.0.2
 Release:        0
 Summary:        Scalable Distributed SCM
 License:        GPL-2.0+

++++++ mercurial-3.0.1.tar.gz -> mercurial-3.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/.hgsigs new/mercurial-3.0.2/.hgsigs
--- old/mercurial-3.0.1/.hgsigs 2014-06-01 23:15:44.000000000 +0200
+++ new/mercurial-3.0.2/.hgsigs 2014-07-02 06:32:18.000000000 +0200
@@ -88,3 +88,4 @@
 3f83fc5cfe715d292069ee8417c83804f6c6c1e4 0 
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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/.hgtags new/mercurial-3.0.2/.hgtags
--- old/mercurial-3.0.1/.hgtags 2014-06-01 23:15:44.000000000 +0200
+++ new/mercurial-3.0.2/.hgtags 2014-07-02 06:32:18.000000000 +0200
@@ -101,3 +101,4 @@
 3f83fc5cfe715d292069ee8417c83804f6c6c1e4 2.9.2
 564f55b251224f16508dd1311452db7780dafe2b 3.0-rc
 2195ac506c6ababe86985b932f4948837c0891b5 3.0
+269c80ee5b3cb3684fa8edc61501b3506d02eb10 3.0.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/PKG-INFO new/mercurial-3.0.2/PKG-INFO
--- old/mercurial-3.0.1/PKG-INFO        2014-06-01 23:15:54.000000000 +0200
+++ new/mercurial-3.0.2/PKG-INFO        2014-07-02 06:32:28.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: mercurial
-Version: 3.0.1
+Version: 3.0.2
 Summary: Fast scalable distributed SCM (revision control, version control) 
system
 Home-page: http://mercurial.selenic.com/
 Author: Matt Mackall and many others
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/hgext/convert/p4.py 
new/mercurial-3.0.2/hgext/convert/p4.py
--- old/mercurial-3.0.1/hgext/convert/p4.py     2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/hgext/convert/p4.py     2014-07-02 06:32:10.000000000 
+0200
@@ -108,7 +108,7 @@
             cmd = "p4 -G describe -s %s" % change
             stdout = util.popen(cmd, mode='rb')
             d = marshal.load(stdout)
-            desc = self.recode(d["desc"])
+            desc = self.recode(d.get("desc", ""))
             shortdesc = desc.split("\n", 1)[0]
             t = '%s %s' % (d["change"], repr(shortdesc)[1:-1])
             ui.status(util.ellipsis(t, 80) + '\n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/hgext/keyword.py 
new/mercurial-3.0.2/hgext/keyword.py
--- old/mercurial-3.0.1/hgext/keyword.py        2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/hgext/keyword.py        2014-07-02 06:32:10.000000000 
+0200
@@ -102,7 +102,8 @@
 
 # hg commands that trigger expansion only when writing to working dir,
 # not when reading filelog, and unexpand when reading from working dir
-restricted = 'merge kwexpand kwshrink record qrecord resolve transplant'
+restricted = ('merge kwexpand kwshrink record qrecord resolve transplant'
+              ' unshelve rebase graft backout histedit fetch')
 
 # names of extensions using dorecord
 recordextensions = 'record'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/hgext/rebase.py 
new/mercurial-3.0.2/hgext/rebase.py
--- old/mercurial-3.0.1/hgext/rebase.py 2014-06-01 23:15:14.000000000 +0200
+++ new/mercurial-3.0.2/hgext/rebase.py 2014-07-02 06:32:10.000000000 +0200
@@ -345,7 +345,16 @@
                                   'resolve, then hg rebase --continue)'))
                     finally:
                         ui.setconfig('ui', 'forcemerge', '', 'rebase')
-                cmdutil.duplicatecopies(repo, rev, target)
+                if collapsef:
+                    cmdutil.duplicatecopies(repo, rev, target)
+                else:
+                    # If we're not using --collapse, we need to
+                    # duplicate copies between the revision we're
+                    # rebasing and its first parent, but *not*
+                    # duplicate any copies that have already been
+                    # performed in the destination.
+                    p1rev = repo[rev].p1().rev()
+                    cmdutil.duplicatecopies(repo, rev, p1rev, skiprev=target)
                 if not collapsef:
                     newrev = concludenode(repo, rev, p1, p2, extrafn=extrafn,
                                           editor=editor)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/i18n/ja.po 
new/mercurial-3.0.2/i18n/ja.po
--- old/mercurial-3.0.1/i18n/ja.po      2014-06-01 23:15:14.000000000 +0200
+++ new/mercurial-3.0.2/i18n/ja.po      2014-07-02 06:32:10.000000000 +0200
@@ -149,8 +149,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-de...@selenic.com>\n"
-"POT-Creation-Date: 2014-05-30 19:32+0900\n"
-"PO-Revision-Date: 2014-05-30 19:43+0900\n"
+"POT-Creation-Date: 2014-06-30 18:45+0900\n"
+"PO-Revision-Date: 2014-06-30 19:03+0900\n"
 "Last-Translator: Japanese translation team <mercurial...@googlegroups.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -15297,6 +15297,10 @@
 msgstr "別名コマンド '%s' には実行対象の記述がありません\n"
 
 #, python-format
+msgid "error in definition for alias '%s': %s\n"
+msgstr "別名コマンド '%s' の定義が不正です: %s\n"
+
+#, python-format
 msgid ""
 "error in definition for alias '%s': %s may only be given on the command "
 "line\n"
@@ -25204,8 +25208,8 @@
 msgstr "サブリポジトリの連携先が見つかりません"
 
 #, python-format
-msgid "warning: removing potentially hostile .hg/hgrc in '%s'"
-msgstr "警告: '%s' 中の .hg/hgrc は潜在的な問題となりえるため破棄します"
+msgid "warning: removing potentially hostile 'hgrc' in '%s'\n"
+msgstr "警告: 潜在的な問題となりえる '%s' 中の hgrc ファイルを破棄します\n"
 
 #, python-format
 msgid "unknown subrepo type %s"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/i18n/pt_BR.po 
new/mercurial-3.0.2/i18n/pt_BR.po
--- old/mercurial-3.0.1/i18n/pt_BR.po   2014-06-01 23:15:14.000000000 +0200
+++ new/mercurial-3.0.2/i18n/pt_BR.po   2014-07-02 06:32:10.000000000 +0200
@@ -8265,13 +8265,13 @@
 msgid "empty \"rev\" revision set - nothing to rebase\n"
 msgstr "conjunto de revisões \"rev\" vazio - nada para rebasear\n"
 
-msgid "empty \"source\" revision set - nothing to rebase"
-msgstr "conjunto de revisões \"fonte\" vazio - nada para rebasear"
+msgid "empty \"source\" revision set - nothing to rebase\n"
+msgstr "conjunto de revisões \"fonte\" vazio - nada para rebasear\n"
 
-msgid "empty \"base\" revision set - can't compute rebase set"
+msgid "empty \"base\" revision set - can't compute rebase set\n"
 msgstr ""
 "conjunto de revisões \"base\" vazio - não é possível calcular o conjunto de "
-"rebaseamento"
+"rebaseamento\n"
 
 #, python-format
 msgid "nothing to rebase - %s is both \"base\" and destination\n"
@@ -15604,6 +15604,10 @@
 msgstr "nenhuma definição para o apelido '%s'\n"
 
 #, python-format
+msgid "error in definition for alias '%s': %s\n"
+msgstr "erro na definição do apelido '%s': %s\n"
+
+#, python-format
 msgid ""
 "error in definition for alias '%s': %s may only be given on the command "
 "line\n"
@@ -24133,31 +24137,35 @@
 msgid "note: possible conflict - %s was deleted and renamed to:\n"
 msgstr "nota: possível conflito - %s foi apagado e renomeado para:\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "note: merging %s and %s using bids from ancestors %s\n"
-msgstr ""
+msgstr "nota: mesclando %s e %s usando lances dos ancestrais %s\n"
 
 #, python-format
 msgid ""
 "\n"
 "calculating bids for ancestor %s\n"
 msgstr ""
+"\n"
+"calculando lances para o ancestral %s\n"
 
 msgid ""
 "\n"
 "auction for merging merge bids\n"
 msgstr ""
+"\n"
+"leilão para mesclar lances de mesclagem\n"
 
 #, python-format
 msgid " %s: multiple bids for merge action:\n"
-msgstr ""
+msgstr " %s: múltiplos lances para ação de mesclagem:\n"
 
 #, python-format
 msgid " %s: ambiguous merge - picked %s action\n"
-msgstr ""
+msgstr " %s: mesclagem ambígua - escolhida a ação %s\n"
 
 msgid "end of auction"
-msgstr ""
+msgstr "fim do leilão"
 
 #, python-format
 msgid ""
@@ -25737,8 +25745,8 @@
 msgstr "o caminho padrão para o sub-repositório não foi encontrado"
 
 #, python-format
-msgid "warning: removing potentially hostile .hg/hgrc in '%s'"
-msgstr "aviso: removendo .hg/hgrc potencialmente hostil em '%s'"
+msgid "warning: removing potentially hostile 'hgrc' in '%s'\n"
+msgstr "aviso: removendo 'hgrc' potencialmente hostil em '%s'\n"
 
 #, python-format
 msgid "unknown subrepo type %s"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/__version__.py 
new/mercurial-3.0.2/mercurial/__version__.py
--- old/mercurial-3.0.1/mercurial/__version__.py        2014-06-01 
23:15:52.000000000 +0200
+++ new/mercurial-3.0.2/mercurial/__version__.py        2014-07-02 
06:32:26.000000000 +0200
@@ -1,2 +1,2 @@
 # this file is autogenerated by setup.py
-version = "3.0.1"
+version = "3.0.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/cmdutil.py 
new/mercurial-3.0.2/mercurial/cmdutil.py
--- old/mercurial-3.0.1/mercurial/cmdutil.py    2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/mercurial/cmdutil.py    2014-07-02 06:32:10.000000000 
+0200
@@ -1913,11 +1913,22 @@
 
     return err
 
-def duplicatecopies(repo, rev, fromrev):
-    '''reproduce copies from fromrev to rev in the dirstate'''
+def duplicatecopies(repo, rev, fromrev, skiprev=None):
+    '''reproduce copies from fromrev to rev in the dirstate
+
+    If skiprev is specified, it's a revision that should be used to
+    filter copy records. Any copies that occur between fromrev and
+    skiprev will not be duplicated, even if they appear in the set of
+    copies between fromrev and rev.
+    '''
+    exclude = {}
+    if skiprev is not None:
+        exclude = copies.pathcopies(repo[fromrev], repo[skiprev])
     for dst, src in copies.pathcopies(repo[fromrev], repo[rev]).iteritems():
         # copies.pathcopies returns backward renames, so dst might not
         # actually be in the dirstate
+        if dst in exclude:
+            continue
         if repo.dirstate[dst] in "nma":
             repo.dirstate.copy(src, dst)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/commands.py 
new/mercurial-3.0.2/mercurial/commands.py
--- old/mercurial-3.0.1/mercurial/commands.py   2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/mercurial/commands.py   2014-07-02 06:32:10.000000000 
+0200
@@ -4927,44 +4927,49 @@
         raise util.Abort(_('no files or directories specified; '
                            'use --all to remerge all files'))
 
-    ms = mergemod.mergestate(repo)
-    m = scmutil.match(repo[None], pats, opts)
-    ret = 0
-
-    for f in ms:
-        if m(f):
-            if show:
-                if nostatus:
-                    ui.write("%s\n" % f)
+    wlock = repo.wlock()
+    try:
+        ms = mergemod.mergestate(repo)
+        m = scmutil.match(repo[None], pats, opts)
+        ret = 0
+
+        for f in ms:
+            if m(f):
+                if show:
+                    if nostatus:
+                        ui.write("%s\n" % f)
+                    else:
+                        ui.write("%s %s\n" % (ms[f].upper(), f),
+                                 label='resolve.' +
+                                 {'u': 'unresolved', 'r': 'resolved'}[ms[f]])
+                elif mark:
+                    ms.mark(f, "r")
+                elif unmark:
+                    ms.mark(f, "u")
                 else:
-                    ui.write("%s %s\n" % (ms[f].upper(), f),
-                             label='resolve.' +
-                             {'u': 'unresolved', 'r': 'resolved'}[ms[f]])
-            elif mark:
-                ms.mark(f, "r")
-            elif unmark:
-                ms.mark(f, "u")
-            else:
-                wctx = repo[None]
-
-                # backup pre-resolve (merge uses .orig for its own purposes)
-                a = repo.wjoin(f)
-                util.copyfile(a, a + ".resolve")
-
-                try:
-                    # resolve file
-                    ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
-                                 'resolve')
-                    if ms.resolve(f, wctx):
-                        ret = 1
-                finally:
-                    ui.setconfig('ui', 'forcemerge', '', 'resolve')
-                    ms.commit()
+                    wctx = repo[None]
 
-                # replace filemerge's .orig file with our resolve file
-                util.rename(a + ".resolve", a + ".orig")
+                    # backup pre-resolve (merge uses .orig for its own 
purposes)
+                    a = repo.wjoin(f)
+                    util.copyfile(a, a + ".resolve")
+
+                    try:
+                        # resolve file
+                        ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
+                                     'resolve')
+                        if ms.resolve(f, wctx):
+                            ret = 1
+                    finally:
+                        ui.setconfig('ui', 'forcemerge', '', 'resolve')
+                        ms.commit()
+
+                    # replace filemerge's .orig file with our resolve file
+                    util.rename(a + ".resolve", a + ".orig")
+
+        ms.commit()
+    finally:
+        wlock.release()
 
-    ms.commit()
     return ret
 
 @command('revert',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/exchange.py 
new/mercurial-3.0.2/mercurial/exchange.py
--- old/mercurial-3.0.1/mercurial/exchange.py   2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/mercurial/exchange.py   2014-07-02 06:32:10.000000000 
+0200
@@ -286,7 +286,7 @@
         # ssh: return remote's addchangegroup()
         # http: return remote's addchangegroup() or 0 for error
         pushop.ret = pushop.remote.unbundle(cg, remoteheads,
-                                            'push')
+                                            pushop.repo.url())
     else:
         # we return an integer indicating remote head count
         # change
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/hgweb/hgweb_mod.py 
new/mercurial-3.0.2/mercurial/hgweb/hgweb_mod.py
--- old/mercurial-3.0.1/mercurial/hgweb/hgweb_mod.py    2014-06-01 
23:15:14.000000000 +0200
+++ new/mercurial-3.0.2/mercurial/hgweb/hgweb_mod.py    2014-07-02 
06:32:10.000000000 +0200
@@ -109,8 +109,6 @@
         # compare changelog size in addition to mtime to catch
         # rollbacks made less than a second ago
         if st.st_mtime != self.mtime or st.st_size != self.size:
-            self.mtime = st.st_mtime
-            self.size = st.st_size
             r = hg.repository(self.repo.baseui, self.repo.root)
             self.repo = self._getview(r)
             self.maxchanges = int(self.config("web", "maxchanges", 10))
@@ -121,6 +119,9 @@
             self.allowpull = self.configbool("web", "allowpull", True)
             encoding.encoding = self.config("web", "encoding",
                                             encoding.encoding)
+            # update these last to avoid threads seeing empty settings
+            self.mtime = st.st_mtime
+            self.size = st.st_size
         if request:
             self.repo.ui.environ = request.env
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/match.py 
new/mercurial-3.0.2/mercurial/match.py
--- old/mercurial-3.0.1/mercurial/match.py      2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/mercurial/match.py      2014-07-02 06:32:10.000000000 
+0200
@@ -233,6 +233,10 @@
     [^/]*
     >>> print _globre(r'**')
     .*
+    >>> print _globre(r'**/a')
+    (?:.*/)?a
+    >>> print _globre(r'a/**/b')
+    a\/(?:.*/)?b
     >>> print _globre(r'[a*?!^][^b][!c]')
     [a*?!^][\^b][^c]
     >>> print _globre(r'{a,b}')
@@ -254,7 +258,11 @@
         elif c == '*':
             if peek() == '*':
                 i += 1
-                res += '.*'
+                if peek() == '/':
+                    i += 1
+                    res += '(?:.*/)?'
+                else:
+                    res += '.*'
             else:
                 res += '[^/]*'
         elif c == '?':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/parsers.c 
new/mercurial-3.0.2/mercurial/parsers.c
--- old/mercurial-3.0.1/mercurial/parsers.c     2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/mercurial/parsers.c     2014-07-02 06:32:10.000000000 
+0200
@@ -1299,7 +1299,7 @@
        static const Py_ssize_t capacity = 24;
        int *depth, *interesting = NULL;
        int i, j, v, ninteresting;
-       PyObject *dict = NULL, *keys;
+       PyObject *dict = NULL, *keys = NULL;
        long *seen = NULL;
        int maxrev = -1;
        long final;
@@ -1403,8 +1403,10 @@
                final |= i;
                j -= 1;
        }
-       if (final == 0)
-               return PyList_New(0);
+       if (final == 0) {
+               keys = PyList_New(0);
+               goto bail;
+       }
 
        dict = PyDict_New();
        if (dict == NULL)
@@ -1428,19 +1430,13 @@
 
        keys = PyDict_Keys(dict);
 
-       free(depth);
-       free(seen);
-       free(interesting);
-       Py_DECREF(dict);
-
-       return keys;
 bail:
        free(depth);
        free(seen);
        free(interesting);
        Py_XDECREF(dict);
 
-       return NULL;
+       return keys;
 }
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/revlog.py 
new/mercurial-3.0.2/mercurial/revlog.py
--- old/mercurial-3.0.1/mercurial/revlog.py     2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/mercurial/revlog.py     2014-07-02 06:32:10.000000000 
+0200
@@ -919,8 +919,13 @@
 
         # preload the cache
         try:
-            self._chunkraw(revs[0], revs[-1])
-            offset, data = self._chunkcache
+            while True:
+                # ensure that the cache doesn't change out from under us
+                _cache = self._chunkcache
+                self._chunkraw(revs[0], revs[-1])
+                if _cache == self._chunkcache:
+                    break
+            offset, data = _cache
         except OverflowError:
             # issue4215 - we can't cache a run of chunks greater than
             # 2G on Windows
@@ -967,13 +972,14 @@
             node = nodeorrev
             rev = None
 
+        _cache = self._cache # grab local copy of cache to avoid thread race
         cachedrev = None
         if node == nullid:
             return ""
-        if self._cache:
-            if self._cache[0] == node:
-                return self._cache[2]
-            cachedrev = self._cache[1]
+        if _cache:
+            if _cache[0] == node:
+                return _cache[2]
+            cachedrev = _cache[1]
 
         # look up what we need to read
         text = None
@@ -1001,7 +1007,7 @@
 
         if iterrev == cachedrev:
             # cache hit
-            text = self._cache[2]
+            text = _cache[2]
         else:
             chain.append(iterrev)
         chain.reverse()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/mercurial/tags.py 
new/mercurial-3.0.2/mercurial/tags.py
--- old/mercurial-3.0.1/mercurial/tags.py       2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/mercurial/tags.py       2014-07-02 06:32:10.000000000 
+0200
@@ -72,6 +72,15 @@
     filetags = _readtags(
         ui, repo, data.splitlines(), "localtags",
         recode=encoding.fromlocal)
+
+    # remove tags pointing to invalid nodes
+    cl = repo.changelog
+    for t in filetags.keys():
+        try:
+            cl.rev(filetags[t][0])
+        except (LookupError, ValueError):
+            del filetags[t]
+
     _updatetags(filetags, "local", alltags, tagtypes)
 
 def _readtags(ui, repo, lines, fn, recode=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/tests/test-fncache.t 
new/mercurial-3.0.2/tests/test-fncache.t
--- old/mercurial-3.0.1/tests/test-fncache.t    2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/tests/test-fncache.t    2014-07-02 06:32:10.000000000 
+0200
@@ -227,7 +227,7 @@
   > cmdtable = {}
   > 
   > EOF
-  $ rm "${extpath}c"
+  $ rm -f "${extpath}c"
   $ touch z
   $ hg ci -qAm z
   transaction abort!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/tests/test-hgignore.t 
new/mercurial-3.0.2/tests/test-hgignore.t
--- old/mercurial-3.0.1/tests/test-hgignore.t   2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/tests/test-hgignore.t   2014-07-02 06:32:10.000000000 
+0200
@@ -134,3 +134,17 @@
   ? a.c
   ? a.o
   ? syntax
+
+Check recursive glob pattern matches no directories (dir/**/c.o matches 
dir/c.o)
+
+  $ echo "syntax: glob" > .hgignore
+  $ echo "dir/**/c.o" >> .hgignore
+  $ touch dir/c.o
+  $ mkdir dir/subdir
+  $ touch dir/subdir/c.o
+  $ hg status
+  A dir/b.o
+  ? .hgignore
+  ? a.c
+  ? a.o
+  ? syntax
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/tests/test-keyword.t 
new/mercurial-3.0.2/tests/test-keyword.t
--- old/mercurial-3.0.1/tests/test-keyword.t    2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/tests/test-keyword.t    2014-07-02 06:32:10.000000000 
+0200
@@ -1137,6 +1137,7 @@
 
 Now disable keyword expansion
 
+  $ cp $HGRCPATH $HGRCPATH.backup
   $ rm "$HGRCPATH"
   $ cat a b
   expand $Id$
@@ -1152,4 +1153,158 @@
   ignore $Id$
   a
 
+enable keyword expansion again
+
+  $ cat $HGRCPATH.backup >> $HGRCPATH
+
+Test restricted mode with unshelve
+
+  $ cat <<EOF >> $HGRCPATH
+  > [extensions]
+  > shelve =
+  > EOF
+
+  $ echo xxxx >> a
+  $ hg diff
+  diff -r 800511b3a22d a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      * (glob)
+  @@ -2,3 +2,4 @@
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  +xxxx
+  $ hg shelve -q --name tmp
+  $ hg shelve --list --patch
+  tmp             (*)    changes to 'localresolve' (glob)
+  
+  diff --git a/a b/a
+  --- a/a
+  +++ b/a
+  @@ -2,3 +2,4 @@
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  +xxxx
+
+  $ hg update -q -C 10
+  $ hg unshelve -q tmp
+  $ hg diff
+  diff -r 4aa30d025d50 a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      * (glob)
+  @@ -3,3 +3,4 @@
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  +xxxx
+
+Test restricted mode with rebase
+
+  $ cat <<EOF >> $HGRCPATH
+  > [extensions]
+  > rebase =
+  > EOF
+
+  $ hg update -q -C 9
+
+  $ echo xxxx >> a
+  $ hg commit -m '#11'
+  $ hg diff -c 11
+  diff -r 800511b3a22d -r b07670694489 a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      Thu Jan 01 00:00:00 1970 +0000
+  @@ -2,3 +2,4 @@
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  +xxxx
+
+  $ hg diff -c 10
+  diff -r 27d48ee14f67 -r 4aa30d025d50 a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,3 +1,4 @@
+  +foobranch
+   expand $Id$
+   do not process $Id:
+   xxx $
+
+  $ hg rebase -q -s 10 -d 11 --keep
+  $ hg diff -r 9 -r 12 a
+  diff -r 800511b3a22d -r 1939b927726c a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,4 +1,6 @@
+  +foobranch
+   expand $Id$
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  +xxxx
+
+Test restricted mode with graft
+
+  $ hg graft -q 10
+  $ hg diff -r 9 -r 13 a
+  diff -r 800511b3a22d -r 01a68de1003a a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,4 +1,6 @@
+  +foobranch
+   expand $Id$
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  +xxxx
+
+Test restricted mode with backout
+
+  $ hg backout -q 11
+  $ hg diff a
+  diff -r 01a68de1003a a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      * (glob)
+  @@ -3,4 +3,3 @@
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  -xxxx
+
+Test restricted mode with histedit
+
+  $ cat <<EOF >> $HGRCPATH
+  > [extensions]
+  > histedit =
+  > EOF
+
+  $ hg commit -m 'backout #11'
+  $ hg histedit -q --command - 13 <<EOF
+  > pick 49f5f2d940c3 14 backout #11
+  > pick 01a68de1003a 13 9foobranch
+  > EOF
+
+Test restricted mode with fetch (with merge)
+
+  $ cat <<EOF >> $HGRCPATH
+  > [extensions]
+  > fetch =
+  > EOF
+
+  $ hg clone -q -r 9 . ../fetch-merge
+  $ cd ../fetch-merge
+  $ hg -R ../Test export 10 | hg import -q -
+  $ hg fetch -q -r 11
+  $ hg diff -r 9 a
+  diff -r 800511b3a22d a
+  --- a/a      Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a      * (glob)
+  @@ -1,4 +1,6 @@
+  +foobranch
+   expand $Id$
+   do not process $Id:
+   xxx $
+   $Xinfo$
+  +xxxx
+
   $ cd ..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/tests/test-obsolete.t 
new/mercurial-3.0.2/tests/test-obsolete.t
--- old/mercurial-3.0.1/tests/test-obsolete.t   2014-06-01 23:15:14.000000000 
+0200
+++ new/mercurial-3.0.2/tests/test-obsolete.t   2014-07-02 06:32:10.000000000 
+0200
@@ -907,3 +907,15 @@
      date:        Thu Jan 01 00:00:00 1970 +0000
      summary:     A
   
+Test that removing a local tag does not cause some commands to fail
+
+  $ hg tag -l -r tip tiptag
+  $ hg tags
+  tiptag                             2:3816541e5485
+  tip                                2:3816541e5485
+  visible                            0:193e9254ce7e
+  $ hg --config extensions.strip= strip -r tip --no-backup
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg tags
+  visible                            0:193e9254ce7e
+  tip                                0:193e9254ce7e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/tests/test-rebase-rename.t 
new/mercurial-3.0.2/tests/test-rebase-rename.t
--- old/mercurial-3.0.1/tests/test-rebase-rename.t      2014-06-01 
23:15:14.000000000 +0200
+++ new/mercurial-3.0.2/tests/test-rebase-rename.t      2014-07-02 
06:32:10.000000000 +0200
@@ -240,3 +240,84 @@
    1 files changed, 1 insertions(+), 0 deletions(-)
 
   $ cd ..
+
+Verify that copies get preserved (issue4192).
+  $ hg init copy-gets-preserved
+  $ cd copy-gets-preserved
+
+  $ echo a > a
+  $ hg add a
+  $ hg commit --message "File a created"
+  $ hg copy a b
+  $ echo b > b
+  $ hg commit --message "File b created as copy of a and modified"
+  $ hg copy b c
+  $ echo c > c
+  $ hg commit --message "File c created as copy of b and modified"
+  $ hg copy c d
+  $ echo d > d
+  $ hg commit --message "File d created as copy of c and modified"
+
+Note that there are four entries in the log for d
+  $ hg tglog --follow d
+  @  3: 'File d created as copy of c and modified'
+  |
+  o  2: 'File c created as copy of b and modified'
+  |
+  o  1: 'File b created as copy of a and modified'
+  |
+  o  0: 'File a created'
+  
+Update back to before we performed copies, and inject an unrelated change.
+  $ hg update 0
+  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+
+  $ echo unrelated > unrelated
+  $ hg add unrelated
+  $ hg commit --message "Unrelated file created"
+  created new head
+  $ hg update 4
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+Rebase the copies on top of the unrelated change.
+  $ hg rebase --source 1 --dest 4
+  saved backup bundle to $TESTTMP/copy-gets-preserved/.hg/*.hg (glob)
+  $ hg update 4
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+There should still be four entries in the log for d
+  $ hg tglog --follow d
+  @  4: 'File d created as copy of c and modified'
+  |
+  o  3: 'File c created as copy of b and modified'
+  |
+  o  2: 'File b created as copy of a and modified'
+  |
+  o  0: 'File a created'
+  
+Same steps as above, but with --collapse on rebase to make sure the
+copy records collapse correctly.
+  $ hg co 1
+  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+  $ echo more >> unrelated
+  $ hg ci -m 'unrelated commit is unrelated'
+  created new head
+  $ hg rebase -s 2 --dest 5 --collapse
+  merging b and c to c
+  merging c and d to d
+  saved backup bundle to $TESTTMP/copy-gets-preserved/.hg/*.hg (glob)
+  $ hg co tip
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+This should show both revision 3 and 0 since 'd' was transitively a
+copy of 'a'.
+
+  $ hg tglog --follow d
+  @  3: 'Collapsed revision
+  |  * File b created as copy of a and modified
+  |  * File c created as copy of b and modified
+  |  * File d created as copy of c and modified'
+  o  0: 'File a created'
+  
+
+  $ cd ..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.0.1/tests/test-subrepo-git.t 
new/mercurial-3.0.2/tests/test-subrepo-git.t
--- old/mercurial-3.0.1/tests/test-subrepo-git.t        2014-06-01 
23:15:14.000000000 +0200
+++ new/mercurial-3.0.2/tests/test-subrepo-git.t        2014-07-02 
06:32:10.000000000 +0200
@@ -601,11 +601,9 @@
   8:3473d20bddcf
   $ grep ' s$' .hgsubstate
   c4069473b459cf27fd4d7c2f50c4346b4e936599 s
-  $ cat s/.hg/hgrc
-  cat: s/.hg/hgrc: No such file or directory
+  $ test -f s/.hg/hgrc
   [1]
-  $ cat s/sub/.hg/hgrc
-  cat: s/sub/.hg/hgrc: No such file or directory
+  $ test -f s/sub/.hg/hgrc
   [1]
   $ cd ..
 
@@ -636,11 +634,9 @@
 
   $ cd tc
   $ hg update -q -C af6d2edbb0d3
-  $ cat s/.hg/hgrc
-  cat: s/.hg/hgrc: No such file or directory
+  $ test -f s/.hg/hgrc
   [1]
-  $ cat s/sub/.hg/hgrc
-  cat: s/sub/.hg/hgrc: No such file or directory
+  $ test -f s/sub/.hg/hgrc
   [1]
   $ cd ..
   $ hg -R tc pull -q
@@ -652,11 +648,9 @@
   9:ed23f7fe024e
   $ grep ' s$' .hgsubstate
   f262643c1077219fbd3858d54e78ef050ef84fbf s
-  $ cat s/.hg/hgrc
-  cat: s/.hg/hgrc: No such file or directory
+  $ test -f s/.hg/hgrc
   [1]
-  $ cat s/sub/.hg/hgrc
-  cat: s/sub/.hg/hgrc: No such file or directory
+  $ test -f s/sub/.hg/hgrc
   [1]
 
 Test that sanitizing is omitted in meta data area:

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to