Hello community,

here is the log from the commit of package mercurial for openSUSE:Factory 
checked in at 2015-04-05 02:04: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      2015-03-16 
09:42:24.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mercurial.new/mercurial.changes 2015-04-05 
02:04:22.000000000 +0200
@@ -1,0 +2,24 @@
+Fri Apr  3 20:35:23 UTC 2015 - [email protected]
+
+- update to 3.3.3
+  This is a regularly-scheduled bugfix release.
+  + adjustlinkrev: handle 'None' value as source
+  + adjustlinkrev: prepare source revs for ancestry only once
+  + amend: check for directory renames for both merge parents
+    (issue4516)
+  + annotate: reuse ancestry context when adjusting linkrev (issue4532)
+  + dirstate: don't require exact case when adding dirs on icasefs
+    (issue4578)
+  + dirstate: make sure rootdir ends with directory separator
+    (issue4557)
+  + filemerge: clean up language in mergemarkertemplate help
+  + forget: cleanup the output for an inexact case match on icasefs
+  + hgweb: prevent loading style map from directories other than
+    specified paths
+  + mergecopies: reuse ancestry context when traversing file history
+    (issue4537)
+  + templates: fix "log -q" output of default style
+  + templates: fix "log -q" output of phases style
+  + win32: 'raise ctypes.WinError' -> 'raise ctypes.WinError()'
+
+-------------------------------------------------------------------

Old:
----
  mercurial-3.3.2.tar.gz

New:
----
  mercurial-3.3.3.tar.gz

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

Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.t8sd7F/_old  2015-04-05 02:04:23.000000000 +0200
+++ /var/tmp/diff_new_pack.t8sd7F/_new  2015-04-05 02:04:23.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           mercurial
-Version:        3.3.2
+Version:        3.3.3
 Release:        0
 Summary:        Scalable Distributed SCM
 License:        GPL-2.0+

++++++ mercurial-3.3.2.tar.gz -> mercurial-3.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/.hgsigs new/mercurial-3.3.3/.hgsigs
--- old/mercurial-3.3.2/.hgsigs 2015-03-02 17:29:45.000000000 +0100
+++ new/mercurial-3.3.3/.hgsigs 2015-04-01 20:27:57.000000000 +0200
@@ -103,3 +103,4 @@
 db8e3f7948b1fdeb9ad12d448fc3525759908b9f 0 
iQIVAwUAVLsaciBXgaxoKi1yAQKMIA//a90/GvySL9UID+iYvzV2oDaAPDD0T+4Xs43I7DT5NIoDz+3yq2VV54XevQe5lYiURmsb/Q9nX2VR/Qq1J9c/R6Gy+CIfmJ3HzMZ0aAX8ZlZgQPYZKh/2kY5Ojl++k6MTqbqcrICNs4+UE/4IAxPyOfu5gy7TpdJmRZo2J3lWVC2Jbhd02Mzb+tjtfbOM+QcQxPwt9PpqmQszJceyVYOSm3jvD1uJdSOC04tBQrQwrxktQ09Om0LUMMaB5zFXpJtqUzfw7l4U4AaddEmkd3vUfLtHxc21RB01c3cpe2dJnjifDfwseLsI8rS4jmi/91c74TeBatSOhvbqzEkm/p8xZFXE4Uh+EpWjTsVqmfQaRq6NfNCR7I/kvGv8Ps6w8mg8uX8fd8lx+GJbodj+Uy0X3oqHyqPMky/df5i79zADBDuz+yuxFfDD9i22DJPIYcilfGgwpIUuO2lER5nSMVmReuWTVBnT6SEN66Q4KR8zLtIRr+t1qUUCy6wYbgwrdHVCbgMF8RPOVZPjbs17RIqcHjch0Xc7bShKGhQg4WHDjXHK61w4tOa1Yp7jT6COkl01XC9BLcGxJYKFvNCbeDZQGvVgJNoEvHxBxD9rGMVRjfuxeJawc2fGzZJn0ySyLDW0pfd4EJNgTh9bLdPjWz2VlXqn4A6bgaLgTPqjmN0VBXw=
 fbdd5195528fae4f41feebc1838215c110b25d6a 0 
iQIVAwUAVM7fBCBXgaxoKi1yAQKoYw/+LeIGcjQmHIVFQULsiBtPDf+eGAADQoP3mKBy+eX/3Fa0qqUNfES2Q3Y6RRApyZ1maPRMt8BvvhZMgQsu9QIrmf3zsFxZGFwoyrIj4hM3xvAbEZXqmWiR85/Ywd4ImeLaZ0c7mkO1/HGF1n2Mv47bfM4hhNe7VGJSSrTY4srFHDfk4IG9f18DukJVzRD9/dZeBw6eUN1ukuLEgQAD5Sl47bUdKSetglOSR1PjXfZ1hjtz5ywUyBc5P9p3LC4wSvlcJKl22zEvB3L0hkoDcPsdIPEnJAeXxKlR1rQpoA3fEgrstGiSNUW/9Tj0VekAHLO95SExmQyoG/AhbjRRzIj4uQ0aevCJyiAhkv+ffOSf99PMW9L1k3tVjLhpMWEz9BOAWyX7cDFWj5t/iktI046O9HGN9SGVx18e9xM6pEgRcLA2TyjEmtkA4jX0JeN7WeCweMLiSxyGP7pSPSJdpJeXaFtRpSF62p/G0Z5wN9s05LHqDyqNVtCvg4WjkuV5LZSdLbMcYBWGBxQzCG6qowXFXIawmbaFiBZwTfOgNls9ndz5RGupAaxY317prxPFv/pXoesc1P8bdK09ZvjhbmmD66Q/BmS2dOMQ8rXRjuVdlR8j2QBtFZxekMcRD02nBAVnwHg1VWQMIRaGjdgmW4wOkirWVn7me177FnBxrxW1tG4=
 5b4ed033390bf6e2879c8f5c28c84e1ee3b87231 0 
iQIVAwUAVPQL9CBXgaxoKi1yAQJIXxAAtD2hWhaKa+lABmCOYG92FE/WdqY/91Xv5atTL8Xeko/MkirIKZiOuxNWX+J34TVevINZSWmMfDSc5TkGxktL9jW/pDB/CXn+CVZpxRabPYFH9HM2K3g8VaTV1MFtV2+feOMDIPCmq5ogMF9/kXjmifiEBrJcFsE82fdexJ3OHoOY4iHFxEhh3GzvNqEQygk4VeU6VYziNvSQj9G//PsK3Bmk7zm5ScsZcMVML3SIYFuej1b1PI1v0N8mmCRooVNBGhD/eA0iLtdh/hSb9s/8UgJ4f9HOcx9zqs8V4i14lpd/fo0+yvFuVrVbWGzrDrk5EKLENhVPwvc1KA32PTQ4Z9u7VQIBIxq3K5lL2VlCMIYc1BSaSQBjuiLm8VdN6iDuf5poNZhk1rvtpQgpxJzh362dlGtR/iTJuLCeW7gCqWUAorLTeHy0bLQ/jSOeTAGys8bUHtlRL4QbnhLbUmJmRYVvCJ+Yt1aTgTSNcoFjoLJarR1169BXgdCA38BgReUL6kB224UJSTzB1hJUyB2LvCWrXZMipZmR99Iwdq7MePD3+AoSIXQNUMY9blxuuF5x7W2ikNXmVWuab4Z8rQRtmGqEuIMBSunxAnZSn+i8057dFKlq+/yGy+WW3RQg+RnLnwZs1zCDTfu98/GT5k5hFpjXZeUWWiOVwQJ5HrqncCw=
+07a92bbd02e5e3a625e0820389b47786b02b2cea 0 
iQIVAwUAVPSP9SBXgaxoKi1yAQLkBQ//dRQExJHFepJfZ0gvGnUoYI4APsLmne5XtfeXJ8OtUyC4a6RylxA5BavDWgXwUh9BGhOX2cBSz1fyvzohrPrvNnlBrYKAvOIJGEAiBTXHYTxHINEKPtDF92Uz23T0Rn/wnSvvlbWF7Pvd+0DMJpFDEyr9n6jvVLR7mgxMaCqZbVaB1W/wTwDjni780WgVx8OPUXkLx3/DyarMcIiPeI5UN+FeHDovTsBWFC95msFLm80PMRPuHOejWp65yyEemGujZEPO2D5VVah7fshM2HTz63+bkEBYoqrftuv3vXKBRG78MIrUrKpqxmnCKNKDUUWJ4yk3+NwuOiHlKdly5kZ7MNFaL73XKo8HH287lDWz0lIazs91dQA9a9JOyTsp8YqGtIJGGCbhrUDtiQJ199oBU84mw3VH/EEzm4mPv4sW5fm7BnnoH/a+9vXySc+498rkdLlzFwxrQkWyJ/pFOx4UA3mCtGQK+OSwLPc+X4SRqA4fiyqKxVAL1kpLTSDL3QA82I7GzBaXsxUXzS4nmteMhUyzTdwAhKVydL0gC3d7NmkAFSyRjdGzutUUXshYxg0ywRgYebe8uzJcTj4nNRgaalYLdg3guuDulD+dJmILsrcLmA6KD/pvfDn8PYt+4ZjNIvN2E9GF6uXDu4Ux+AlOTLk9BChxUF8uBX9ev5cvWtQ=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/.hgtags new/mercurial-3.3.3/.hgtags
--- old/mercurial-3.3.2/.hgtags 2015-03-02 17:29:45.000000000 +0100
+++ new/mercurial-3.3.3/.hgtags 2015-04-01 20:27:57.000000000 +0200
@@ -116,3 +116,4 @@
 db8e3f7948b1fdeb9ad12d448fc3525759908b9f 3.3-rc
 fbdd5195528fae4f41feebc1838215c110b25d6a 3.3
 5b4ed033390bf6e2879c8f5c28c84e1ee3b87231 3.3.1
+07a92bbd02e5e3a625e0820389b47786b02b2cea 3.3.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/PKG-INFO new/mercurial-3.3.3/PKG-INFO
--- old/mercurial-3.3.2/PKG-INFO        2015-03-02 17:29:55.000000000 +0100
+++ new/mercurial-3.3.3/PKG-INFO        2015-04-01 20:28:07.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: mercurial
-Version: 3.3.2
+Version: 3.3.3
 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.2/doc/hgrc.5 
new/mercurial-3.3.3/doc/hgrc.5
--- old/mercurial-3.3.2/doc/hgrc.5      2015-03-02 17:29:49.000000000 +0100
+++ new/mercurial-3.3.3/doc/hgrc.5      2015-04-01 20:28:01.000000000 +0200
@@ -1737,13 +1737,13 @@
 format.
 Defaults to showing the hash, tags, branches, bookmarks, author, and
 the first line of the commit description.
-You have to pay attention to encodings of managed files, if you
-use non\-ASCII characters in tags, branches, bookmarks, author
-and/or commit descriptions. At template expansion, non\-ASCII
-characters use the encoding specified by \fB\-\-encoding\fP global
-option, \fBHGENCODING\fP or other locale setting environment
-variables. The difference of encoding between merged file and
-conflict markers causes serious problem.
+If you use non\-ASCII characters in names for tags, branches, bookmarks,
+authors, and/or commit descriptions, you must pay attention to encodings of
+managed files. At template expansion, non\-ASCII characters use the encoding
+specified by the \fB\-\-encoding\fP global option, \fBHGENCODING\fP or other
+environment variables that govern your locale. If the encoding of the merge
+markers is different from the encoding of the merged files,
+serious problems may occur.
 .TP
 .B \fBportablefilenames\fP
 .sp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/doc/hgrc.5.html 
new/mercurial-3.3.3/doc/hgrc.5.html
--- old/mercurial-3.3.2/doc/hgrc.5.html 2015-03-02 17:29:52.000000000 +0100
+++ new/mercurial-3.3.3/doc/hgrc.5.html 2015-04-01 20:28:03.000000000 +0200
@@ -1294,13 +1294,13 @@
 format.
 Defaults to showing the hash, tags, branches, bookmarks, author, and
 the first line of the commit description.
-You have to pay attention to encodings of managed files, if you
-use non-ASCII characters in tags, branches, bookmarks, author
-and/or commit descriptions. At template expansion, non-ASCII
-characters use the encoding specified by <tt class="docutils literal"><span 
class="pre">--encoding</span></tt> global
-option, <tt class="docutils literal">HGENCODING</tt> or other locale setting 
environment
-variables. The difference of encoding between merged file and
-conflict markers causes serious problem.</dd>
+If you use non-ASCII characters in names for tags, branches, bookmarks,
+authors, and/or commit descriptions, you must pay attention to encodings of
+managed files. At template expansion, non-ASCII characters use the encoding
+specified by the <tt class="docutils literal"><span 
class="pre">--encoding</span></tt> global option, <tt class="docutils 
literal">HGENCODING</tt> or other
+environment variables that govern your locale. If the encoding of the merge
+markers is different from the encoding of the merged files,
+serious problems may occur.</dd>
 <dt><tt class="docutils literal">portablefilenames</tt></dt>
 <dd>Check for portable filenames. Can be <tt class="docutils 
literal">warn</tt>, <tt class="docutils literal">ignore</tt> or <tt 
class="docutils literal">abort</tt>.
 Default is <tt class="docutils literal">warn</tt>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/i18n/pt_BR.po 
new/mercurial-3.3.3/i18n/pt_BR.po
--- old/mercurial-3.3.2/i18n/pt_BR.po   2015-03-02 17:29:40.000000000 +0100
+++ new/mercurial-3.3.3/i18n/pt_BR.po   2015-04-01 20:27:41.000000000 +0200
@@ -20109,13 +20109,13 @@
 "    format.\n"
 "    Defaults to showing the hash, tags, branches, bookmarks, author, and\n"
 "    the first line of the commit description.\n"
-"    You have to pay attention to encodings of managed files, if you\n"
-"    use non-ASCII characters in tags, branches, bookmarks, author\n"
-"    and/or commit descriptions. At template expansion, non-ASCII\n"
-"    characters use the encoding specified by ``--encoding`` global\n"
-"    option, ``HGENCODING`` or other locale setting environment\n"
-"    variables. The difference of encoding between merged file and\n"
-"    conflict markers causes serious problem."
+"    If you use non-ASCII characters in names for tags, branches, bookmarks,\n"
+"    authors, and/or commit descriptions, you must pay attention to encodings 
of\n"
+"    managed files. At template expansion, non-ASCII characters use the 
encoding\n"
+"    specified by the ``--encoding`` global option, ``HGENCODING`` or other\n"
+"    environment variables that govern your locale. If the encoding of the 
merge\n"
+"    markers is different from the encoding of the merged files,\n"
+"    serious problems may occur."
 msgstr ""
 "``mergemarkertemplate``\n"
 "    O modelo usado para imprimir a descrição da consolidação próxima\n"
@@ -20123,9 +20123,9 @@
 "    Veja :hg:`help templates` para o formato do modelo.\n"
 "    O padrão exibe o hash, etiquetas, ramos, marcadores, autor e\n"
 "    a primeira linha da mensagem de consolidação.\n"
-"    Você deve prestar atenção na codificação dos arquivos gerenciados\n"
-"    se forem utilizados caracteres não-ASCII em etiquetas, ramos,\n"
-"    marcadores, autores ou mensagens de consolidação.\n"
+"    Se forem utilizados caracteres não-ASCII em etiquetas, ramos,\n"
+"    marcadores, autores ou mensagens de consolidação,\n"
+"    é necessário cuidado com a codificação dos arquivos gerenciados.\n"
 "    Na expansão do modelo, caracteres não-ASCII usam a codificação\n"
 "    especificada pela opção global ``--encoding``, ``HGENCODING`` ou\n"
 "    outras variáveis de ambiente de configuração de localização.\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/__version__.py 
new/mercurial-3.3.3/mercurial/__version__.py
--- old/mercurial-3.3.2/mercurial/__version__.py        2015-03-02 
17:29:53.000000000 +0100
+++ new/mercurial-3.3.3/mercurial/__version__.py        2015-04-01 
20:28:05.000000000 +0200
@@ -1,2 +1,2 @@
 # this file is autogenerated by setup.py
-version = "3.3.2"
+version = "3.3.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/cmdutil.py 
new/mercurial-3.3.3/mercurial/cmdutil.py
--- old/mercurial-3.3.2/mercurial/cmdutil.py    2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/mercurial/cmdutil.py    2015-04-01 20:27:41.000000000 
+0200
@@ -2044,6 +2044,12 @@
             if f not in repo.dirstate and not repo.wvfs.isdir(f):
                 if f not in forgot:
                     if repo.wvfs.exists(f):
+                        # Don't complain if the exact case match wasn't given.
+                        # But don't do this until after checking 'forgot', so
+                        # that subrepo files aren't normalized, and this op is
+                        # purely from data cached by the status walk above.
+                        if repo.dirstate.normalize(f) in repo.dirstate:
+                            continue
                         ui.warn(_('not removing %s: '
                                   'file is already untracked\n')
                                 % match.rel(f))
@@ -2281,6 +2287,8 @@
                 date = ctx.date()
                 # Recompute copies (avoid recording a -> b -> a)
                 copied = copies.pathcopies(base, ctx)
+                if old.p2:
+                    copied.update(copies.pathcopies(old.p2(), ctx))
 
                 # Prune files which were reverted by the updates: if old
                 # introduced file X and our intermediate commit, node,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/context.py 
new/mercurial-3.3.3/mercurial/context.py
--- old/mercurial-3.3.2/mercurial/context.py    2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/mercurial/context.py    2015-04-01 20:27:41.000000000 
+0200
@@ -774,13 +774,19 @@
         # hack to reuse ancestor computation when searching for renames
         memberanc = getattr(self, '_ancestrycontext', None)
         iteranc = None
+        if srcrev is None:
+            # wctx case, used by workingfilectx during mergecopy
+            revs = [p.rev() for p in self._repo[None].parents()]
+            inclusive = True # we skipped the real (revless) source
+        else:
+            revs = [srcrev]
         if memberanc is None:
-            memberanc = iteranc = cl.ancestors([srcrev], lkr,
+            memberanc = iteranc = cl.ancestors(revs, lkr,
                                                inclusive=inclusive)
         # check if this linkrev is an ancestor of srcrev
         if lkr not in memberanc:
             if iteranc is None:
-                iteranc = cl.ancestors([srcrev], lkr, inclusive=inclusive)
+                iteranc = cl.ancestors(revs, lkr, inclusive=inclusive)
             for a in iteranc:
                 ac = cl.read(a) # get changeset data (we avoid object creation)
                 if path in ac[3]: # checking the 'files' field.
@@ -913,6 +919,8 @@
         introrev = self.introrev()
         if self.rev() != introrev:
             base = self.filectx(self.filenode(), changeid=introrev)
+            ac = self._repo.changelog.ancestors([introrev], inclusive=True)
+            base._ancestrycontext = ac
 
         # This algorithm would prefer to be recursive, but Python is a
         # bit recursion-hostile. Instead we do an iterative
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/copies.py 
new/mercurial-3.3.3/mercurial/copies.py
--- old/mercurial-3.3.2/mercurial/copies.py     2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/mercurial/copies.py     2015-04-01 20:27:41.000000000 
+0200
@@ -246,14 +246,41 @@
     m2 = c2.manifest()
     ma = ca.manifest()
 
-    def makectx(f, n):
-        if len(n) != 20: # in a working context?
-            if c1.rev() is None:
-                return c1.filectx(f)
-            return c2.filectx(f)
-        return repo.filectx(f, fileid=n)
 
-    ctx = util.lrucachefunc(makectx)
+    def setupctx(ctx):
+        """return a 'makectx' function suitable for checkcopies usage from ctx
+
+        We have to re-setup the function building 'filectx' for each
+        'checkcopies' to ensure the linkrev adjustement is properly setup for
+        each. Linkrev adjustment is important to avoid bug in rename
+        detection. Moreover, having a proper '_ancestrycontext' setup ensures
+        the performance impact of this adjustment is kept limited. Without it,
+        each file could do a full dag traversal making the time complexity of
+        the operation explode (see issue4537).
+
+        This function exists here mostly to limit the impact on stable. Feel
+        free to refactor on default.
+        """
+        rev = ctx.rev()
+        ac = getattr(ctx, '_ancestrycontext', None)
+        if ac is None:
+            revs = [rev]
+            if rev is None:
+                revs = [p.rev() for p in ctx.parents()]
+            ac = ctx._repo.changelog.ancestors(revs, inclusive=True)
+            ctx._ancestrycontext = ac
+        def makectx(f, n):
+            if len(n) != 20:  # in a working context?
+                if c1.rev() is None:
+                    return c1.filectx(f)
+                return c2.filectx(f)
+            fctx = repo.filectx(f, fileid=n)
+            # setup only needed for filectx not create from a changectx
+            fctx._ancestrycontext = ac
+            fctx._descendantrev = rev
+            return fctx
+        return util.lrucachefunc(makectx)
+
     copy = {}
     movewithdir = {}
     fullcopy = {}
@@ -272,9 +299,11 @@
                       % "\n   ".join(u2))
 
     for f in u1:
+        ctx = setupctx(c1)
         checkcopies(ctx, f, m1, m2, ca, limit, diverge, copy, fullcopy)
 
     for f in u2:
+        ctx = setupctx(c2)
         checkcopies(ctx, f, m2, m1, ca, limit, diverge, copy, fullcopy)
 
     renamedelete = {}
@@ -297,7 +326,9 @@
                       % "\n   ".join(bothnew))
     bothdiverge, _copy, _fullcopy = {}, {}, {}
     for f in bothnew:
+        ctx = setupctx(c1)
         checkcopies(ctx, f, m1, m2, ca, limit, bothdiverge, _copy, _fullcopy)
+        ctx = setupctx(c2)
         checkcopies(ctx, f, m2, m1, ca, limit, bothdiverge, _copy, _fullcopy)
     for of, fl in bothdiverge.items():
         if len(fl) == 2 and fl[0] == fl[1]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/dirstate.py 
new/mercurial-3.3.3/mercurial/dirstate.py
--- old/mercurial-3.3.2/mercurial/dirstate.py   2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/mercurial/dirstate.py   2015-04-01 20:27:41.000000000 
+0200
@@ -38,7 +38,12 @@
         self._opener = opener
         self._validate = validate
         self._root = root
-        self._rootdir = os.path.join(root, '')
+        # ntpath.join(root, '') of Python 2.7.9 does not add sep if root is
+        # UNC path pointing to root share (issue4557)
+        if root.endswith(os.sep):
+            self._rootdir = root
+        else:
+            self._rootdir = root + os.sep
         self._dirty = False
         self._dirtypl = False
         self._lastnormaltime = 0
@@ -646,7 +651,7 @@
                         results[nf] = None
                     if matchedir:
                         matchedir(nf)
-                    foundadd(nf)
+                    foundadd((nf, ff))
                 elif kind == regkind or kind == lnkkind:
                     results[nf] = st
                 else:
@@ -722,15 +727,16 @@
         results, work, dirsnotfound = self._walkexplicit(match, subrepos)
 
         skipstep3 = skipstep3 and not (work or dirsnotfound)
-        work = [d for d in work if not dirignore(d)]
+        work = [d for d in work if not dirignore(d[0])]
         wadd = work.append
 
         # step 2: visit subdirectories
         while work:
-            nd = work.pop()
+            nd, d = work.pop()
             skip = None
             if nd == '.':
                 nd = ''
+                d = ''
             else:
                 skip = '.hg'
             try:
@@ -743,21 +749,23 @@
             for f, kind, st in entries:
                 if normalize:
                     nf = normalize(nd and (nd + "/" + f) or f, True, True)
+                    f = d and (d + "/" + f) or f
                 else:
                     nf = nd and (nd + "/" + f) or f
+                    f = nf
                 if nf not in results:
                     if kind == dirkind:
                         if not ignore(nf):
                             if matchtdir:
                                 matchtdir(nf)
-                            wadd(nf)
+                            wadd((nf, f))
                         if nf in dmap and (matchalways or matchfn(nf)):
                             results[nf] = None
                     elif kind == regkind or kind == lnkkind:
                         if nf in dmap:
                             if matchalways or matchfn(nf):
                                 results[nf] = st
-                        elif (matchalways or matchfn(nf)) and not ignore(nf):
+                        elif (matchalways or matchfn(f)) and not ignore(nf):
                             results[nf] = st
                     elif nf in dmap and (matchalways or matchfn(nf)):
                         results[nf] = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/help/config.txt 
new/mercurial-3.3.3/mercurial/help/config.txt
--- old/mercurial-3.3.2/mercurial/help/config.txt       2015-03-02 
17:29:40.000000000 +0100
+++ new/mercurial-3.3.3/mercurial/help/config.txt       2015-04-01 
20:27:41.000000000 +0200
@@ -1368,13 +1368,13 @@
     format.
     Defaults to showing the hash, tags, branches, bookmarks, author, and
     the first line of the commit description.
-    You have to pay attention to encodings of managed files, if you
-    use non-ASCII characters in tags, branches, bookmarks, author
-    and/or commit descriptions. At template expansion, non-ASCII
-    characters use the encoding specified by ``--encoding`` global
-    option, ``HGENCODING`` or other locale setting environment
-    variables. The difference of encoding between merged file and
-    conflict markers causes serious problem.
+    If you use non-ASCII characters in names for tags, branches, bookmarks,
+    authors, and/or commit descriptions, you must pay attention to encodings of
+    managed files. At template expansion, non-ASCII characters use the encoding
+    specified by the ``--encoding`` global option, ``HGENCODING`` or other
+    environment variables that govern your locale. If the encoding of the merge
+    markers is different from the encoding of the merged files,
+    serious problems may occur.
 
 ``portablefilenames``
     Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/templater.py 
new/mercurial-3.3.3/mercurial/templater.py
--- old/mercurial-3.3.2/mercurial/templater.py  2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/mercurial/templater.py  2015-04-01 20:27:41.000000000 
+0200
@@ -747,7 +747,11 @@
         styles = [styles]
 
     for style in styles:
-        if not style:
+        # only plain name is allowed to honor template paths
+        if (not style
+            or style in (os.curdir, os.pardir)
+            or os.sep in style
+            or os.altsep and os.altsep in style):
             continue
         locations = [os.path.join(style, 'map'), 'map-' + style]
         locations.append('map')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-3.3.2/mercurial/templates/map-cmdline.default 
new/mercurial-3.3.3/mercurial/templates/map-cmdline.default
--- old/mercurial-3.3.2/mercurial/templates/map-cmdline.default 2015-03-02 
17:29:40.000000000 +0100
+++ new/mercurial-3.3.3/mercurial/templates/map-cmdline.default 2015-04-01 
20:27:41.000000000 +0200
@@ -1,7 +1,7 @@
 # Base templates. Due to name clashes with existing keywords, we have
 # to replace some keywords with 'lkeyword', for 'labelled keyword'
 changeset = 
'{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{summary}\n'
-changeset_quiet = '{node}'
+changeset_quiet = '{lnode}'
 changeset_verbose = 
'{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{lfiles}{lfile_copies_switch}{description}\n'
 changeset_debug = 
'{fullcset}{branches}{bookmarks}{tags}{lphase}{parents}{manifest}{user}{ldate}{lfile_mods}{lfile_adds}{lfile_dels}{lfile_copies_switch}{extras}{description}\n'
 
@@ -40,7 +40,7 @@
 parent = '{label("log.parent changeset.{phase}",
                   "parent:      {rev}:{node|formatnode}")}\n'
 
-node = '{label("log.node",
+lnode = '{label("log.node",
                 "{rev}:{node|short}")}\n'
 
 manifest = '{label("ui.debug log.manifest",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-3.3.2/mercurial/templates/map-cmdline.phases 
new/mercurial-3.3.3/mercurial/templates/map-cmdline.phases
--- old/mercurial-3.3.2/mercurial/templates/map-cmdline.phases  2015-03-02 
17:29:40.000000000 +0100
+++ new/mercurial-3.3.3/mercurial/templates/map-cmdline.phases  2015-04-01 
20:27:41.000000000 +0200
@@ -1,7 +1,7 @@
 # Base templates. Due to name clashes with existing keywords, we have
 # to replace some keywords with 'lkeyword', for 'labelled keyword'
 changeset = 
'{cset}{branches}{bookmarks}{tags}{lphase}{parents}{user}{ldate}{summary}\n'
-changeset_quiet = '{node}'
+changeset_quiet = '{lnode}'
 changeset_verbose = 
'{cset}{branches}{bookmarks}{tags}{lphase}{parents}{user}{ldate}{lfiles}{lfile_copies_switch}{description}\n'
 changeset_debug = 
'{fullcset}{branches}{bookmarks}{tags}{lphase}{parents}{manifest}{user}{ldate}{lfile_mods}{lfile_adds}{lfile_dels}{lfile_copies_switch}{extras}{description}\n'
 
@@ -40,7 +40,7 @@
 parent = '{label("log.parent changeset.{phase}",
                   "parent:      {rev}:{node|formatnode}")}\n'
 
-node = '{label("log.node",
+lnode = '{label("log.node",
                 "{rev}:{node|short}")}\n'
 
 manifest = '{label("ui.debug log.manifest",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/mercurial/win32.py 
new/mercurial-3.3.3/mercurial/win32.py
--- old/mercurial-3.3.2/mercurial/win32.py      2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/mercurial/win32.py      2015-04-01 20:27:41.000000000 
+0200
@@ -279,7 +279,7 @@
     buf = ctypes.create_string_buffer(size + 1)
     len = _kernel32.GetModuleFileNameA(None, ctypes.byref(buf), size)
     if len == 0:
-        raise ctypes.WinError
+        raise ctypes.WinError()
     elif len == size:
         raise ctypes.WinError(_ERROR_INSUFFICIENT_BUFFER)
     return buf.value
@@ -289,7 +289,7 @@
     size = _DWORD(300)
     buf = ctypes.create_string_buffer(size.value + 1)
     if not _advapi32.GetUserNameA(ctypes.byref(buf), ctypes.byref(size)):
-        raise ctypes.WinError
+        raise ctypes.WinError()
     return buf.value
 
 _signalhandler = []
@@ -307,7 +307,7 @@
     h = _SIGNAL_HANDLER(handler)
     _signalhandler.append(h) # needed to prevent garbage collection
     if not _kernel32.SetConsoleCtrlHandler(h, True):
-        raise ctypes.WinError
+        raise ctypes.WinError()
 
 def hidewindow():
 
@@ -349,7 +349,7 @@
     # create handle to list all processes
     ph = _kernel32.CreateToolhelp32Snapshot(_TH32CS_SNAPPROCESS, 0)
     if ph == _INVALID_HANDLE_VALUE:
-        raise ctypes.WinError
+        raise ctypes.WinError()
     try:
         r = _kernel32.Process32First(ph, ctypes.byref(pe))
         # loop over all processes
@@ -361,7 +361,7 @@
     finally:
         _kernel32.CloseHandle(ph)
     if _kernel32.GetLastError() != _ERROR_NO_MORE_FILES:
-        raise ctypes.WinError
+        raise ctypes.WinError()
     return None # no child found
 
 class _tochildpid(int): # pid is _DWORD, which always matches in an int
@@ -413,7 +413,7 @@
         None, args, None, None, False, _CREATE_NO_WINDOW,
         env, os.getcwd(), ctypes.byref(si), ctypes.byref(pi))
     if not res:
-        raise ctypes.WinError
+        raise ctypes.WinError()
 
     # _tochildpid because the process is the child of COMSPEC
     return _tochildpid(pi.dwProcessId)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/tests/test-add.t 
new/mercurial-3.3.3/tests/test-add.t
--- old/mercurial-3.3.2/tests/test-add.t        2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/tests/test-add.t        2015-04-01 20:27:41.000000000 
+0200
@@ -169,4 +169,19 @@
   $ cat d
   file d
 
+Test that adding a directory doesn't require case matching (issue4578)
+#if icasefs
+  $ mkdir -p CapsDir1/CapsDir
+  $ echo abc > CapsDir1/CapsDir/AbC.txt
+  $ mkdir CapsDir1/CapsDir/SubDir
+  $ echo def > CapsDir1/CapsDir/SubDir/Def.txt
+
+  $ hg add -v capsdir1/capsdir
+  adding CapsDir1/CapsDir/AbC.txt (glob)
+  adding CapsDir1/CapsDir/SubDir/Def.txt (glob)
+
+  $ hg forget capsdir1/capsdir/abc.txt
+  removing CapsDir1/CapsDir/AbC.txt (glob)
+#endif
+
   $ cd ..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/tests/test-command-template.t 
new/mercurial-3.3.3/tests/test-command-template.t
--- old/mercurial-3.3.2/tests/test-command-template.t   2015-03-02 
17:29:40.000000000 +0100
+++ new/mercurial-3.3.3/tests/test-command-template.t   2015-04-01 
20:27:41.000000000 +0200
@@ -101,6 +101,10 @@
   $ hg log -v --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
 
+  $ hg log -q > log.out
+  $ hg log -q --style default > style.out
+  $ cmp log.out style.out || diff -u log.out style.out
+
   $ hg log --debug > log.out
   $ hg log --debug --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
@@ -119,6 +123,9 @@
   $ hg --color=debug -v log > log.out
   $ hg --color=debug -v log --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
+  $ hg --color=debug -q log > log.out
+  $ hg --color=debug -q log --style default > style.out
+  $ cmp log.out style.out || diff -u log.out style.out
   $ hg --color=debug --debug log > log.out
   $ hg --color=debug --debug log --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/tests/test-commit-amend.t 
new/mercurial-3.3.3/tests/test-commit-amend.t
--- old/mercurial-3.3.2/tests/test-commit-amend.t       2015-03-02 
17:29:40.000000000 +0100
+++ new/mercurial-3.3.3/tests/test-commit-amend.t       2015-04-01 
20:27:41.000000000 +0200
@@ -1057,3 +1057,66 @@
   A a2
     a0
   R a0
+  $ cd ..
+
+Check that amend properly preserve rename from directory rename (issue-4516)
+
+If a parent of the merge renames a full directory, any files added to the old
+directory in the other parent will be renamed to the new directory. For some
+reason, the rename metadata was when amending such merge. This test ensure we
+do not regress. We have a dedicated repo because it needs a setup with renamed
+directory)
+
+  $ hg init issue4516
+  $ cd issue4516
+  $ mkdir olddirname
+  $ echo line1 > olddirname/commonfile.py
+  $ hg add olddirname/commonfile.py
+  $ hg ci -m first
+
+  $ hg branch newdirname
+  marked working directory as branch newdirname
+  (branches are permanent and global, did you want a bookmark?)
+  $ hg mv olddirname newdirname
+  moving olddirname/commonfile.py to newdirname/commonfile.py (glob)
+  $ hg ci -m rename
+
+  $ hg update default
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo line1 > olddirname/newfile.py
+  $ hg add olddirname/newfile.py
+  $ hg ci -m log
+
+  $ hg up newdirname
+  1 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ # create newdirname/newfile.py
+  $ hg merge default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m add
+  $ 
+  $ hg debugrename newdirname/newfile.py
+  newdirname/newfile.py renamed from 
olddirname/newfile.py:690b295714aed510803d3020da9c70fca8336def
+  $ hg status -C --change .
+  A newdirname/newfile.py
+  $ hg status -C --rev 1
+  A newdirname/newfile.py
+  $ hg status -C --rev 2
+  A newdirname/commonfile.py
+    olddirname/commonfile.py
+  A newdirname/newfile.py
+    olddirname/newfile.py
+  R olddirname/commonfile.py
+  R olddirname/newfile.py
+  $ hg debugindex newdirname/newfile.py
+     rev    offset  length   base linkrev nodeid       p1           p2
+       0         0      88      0       3 34a4d536c0c0 000000000000 
000000000000
+
+  $ echo a >> newdirname/commonfile.py
+  $ hg ci --amend -m bug
+  $ hg debugrename newdirname/newfile.py
+  newdirname/newfile.py renamed from 
olddirname/newfile.py:690b295714aed510803d3020da9c70fca8336def
+  $ hg debugindex newdirname/newfile.py
+     rev    offset  length   base linkrev nodeid       p1           p2
+       0         0      88      0       3 34a4d536c0c0 000000000000 
000000000000
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/tests/test-hgweb.t 
new/mercurial-3.3.3/tests/test-hgweb.t
--- old/mercurial-3.3.2/tests/test-hgweb.t      2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/tests/test-hgweb.t      2015-04-01 20:27:41.000000000 
+0200
@@ -578,6 +578,45 @@
   
   
 
+no style can be loaded from directories other than the specified paths
+
+  $ mkdir -p x/templates/fallback
+  $ cat <<EOF > x/templates/fallback/map
+  > default = 'shortlog'
+  > shortlog = 'fall back to default\n'
+  > mimetype = 'text/plain'
+  > EOF
+  $ cat <<EOF > x/map
+  > default = 'shortlog'
+  > shortlog = 'access to outside of templates directory\n'
+  > mimetype = 'text/plain'
+  > EOF
+
+  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log \
+  > --config web.style=fallback --config web.templates=x/templates
+  $ cat hg.pid >> $DAEMON_PIDS
+
+  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT "?style=`pwd`/x"
+  200 Script output follows
+  
+  fall back to default
+
+  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=..'
+  200 Script output follows
+  
+  fall back to default
+
+  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=./..'
+  200 Script output follows
+  
+  fall back to default
+
+  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=.../.../'
+  200 Script output follows
+  
+  fall back to default
+
 errors
 
   $ cat errors.log
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-3.3.2/tests/test-log.t 
new/mercurial-3.3.3/tests/test-log.t
--- old/mercurial-3.3.2/tests/test-log.t        2015-03-02 17:29:40.000000000 
+0100
+++ new/mercurial-3.3.3/tests/test-log.t        2015-04-01 20:27:41.000000000 
+0200
@@ -150,6 +150,9 @@
   summary:     e
   
 
+  $ hg log -f -l1 --style phases -q
+  4:7e4639b4691b
+
 -f, but no args
 
   $ hg log -f


Reply via email to