Hello community,

here is the log from the commit of package mercurial for openSUSE:Factory 
checked in at 2015-03-05 15:40:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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      2015-02-05 
11:01:28.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mercurial.new/mercurial.changes 2015-03-05 
18:16:29.000000000 +0100
@@ -1,0 +2,20 @@
+Tue Mar  3 13:04:29 UTC 2015 - devel...@develop7.info
+
+- update to v3.3.2
+  An unscheduled bugfix release to fix the fix.
+  + transaction: really disable hardlink backups (issue4546)
+
+- update to v3.3.1
+  This is a regularly scheduled bugfix release. It fixes a significant 
regression with transactions on Windows network shares.
+  + dispatch: work around UnicodeDecodeError caused by SSLError of Python 2.7.9
+  + hgweb: recreate old DOM structure for css in monoblue style
+  + largefiles: access to specific fields only if largefiles enabled 
(issue4547)
+  + log: fix json-formatted output when file copies are listed (issue4523)
+  + repoview: invalidate cached changelog if _delayed changes (issue4549)
+  + revisionbranchcache: fall back to slow path if starting readonly 
(issue4531)
+  + revset: mask specific names for named() predicate
+  + shellquote: fix missing quotes for empty string
+  + templatekw: fix {join(bookmarks, sep)} to always show associated bookmarks
+  + transaction: disable hardlink backups (issue4546)
+
+-------------------------------------------------------------------

Old:
----
  mercurial-3.3.tar.gz

New:
----
  mercurial-3.3.2.tar.gz

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

Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.NjG9AX/_old  2015-03-05 18:16:30.000000000 +0100
+++ /var/tmp/diff_new_pack.NjG9AX/_new  2015-03-05 18:16:30.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           mercurial
-Version:        3.3
+Version:        3.3.2
 Release:        0
 Summary:        Scalable Distributed SCM
 License:        GPL-2.0+

++++++ mercurial-3.3.tar.gz -> mercurial-3.3.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/.hgsigs new/mercurial-3.3.2/.hgsigs
--- old/mercurial-3.3/.hgsigs   2015-02-02 03:21:03.000000000 +0100
+++ new/mercurial-3.3.2/.hgsigs 2015-03-02 17:29:45.000000000 +0100
@@ -101,3 +101,5 @@
 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/.hgtags new/mercurial-3.3.2/.hgtags
--- old/mercurial-3.3/.hgtags   2015-02-02 03:21:03.000000000 +0100
+++ new/mercurial-3.3.2/.hgtags 2015-03-02 17:29:45.000000000 +0100
@@ -114,3 +114,5 @@
 6dad422ecc5adb63d9fa649eeb8e05a5f9bc4900 3.2.3
 1265a3a71d75396f5d4cf6935ae7d9ba5407a547 3.2.4
 db8e3f7948b1fdeb9ad12d448fc3525759908b9f 3.3-rc
+fbdd5195528fae4f41feebc1838215c110b25d6a 3.3
+5b4ed033390bf6e2879c8f5c28c84e1ee3b87231 3.3.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/PKG-INFO new/mercurial-3.3.2/PKG-INFO
--- old/mercurial-3.3/PKG-INFO  2015-02-02 03:21:13.000000000 +0100
+++ new/mercurial-3.3.2/PKG-INFO        2015-03-02 17:29:55.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: mercurial
-Version: 3.3
+Version: 3.3.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.3/hgext/largefiles/lfutil.py 
new/mercurial-3.3.2/hgext/largefiles/lfutil.py
--- old/mercurial-3.3/hgext/largefiles/lfutil.py        2015-02-02 
03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/hgext/largefiles/lfutil.py      2015-03-02 
17:29:40.000000000 +0100
@@ -577,7 +577,7 @@
     Otherwise, this returns the function to always write out (or
     ignore if ``not forcibly``) status.
     '''
-    if forcibly is None:
+    if forcibly is None and util.safehasattr(repo, '_largefilesenabled'):
         return repo._lfstatuswriters[-1]
     else:
         if forcibly:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/hgext/largefiles/overrides.py 
new/mercurial-3.3.2/hgext/largefiles/overrides.py
--- old/mercurial-3.3/hgext/largefiles/overrides.py     2015-02-02 
03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/hgext/largefiles/overrides.py   2015-03-02 
17:29:40.000000000 +0100
@@ -832,6 +832,9 @@
     return result
 
 def overriderebase(orig, ui, repo, **opts):
+    if not util.safehasattr(repo, '_largefilesenabled'):
+        return orig(ui, repo, **opts)
+
     resuming = opts.get('continue')
     repo._lfcommithooks.append(lfutil.automatedcommithook(resuming))
     repo._lfstatuswriters.append(lambda *msg, **opts: None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/hgext/largefiles/reposetup.py 
new/mercurial-3.3.2/hgext/largefiles/reposetup.py
--- old/mercurial-3.3/hgext/largefiles/reposetup.py     2015-02-02 
03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/hgext/largefiles/reposetup.py   2015-03-02 
17:29:40.000000000 +0100
@@ -24,6 +24,9 @@
         return
 
     class lfilesrepo(repo.__class__):
+        # the mark to examine whether "repo" object enables largefiles or not
+        _largefilesenabled = True
+
         lfstatus = False
         def status_nolfiles(self, *args, **kwargs):
             return super(lfilesrepo, self).status(*args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/i18n/ja.po 
new/mercurial-3.3.2/i18n/ja.po
--- old/mercurial-3.3/i18n/ja.po        2015-02-02 03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/i18n/ja.po      2015-03-02 17:29:40.000000000 +0100
@@ -149,8 +149,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-de...@selenic.com>\n"
-"POT-Creation-Date: 2015-01-31 23:43+0900\n"
-"PO-Revision-Date: 2015-02-01 08:15+0900\n"
+"POT-Creation-Date: 2015-02-28 17:53+0900\n"
+"PO-Revision-Date: 2015-03-01 01:23+0900\n"
 "Last-Translator: Japanese translation team <mercurial...@googlegroups.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -24938,13 +24938,13 @@
 msgid "parsing obsolete marker: unknown version %r"
 msgstr "廃止情報解析: 未知のリビジョン %r"
 
+msgid "bad obsolescence marker detected: invalid successors nullid"
+msgstr "不正な廃止情報を検出: 後継としての null 指定は不正です"
+
 #, python-format
 msgid "in-marker cycle with %s"
 msgstr "マーカ %s における循環参照があります"
 
-msgid "bad obsolescence marker detected: invalid successors nullid"
-msgstr "不正な廃止情報を検出: 後継としての null 指定は不正です"
-
 #, python-format
 msgid "unknown key: %r"
 msgstr "未知のキーです: %r"
@@ -25559,6 +25559,9 @@
 "we'll\n"
 "    work around it to return a non-filtered value."
 msgstr ""
+"    不可視なリビジョンが該当する場合は、 別な可視リビジョンが無いか、\n"
+"    ある程度の事後処理が実施されます (※ 訳注: 代替リビジョンの返却は、\n"
+"    未保証です)"
 
 #. i18n: "filelog" is a keyword
 msgid "filelog requires a pattern"
@@ -26990,6 +26993,9 @@
 msgid ":subrepos: List of strings. Updated subrepositories in the changeset."
 msgstr ":subrepos: 文字列挙。 当該リビジョンで更新されたサブリポジトリ名。"
 
+msgid ":tags: List of strings. Any tags associated with the changeset."
+msgstr ":tags: 文字列列挙。 当該リビジョンに付与されたタグの一覧。"
+
 msgid ""
 ":parents: List of strings. The parents of the changeset in \"rev:node\"\n"
 "    format. If the changeset has only one \"natural\" parent (the "
@@ -27591,6 +27597,3 @@
 
 msgid "number of cpus must be an integer"
 msgstr "CPU 数には数値を指定してください"
-
-msgid ":tags: List of strings. Any tags associated with the changeset."
-msgstr ":tags: 文字列列挙。 当該リビジョンに付与されたタグの一覧。"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/i18n/pt_BR.po 
new/mercurial-3.3.2/i18n/pt_BR.po
--- old/mercurial-3.3/i18n/pt_BR.po     2015-02-02 03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/i18n/pt_BR.po   2015-03-02 17:29:40.000000000 +0100
@@ -25509,15 +25509,15 @@
 msgid "parsing obsolete marker: unknown version %r"
 msgstr "decodificando marcações de obsolescência: versão desconhecida %r"
 
-#, python-format
-msgid "in-marker cycle with %s"
-msgstr "ciclo nos marcadores com %s"
-
 msgid "bad obsolescence marker detected: invalid successors nullid"
 msgstr ""
 "marcação de obsolescência inválida detectada: sucessores nullid inválidos"
 
 #, python-format
+msgid "in-marker cycle with %s"
+msgstr "ciclo nos marcadores com %s"
+
+#, python-format
 msgid "unknown key: %r"
 msgstr "chave desconhecida: %r"
 
@@ -25690,8 +25690,9 @@
 msgstr "morto pelo sinal %d"
 
 #, python-format
-msgid "unknown strip-bundle2-version value %r; "
-msgstr "valor desconhecido de strip-bundle2-version %r; "
+msgid "unknown strip-bundle2-version value %r; should be one of %r\n"
+msgstr ""
+"valor desconhecido de strip-bundle2-version %r; deveria ser um dentre %r\n"
 
 #, python-format
 msgid "saved backup bundle to %s\n"
@@ -27610,6 +27611,9 @@
 msgid ":subrepos: List of strings. Updated subrepositories in the changeset."
 msgstr ":subrepos: Lista de strings. Sub-repositórios atualizados na revisão."
 
+msgid ":tags: List of strings. Any tags associated with the changeset."
+msgstr ":tags: Lista de strings. Quaisquer etiquetas associadas à revisão."
+
 msgid ""
 ":parents: List of strings. The parents of the changeset in \"rev:node\"\n"
 "    format. If the changeset has only one \"natural\" parent (the 
predecessor\n"
@@ -28249,6 +28253,3 @@
 
 #~ msgid "graft for revision %s is empty\n"
 #~ msgstr "o enxerto para a revisão %s é vazio\n"
-
-#~ msgid ":tags: List of strings. Any tags associated with the changeset."
-#~ msgstr ":tags: Lista de strings. Quaisquer etiquetas associadas à revisão."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/__version__.py 
new/mercurial-3.3.2/mercurial/__version__.py
--- old/mercurial-3.3/mercurial/__version__.py  2015-02-02 03:21:12.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/__version__.py        2015-03-02 
17:29:53.000000000 +0100
@@ -1,2 +1,2 @@
 # this file is autogenerated by setup.py
-version = "3.3"
+version = "3.3.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/branchmap.py 
new/mercurial-3.3.2/mercurial/branchmap.py
--- old/mercurial-3.3/mercurial/branchmap.py    2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/branchmap.py  2015-03-02 17:29:40.000000000 
+0100
@@ -330,7 +330,7 @@
     and will grow with it but be 1/8th of its size.
     """
 
-    def __init__(self, repo):
+    def __init__(self, repo, readonly=True):
         assert repo.filtername is None
         self._names = [] # branch names in local encoding with static index
         self._rbcrevs = array('c') # structs of type _rbcrecfmt
@@ -342,6 +342,10 @@
         except (IOError, OSError), inst:
             repo.ui.debug("couldn't read revision branch cache names: %s\n" %
                           inst)
+            if readonly:
+                # don't try to use cache - fall back to the slow path
+                self.branchinfo = self._branchinfo
+
         if self._names:
             try:
                 data = repo.vfs.read(_rbcrevs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/cmdutil.py 
new/mercurial-3.3.2/mercurial/cmdutil.py
--- old/mercurial-3.3/mercurial/cmdutil.py      2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/cmdutil.py    2015-03-02 17:29:40.000000000 
+0100
@@ -1091,8 +1091,8 @@
 
             if copies:
                 self.ui.write(',\n  "copies": {%s}' %
-                              ", ".join('"%s": %s' % (j(k), j(copies[k]))
-                                                      for k in copies))
+                              ", ".join('"%s": "%s"' % (j(k), j(v))
+                                                        for k, v in copies))
 
         matchfn = self.matchfn
         if matchfn:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/dispatch.py 
new/mercurial-3.3.2/mercurial/dispatch.py
--- old/mercurial-3.3/mercurial/dispatch.py     2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/dispatch.py   2015-03-02 17:29:40.000000000 
+0100
@@ -230,6 +230,9 @@
             except (AttributeError, IndexError):
                 # it might be anything, for example a string
                 reason = inst.reason
+            if isinstance(reason, unicode):
+                # SSLError of Python 2.7.9 contains a unicode
+                reason = reason.encode(encoding.encoding, 'replace')
             ui.warn(_("abort: error: %s\n") % reason)
         elif (util.safehasattr(inst, "args")
               and inst.args and inst.args[0] == errno.EPIPE):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/namespaces.py 
new/mercurial-3.3.2/mercurial/namespaces.py
--- old/mercurial-3.3/mercurial/namespaces.py   2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/namespaces.py 2015-03-02 17:29:40.000000000 
+0100
@@ -41,7 +41,8 @@
                       # i18n: column positioning for "hg log"
                       logfmt=_("tag:         %s\n"),
                       listnames=tagnames,
-                      namemap=tagnamemap, nodemap=tagnodemap)
+                      namemap=tagnamemap, nodemap=tagnodemap,
+                      deprecated=set(['tip']))
         self.addnamespace(n)
 
         bnames = lambda repo: repo.branchmap().keys()
@@ -126,11 +127,13 @@
                    dictionary)
       'namemap': function that takes a name and returns a list of nodes
       'nodemap': function that takes a node and returns a list of names
+      'deprecated': set of names to be masked for ordinary use
 
     """
 
     def __init__(self, name, templatename=None, logname=None, colorname=None,
-                 logfmt=None, listnames=None, namemap=None, nodemap=None):
+                 logfmt=None, listnames=None, namemap=None, nodemap=None,
+                 deprecated=None):
         """create a namespace
 
         name: the namespace to be registered (in plural form)
@@ -144,6 +147,7 @@
         listnames: function to list all names
         namemap: function that inputs a node, output name(s)
         nodemap: function that inputs a name, output node(s)
+        deprecated: set of names to be masked for ordinary use
 
         """
         self.name = name
@@ -168,6 +172,11 @@
             # i18n: column positioning for "hg log"
             self.logfmt = ("%s:" % self.logname).ljust(13) + "%s\n"
 
+        if deprecated is None:
+            self.deprecated = set()
+        else:
+            self.deprecated = deprecated
+
     def names(self, repo, node):
         """method that returns a (sorted) list of names in a namespace that
         match a given node"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/posix.py 
new/mercurial-3.3.2/mercurial/posix.py
--- old/mercurial-3.3/mercurial/posix.py        2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/posix.py      2015-03-02 17:29:40.000000000 
+0100
@@ -322,7 +322,7 @@
     global _needsshellquote
     if _needsshellquote is None:
         _needsshellquote = re.compile(r'[^a-zA-Z0-9._/-]').search
-    if not _needsshellquote(s):
+    if s and not _needsshellquote(s):
         # "s" shouldn't have to be quoted
         return s
     else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/repoview.py 
new/mercurial-3.3.2/mercurial/repoview.py
--- old/mercurial-3.3/mercurial/repoview.py     2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/repoview.py   2015-03-02 17:29:40.000000000 
+0100
@@ -274,7 +274,8 @@
         unfichangelog = unfi.changelog
         revs = filterrevs(unfi, self.filtername)
         cl = self._clcache
-        newkey = (len(unfichangelog), unfichangelog.tip(), hash(revs))
+        newkey = (len(unfichangelog), unfichangelog.tip(), hash(revs),
+                  unfichangelog._delayed)
         if cl is not None:
             # we need to check curkey too for some obscure reason.
             # MQ test show a corruption of the underlying repo (in _clcache)
@@ -282,7 +283,7 @@
             oldfilter = cl.filteredrevs
             try:
                 cl.filteredrevs = ()  # disable filtering for tip
-                curkey = (len(cl), cl.tip(), hash(oldfilter))
+                curkey = (len(cl), cl.tip(), hash(oldfilter), cl._delayed)
             finally:
                 cl.filteredrevs = oldfilter
             if newkey != self._clcachekey or newkey != curkey:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/revset.py 
new/mercurial-3.3.2/mercurial/revset.py
--- old/mercurial-3.3/mercurial/revset.py       2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/revset.py     2015-03-02 17:29:40.000000000 
+0100
@@ -527,7 +527,7 @@
     import branchmap
     urepo = repo.unfiltered()
     ucl = urepo.changelog
-    getbi = branchmap.revbranchcache(urepo).branchinfo
+    getbi = branchmap.revbranchcache(urepo, readonly=True).branchinfo
 
     try:
         b = getstring(x, '')
@@ -1277,7 +1277,8 @@
     names = set()
     for ns in namespaces:
         for name in ns.listnames(repo):
-            names.update(ns.nodes(repo, name))
+            if name not in ns.deprecated:
+                names.update(repo[n].rev() for n in ns.nodes(repo, name))
 
     names -= set([node.nullrev])
     return subset & names
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/subrepo.py 
new/mercurial-3.3.2/mercurial/subrepo.py
--- old/mercurial-3.3/mercurial/subrepo.py      2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/subrepo.py    2015-03-02 17:29:40.000000000 
+0100
@@ -245,7 +245,7 @@
                   'use (c)hanged version or (d)elete?'
                   '$$ &Changed $$ &Delete') % s, 0) == 0:
                 debug(s, "prompt recreate", r)
-                wctx.sub(s).get(r)
+                mctx.sub(s).get(r)
                 sm[s] = r
 
     # record merged .hgsubstate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/templatekw.py 
new/mercurial-3.3.2/mercurial/templatekw.py
--- old/mercurial-3.3/mercurial/templatekw.py   2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/templatekw.py 2015-03-02 17:29:40.000000000 
+0100
@@ -199,10 +199,10 @@
     """
     repo = args['ctx']._repo
     bookmarks = args['ctx'].bookmarks()
-    hybrid = showlist('bookmark', bookmarks, **args)
-    for value in hybrid.values:
-        value['current'] = repo._bookmarkcurrent
-    return hybrid
+    current = repo._bookmarkcurrent
+    c = [{'bookmark': x, 'current': current} for x in bookmarks]
+    f = _showlist('bookmark', bookmarks, **args)
+    return _hybrid(f, c, lambda x: x['bookmark'])
 
 def showchildren(**args):
     """:children: List of strings. The children of the changeset."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-3.3/mercurial/templates/monoblue/changeset.tmpl 
new/mercurial-3.3.2/mercurial/templates/monoblue/changeset.tmpl
--- old/mercurial-3.3/mercurial/templates/monoblue/changeset.tmpl       
2015-02-02 03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/mercurial/templates/monoblue/changeset.tmpl     
2015-03-02 17:29:40.000000000 +0100
@@ -39,7 +39,7 @@
     <h2 class="no-link no-border">changeset</h2>
 
     <h3 class="changeset"><a 
href="{url|urlescape}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty}
 <span 
class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
-    <p class="changeset-age age">{date|rfc822date}</p>
+    <p class="changeset-age"><span class="age">{date|rfc822date}</span></p>
 
     <dl class="overview">
         <dt>author</dt>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-3.3/mercurial/templates/monoblue/fileannotate.tmpl 
new/mercurial-3.3.2/mercurial/templates/monoblue/fileannotate.tmpl
--- old/mercurial-3.3/mercurial/templates/monoblue/fileannotate.tmpl    
2015-02-02 03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/mercurial/templates/monoblue/fileannotate.tmpl  
2015-03-02 17:29:40.000000000 +0100
@@ -41,7 +41,7 @@
 
     <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
     <h3 class="changeset">{file|escape}</h3>
-    <p class="changeset-age age">{date|rfc822date}</p>
+    <p class="changeset-age"><span class="age">{date|rfc822date}</span></p>
 
     <dl class="overview">
         <dt>author</dt>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-3.3/mercurial/templates/monoblue/filerevision.tmpl 
new/mercurial-3.3.2/mercurial/templates/monoblue/filerevision.tmpl
--- old/mercurial-3.3/mercurial/templates/monoblue/filerevision.tmpl    
2015-02-02 03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/mercurial/templates/monoblue/filerevision.tmpl  
2015-03-02 17:29:40.000000000 +0100
@@ -41,7 +41,7 @@
 
     <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
     <h3 class="changeset">{file|escape}</h3>
-    <p class="changeset-age age">{date|rfc822date}</p>
+    <p class="changeset-age"><span class="age">{date|rfc822date}</span></p>
 
     <dl class="overview">
         <dt>author</dt>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/util.py 
new/mercurial-3.3.2/mercurial/util.py
--- old/mercurial-3.3/mercurial/util.py 2015-02-02 03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/mercurial/util.py       2015-03-02 17:29:40.000000000 
+0100
@@ -720,7 +720,9 @@
     "copy a file, preserving mode and atime/mtime"
     if os.path.lexists(dest):
         unlink(dest)
-    if hardlink:
+    # hardlinks are problematic on CIFS, quietly ignore this flag
+    # until we find a way to work around it cleanly (issue4546)
+    if False and hardlink:
         try:
             oslink(src, dest)
             return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/mercurial/windows.py 
new/mercurial-3.3.2/mercurial/windows.py
--- old/mercurial-3.3/mercurial/windows.py      2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/mercurial/windows.py    2015-03-02 17:29:40.000000000 
+0100
@@ -159,7 +159,7 @@
         # they are used as a part of path name (and the latter doesn't
         # work as "escape character", like one on posix) on Windows
         _needsshellquote = re.compile(r'[^a-zA-Z0-9._:/\\-]').search
-    if not _needsshellquote(s) and not _quotere.search(s):
+    if s and not _needsshellquote(s) and not _quotere.search(s):
         # "s" shouldn't have to be quoted
         return s
     return '"%s"' % _quotere.sub(r'\1\1\\\2', s)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/tests/test-command-template.t 
new/mercurial-3.3.2/tests/test-command-template.t
--- old/mercurial-3.3/tests/test-command-template.t     2015-02-02 
03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/tests/test-command-template.t   2015-03-02 
17:29:40.000000000 +0100
@@ -2381,6 +2381,11 @@
   2 
   1 
   0 
+  $ hg book -r1 baz
+  $ hg log --template "{rev} {join(bookmarks, ' ')}\n"
+  2 bar foo
+  1 baz
+  0 
 
 Test stringify on sub expressions
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/tests/test-extdiff.t 
new/mercurial-3.3.2/tests/test-extdiff.t
--- old/mercurial-3.3/tests/test-extdiff.t      2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/tests/test-extdiff.t    2015-03-02 17:29:40.000000000 
+0100
@@ -179,7 +179,23 @@
 TODO
 #else
   $ hg --debug odd | grep '^running'
-  running "*/bin/echo --foo='sp ace' 'sp ace' --bar='sp ace' 'sp ace'" in * 
(glob)
+  running "*/echo --foo='sp ace' 'sp ace' --bar='sp ace' 'sp ace'" in * (glob)
+#endif
+
+Empty argument must be quoted
+
+  $ cat <<EOF >> $HGRCPATH
+  > [extdiff]
+  > kdiff3 = echo
+  > [merge-tools]
+  > kdiff3.diffargs=--L1 \$plabel1 --L2 \$clabel \$parent \$child
+  > EOF
+#if windows
+  $ hg --debug kdiff3 -r0 | grep '^running'
+  running 'echo --L1 "@0" --L2 "" a.8a5febb7f867 a' in * (glob)
+#else
+  $ hg --debug kdiff3 -r0 | grep '^running'
+  running "echo --L1 '@0' --L2 '' a.8a5febb7f867 a" in * (glob)
 #endif
 
 #if execbit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/tests/test-hardlinks.t 
new/mercurial-3.3.2/tests/test-hardlinks.t
--- old/mercurial-3.3/tests/test-hardlinks.t    2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/tests/test-hardlinks.t  2015-03-02 17:29:40.000000000 
+0100
@@ -159,7 +159,7 @@
   1 r2/.hg/store/00manifest.i
   1 r2/.hg/store/data/d1/f2.i
   2 r2/.hg/store/data/f1.i
-  2 r2/.hg/store/fncache
+  1 r2/.hg/store/fncache
 
   $ hg -R r2 verify
   checking changesets
@@ -184,7 +184,7 @@
   1 r2/.hg/store/00manifest.i
   1 r2/.hg/store/data/d1/f2.i
   1 r2/.hg/store/data/f1.i
-  2 r2/.hg/store/fncache
+  1 r2/.hg/store/fncache
 
 
   $ cd r3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/tests/test-largefiles-misc.t 
new/mercurial-3.3.2/tests/test-largefiles-misc.t
--- old/mercurial-3.3/tests/test-largefiles-misc.t      2015-02-02 
03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/tests/test-largefiles-misc.t    2015-03-02 
17:29:40.000000000 +0100
@@ -907,6 +907,77 @@
   $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
 #endif
 
+Test overridden functions work correctly even for repos disabling
+largefiles (issue4547)
+
+  $ hg showconfig extensions | grep largefiles
+  extensions.largefiles=!
+
+(test updating implied by clone)
+
+  $ hg init enabled-but-no-largefiles
+  $ echo normal1 > enabled-but-no-largefiles/normal1
+  $ hg -R enabled-but-no-largefiles add enabled-but-no-largefiles/normal1
+  $ hg -R enabled-but-no-largefiles commit -m '#0@enabled-but-no-largefiles'
+  Invoking status precommit hook
+  A normal1
+  $ cat >> enabled-but-no-largefiles/.hg/hgrc <<EOF
+  > [extensions]
+  > # enable locally
+  > largefiles=
+  > EOF
+  $ hg clone -q enabled-but-no-largefiles no-largefiles
+
+(test rebasing implied by pull: precommit while rebasing unexpectedly
+shows "normal3" as "?", because lfdirstate isn't yet written out at
+that time)
+
+  $ echo normal2 > enabled-but-no-largefiles/normal2
+  $ hg -R enabled-but-no-largefiles add enabled-but-no-largefiles/normal2
+  $ hg -R enabled-but-no-largefiles commit -m '#1@enabled-but-no-largefiles'
+  Invoking status precommit hook
+  A normal2
+
+  $ echo normal3 > no-largefiles/normal3
+  $ hg -R no-largefiles add no-largefiles/normal3
+  $ hg -R no-largefiles commit -m '#1@no-largefiles'
+  Invoking status precommit hook
+  A normal3
+
+  $ hg -R no-largefiles -q pull --rebase
+  Invoking status precommit hook
+  ? normal3
+
+(test reverting)
+
+  $ hg init subrepo-root
+  $ cat >> subrepo-root/.hg/hgrc <<EOF
+  > [extensions]
+  > # enable locally
+  > largefiles=
+  > EOF
+  $ echo large > subrepo-root/large
+  $ hg -R subrepo-root add --large subrepo-root/large
+  $ hg clone -q no-largefiles subrepo-root/no-largefiles
+  $ cat > subrepo-root/.hgsub <<EOF
+  > no-largefiles = no-largefiles
+  > EOF
+  $ hg -R subrepo-root add subrepo-root/.hgsub
+  $ hg -R subrepo-root commit -m '#0'
+  Invoking status precommit hook
+  A .hgsub
+  A large
+  ? .hgsubstate
+  $ echo dirty >> subrepo-root/large
+  $ echo dirty >> subrepo-root/no-largefiles/normal1
+  $ hg -R subrepo-root status -S
+  M large
+  M no-largefiles/normal1
+  $ hg -R subrepo-root revert --all
+  reverting subrepo-root/.hglf/large (glob)
+  reverting subrepo no-largefiles
+  reverting subrepo-root/no-largefiles/normal1 (glob)
+
   $ cd ..
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/tests/test-log.t 
new/mercurial-3.3.2/tests/test-log.t
--- old/mercurial-3.3/tests/test-log.t  2015-02-02 03:20:50.000000000 +0100
+++ new/mercurial-3.3.2/tests/test-log.t        2015-03-02 17:29:40.000000000 
+0100
@@ -494,7 +494,23 @@
   e
   
   
-
+  $ hg log -vC -r4 -Tjson
+  [
+   {
+    "rev": 4,
+    "node": "7e4639b4691b9f84b81036a8d4fb218ce3c5e3a3",
+    "branch": "default",
+    "phase": "draft",
+    "user": "test",
+    "date": [5, 0],
+    "desc": "e",
+    "bookmarks": [],
+    "tags": ["tip"],
+    "parents": ["2ca5ba7019804f1f597249caddf22a64d34df0ba"],
+    "files": ["dir/b", "e"],
+    "copies": {"e": "dir/b"}
+   }
+  ]
 
 log copies, non-linear manifest
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/tests/test-revset.t 
new/mercurial-3.3.2/tests/test-revset.t
--- old/mercurial-3.3/tests/test-revset.t       2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/tests/test-revset.t     2015-03-02 17:29:40.000000000 
+0100
@@ -787,6 +787,11 @@
   $ log 'present(named("unknown"))'
   $ log 'present(named("re:unknown"))'
 
+  $ log 'tag()'
+  6
+  $ log 'named("tags")'
+  6
+
 issue2437
 
   $ log '3 and p1(5)'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3/tests/test-subrepo.t 
new/mercurial-3.3.2/tests/test-subrepo.t
--- old/mercurial-3.3/tests/test-subrepo.t      2015-02-02 03:20:50.000000000 
+0100
+++ new/mercurial-3.3.2/tests/test-subrepo.t    2015-03-02 17:29:40.000000000 
+0100
@@ -304,6 +304,138 @@
   t3
   >>>>>>> other: 7af322bc1198  - test: 7
 
+11: remove subrepo t
+
+  $ hg co -C 5
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg revert -r 4 .hgsub # remove t
+  $ hg ci -m11
+  created new head
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+
+local removed, remote changed, keep changed
+
+  $ hg merge 6
+   remote changed subrepository t which local removed
+  use (c)hanged version or (d)elete? c
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+BROKEN: should include subrepo t
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+  6747d179aa9a688023c4b0cad32e4c92bb7f34ad t
+  $ hg ci -m 'local removed, remote changed, keep changed'
+BROKEN: should include subrepo t
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+BROKEN: should include subrepo t
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+  $ cat t/t
+  t2
+
+local removed, remote changed, keep removed
+
+  $ hg co -C 11
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg merge --config ui.interactive=true 6 <<EOF
+  > d
+  > EOF
+   remote changed subrepository t which local removed
+  use (c)hanged version or (d)elete? d
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+  $ hg ci -m 'local removed, remote changed, keep removed'
+  created new head
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+
+local changed, remote removed, keep changed
+
+  $ hg co -C 6
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg merge 11
+   local changed subrepository t which remote removed
+  use (c)hanged version or (d)elete? c
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+BROKEN: should include subrepo t
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+BROKEN: should include subrepo t
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+  $ hg ci -m 'local changed, remote removed, keep changed'
+  created new head
+BROKEN: should include subrepo t
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+BROKEN: should include subrepo t
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+  $ cat t/t
+  t2
+
+local changed, remote removed, keep removed
+
+  $ hg co -C 6
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg merge --config ui.interactive=true 11 <<EOF
+  > d
+  > EOF
+   local changed subrepository t which remote removed
+  use (c)hanged version or (d)elete? d
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+  $ hg ci -m 'local changed, remote removed, keep removed'
+  created new head
+  $ hg debugsub
+  path s
+   source   s
+   revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+  $ cat .hgsubstate
+  e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
+
+clean up to avoid having to fix up the tests below
+
+  $ hg co -C 10
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > strip=
+  > EOF
+  $ hg strip -r 11:15
+  saved backup bundle to $TESTTMP/t/.hg/strip-backup/*-backup.hg (glob)
+
 clone
 
   $ cd ..

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

Reply via email to