Hello community,

here is the log from the commit of package hgview for openSUSE:Factory checked 
in at 2014-08-20 10:51:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hgview (Old)
 and      /work/SRC/openSUSE:Factory/.hgview.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hgview"

Changes:
--------
--- /work/SRC/openSUSE:Factory/hgview/hgview.changes    2014-05-27 
12:00:44.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.hgview.new/hgview.changes       2014-08-20 
10:51:28.000000000 +0200
@@ -1,0 +2,8 @@
+Mon Aug 18 14:47:05 UTC 2014 - [email protected]
+
+- update to 1.8.2
+  - no changelog provided, see
+    http://hg.logilab.org/master/hgview/shortlog/969d6d68da2f
+    for a detailed list of changes
+
+-------------------------------------------------------------------

Old:
----
  hgview-1.8.1.tar.gz

New:
----
  hgview-1.8.2.tar.bz2

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

Other differences:
------------------
++++++ hgview.spec ++++++
--- /var/tmp/diff_new_pack.MggJgy/_old  2014-08-20 10:51:30.000000000 +0200
+++ /var/tmp/diff_new_pack.MggJgy/_new  2014-08-20 10:51:30.000000000 +0200
@@ -18,13 +18,16 @@
 
 
 Name:           hgview
-Version:        1.8.1
+Version:        1.8.2
 Release:        0
 Summary:        Visual Log Navigator for Mercurial
 License:        GPL-2.0+
 Group:          Development/Tools/Version Control
 Url:            http://www.logilab.org/project/hgview
-Source:         
http://download.logilab.org/pub/hgview/%{name}-%{version}.tar.gz
+# hg clone http://hg.logilab.org/hgview
+# tag="$(hg -R hgview tags | sort -r | sed -n 
'0,/^hgview-version-/s/^\(hgview-version-[^ ]\{1,\}\).*/\1/p')"
+# hg -R hgview archive -f tbz2 -r "${tag}" 
hgview-"${tag#hgview-version-}".tar.bz2
+Source:         %{name}-%{version}.tar.bz2
 BuildRequires:  asciidoc
 BuildRequires:  mercurial
 BuildRequires:  python-devel

++++++ hgview-1.8.1.tar.gz -> hgview-1.8.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/.hg_archival.txt 
new/hgview-1.8.2/.hg_archival.txt
--- old/hgview-1.8.1/.hg_archival.txt   1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/.hg_archival.txt   2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,5 @@
+repo: 7bf307e75523a2df1d9a0b6aebed7b1fbfabcea3
+node: 969d6d68da2f1b2ec58f7285d1764ebd5a8b17a1
+branch: stable
+tag: hgview-debian-version-1.8.2-1
+tag: hgview-version-1.8.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/.hgignore new/hgview-1.8.2/.hgignore
--- old/hgview-1.8.1/.hgignore  1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/.hgignore  2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,6 @@
+syntax: glob
+build/
+*.pyc
+*.orig
+*_ui.py
+*_rc.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/.hgtags new/hgview-1.8.2/.hgtags
--- old/hgview-1.8.1/.hgtags    1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/.hgtags    2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,39 @@
+791376691cf7c5725d4cc42d38746bc3843f978d 0.9.0
+8725f1a33bb9c1599043d37590e9ed8be9950929 0.9.1
+25f792231c9f6da3a042bded1683f618230db676 1.0.0
+aaeb008fd454590c093758c1e1eeb1b8e1588b37 1.0.1
+6c83a26740d0c4d0627a8cf78d59810cc3ea9eda 1.1.0
+062a2182dc0907cf584fd9ae22d736e15768c715 hgview-version-1.0.1
+d0bfb8ef52014905fee3e05865e7b4750c2877fc hgview-debian-version-1.0.1-1
+10d99662e3fbd20aa39ea9df339d630fb927d077 hgview-version-1.1.1
+68f0a0c229478f4835363f54852252c886158be8 hgview-debian-version-1.1.1-1
+e20036ab897a89bbde70d29c01a74a1f0082a533 hgview-version-1.2.0
+e20036ab897a89bbde70d29c01a74a1f0082a533 hgview-debian-version-1.2.0-1
+6e44fa1da8783fcebaf2a3f53a9b08c23a1f91c3 hgview-version-1.2.1
+4ea4846c4d5a07551b01a49f68ed33861b858f48 hgview-debian-version-1.2.1-1
+d43754c8e5b5a69629c3f43b196623566054e20c hgview-version-1.3.0
+6943514c2fd9fdfb8c8402d73be20582654a43eb hgview-debian-version-1.3.0-1
+6185693231cf348fa8197a7d7ea7a1eb3c9698ff hgview-debian-version-1.3.0-2
+1576aa8d7b128d84aef15473b81f4af09f8f6b2b hgview-version-1.4.0
+9521511a6e37c94ca0096fd6df128c3f94bc465f hgview-debian-version-1.4.0-1
+846104aaa0ceea947963bcc0c7d7abd3d2a3eee1 hgview-debian-version-1.4.0-2
+9246f0e562415e89a9fcbcf8529564b22a63791d hgview-version-1.5.0
+09ed7f71fac79b05e71611b85ef0da7dbd8327fa hgview-debian-version-1.5.0-1
+ca12fd67dc852bc72a607348fabb1ac82e9cf4b7 hgview-debian-version-1.5.0-2
+d67cbb4e5651605a679302653914cfe517fd6b16 hgview-debian-version-1.5.0-3
+8a812760e40d225204fb6ea289518908ac6893e3 hgview-debian-version-1.5.0-4
+bfb04dc8ee733a0d759284da8835f8b4d75c6fc2 hgview-version-1.6.0
+94b961892fa3daffffbc33fa4d3b0737b21b784f hgview-debian-version-1.6.0-1
+c1473c36b074f785b80d8ec77d27aa2c444ea29e hgview-version-1.6.1
+0cc1496d79e05d552c21979bfdd23b7c63e21be1 hgview-debian-version-1.6.1-1
+dc7d520807e75ee4dc11e28bce50ec456294cb03 hgview-version-1.6.2
+fbdd0bcc8831869cb3308bfb327ef8edd9f46333 hgview-debian-version-1.6.2-1
+a89457f576bd48d00404a1408999f262007c86cf hgview-version-1.7.0
+941c4a14903a9531e8ae44353f6f84ecc441d673 hgview-debian-version-1.7.0-1
+5adac93dd2053507e886ba49b44ca921c2e20ae3 hgview-version-1.7.1
+b2001e2a1c3d0785f6425f5e1e96379844b74ba7 hgview-debian-version-1.7.1-1
+d989ad60fe6d2906cdb93540ff045a47faeca196 hgview-debian-version-1.7.1-2
+39df8aeb7244d28450fec23f6b3aa02ef375b94d hgview-version-1.8.0
+b182f0d0d571cd212383cdcdc24efdcd5df6b1ad hgview-debian-version-1.8.0-1
+08c8f9749a6f29b20527cd23b5a4dbdff6ca39b0 hgview-version-1.8.1
+08c8f9749a6f29b20527cd23b5a4dbdff6ca39b0 hgview-debian-version-1.8.1-1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/MANIFEST.in new/hgview-1.8.2/MANIFEST.in
--- old/hgview-1.8.1/MANIFEST.in        1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/MANIFEST.in        2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,35 @@
+exclude .hgignore
+recursive-exclude debian *
+recursive-exclude test *
+recursive-exclude debian.hardy *
+recursive-exclude debian.lenny *
+recursive-exclude debian.intrepid *
+
+include ChangeLog
+include COPYING
+include README
+
+include bin/hgview
+include bin/hgview.bat
+
+include hgviewlib/qt4/*.ui
+include hgviewlib/qt4/*.py
+include hgviewlib/qt4/hgqv.qrc
+include hgviewlib/qt4/icons/*
+include hgviewlib/qt4/resources/*
+
+include hgviewlib/curses/*.py
+
+include doc/hgview.1.txt
+include doc/Makefile
+include hgext/hgview.py
+
+include hgext/hgview.rc
+include doc/hgqv.1
+include setup.py
+include __pkginfo__.py
+include test/data/hgviewrc
+include test/data/.hgviewrc
+
+
+recursive-include etc *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/PKG-INFO new/hgview-1.8.2/PKG-INFO
--- old/hgview-1.8.1/PKG-INFO   2014-05-15 15:27:17.000000000 +0200
+++ new/hgview-1.8.2/PKG-INFO   1970-01-01 01:00:00.000000000 +0100
@@ -1,85 +0,0 @@
-Metadata-Version: 1.0
-Name: hgview
-Version: 1.8.1
-Summary: a Mercurial interactive history viewer
-Home-page: http://www.logilab.org/projects/hgview
-Author: Logilab
-Author-email: [email protected]
-License: GPL
-Description: Description
-        ===========
-        
-        Its purpose is to easily navigate in a Mercurial repository
-        history. It has been written with efficiency in mind, both in terms
-        of computational efficiency and user experience efficiency.
-        
-        It is written in Python.
-        
-        There are two user interfaces:
-            * a graphical intarfece using PyQt4 and QScintilla, the
-            * a text interface: using urwid, pygments and pyinotify
-        
-        Note that the Qt4 interface is much more complete than the text 
interface.
-        The Qt4 interface provides more views on the repository.
-        
-        hgview intallation notes
-        ========================
-        
-        hgview can be used either as a hg extension, or as a standalone
-        application.
-        
-        The Common library depends on: mercurial (1.0 minimum)
-        The Qt4 interface depends on PyQt4, QScintilla and PyQScintilla, 
DocUtils
-        The Text interfaces depend on urwid (>=0.9.1 for "raw", >=1.0.0 for 
"curses"),
-        pygments and pyinotify
-        
-        
-        Run from the hg repository
-        --------------------------
-        
-        You can run ``hgview`` without installing it.
-        
-        ::
-        
-          hg clone http://hg.logilab.org/hgview
-        
-        You may want to add the following to your main .hgrc file::
-        
-          [extensions]
-          hgext.hgview=path/to/hqgv/hgext/hgview.py
-        
-          [hgview]
-          # your hgview configs statements like:
-          dotradius=6
-          interface=qt # or curses or raw
-          # type hg qv-config to list available options
-        
-        Then from any Mercurial repository::
-        
-          cd <ANY_HG_REPO>
-          hg qv
-        
-        or::
-        
-          export PYTHONPATH=PATH_TO_HGVIEW_DIR:$PYTHONPATH
-          PATH_TO_HGVIEW_DIR/bin/hgview
-        
-        Installing ``hgview``
-        ---------------------
-        
-        Installing ``hgview`` is simply done using usual ``distutils`` script::
-        
-          cd $PATH_TO_HGVIEW_DIR
-          python setup.py install --help # for available options
-          python setup.py install
-        
-        
-        More informations
-        =================
-        
-        See `hg help hgview` for more informations on available configuration
-        options.
-        
-        alain
-        
-Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/bin/hgview_py2exe.py 
new/hgview-1.8.2/bin/hgview_py2exe.py
--- old/hgview-1.8.1/bin/hgview_py2exe.py       1970-01-01 01:00:00.000000000 
+0100
+++ new/hgview-1.8.2/bin/hgview_py2exe.py       2014-07-30 02:48:14.000000000 
+0200
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+# hgview: visual mercurial graphlog browser in PyQt4
+#
+# Copyright 2008-2010 Logilab
+#
+# This software may be used and distributed according to the terms
+# of the GNU General Public License, incorporated herein by reference.
+
+"""
+Hg repository log browser.
+
+This is a standalone version of the application built using py2exe.
+
+See README file included.
+"""
+
+import sys, os
+import os.path as pos
+
+# Standalone version of hgview built with py2exe use its own version
+# of Mercurial. Using configuration from the global Mercurial.ini will be
+# ill-advised as the installed version of Mercurial itself may be
+# different than the one we ship.
+#
+# this will be found next to Mercurial.ini
+path = pos.join(os.path.expanduser('~'), 'hgview.ini')
+os.environ['HGRCPATH'] = path
+
+
+# We could not import the module that defines the original class because
+# of sys._Messagebox missing error (see py2exe.boot_common.py). So, we
+# introspect to get access to the original class.
+LOGPATH = pos.join(pos.expanduser('~'), 'hgview.log') 
+class Stderr(sys.stderr.__class__):
+    def write(self, *args, **kwargs):
+        kwargs['fname'] =  LOGPATH
+       super(Stderr, self).write(*args[:2], **kwargs)
+sys.stderr = Stderr() # open(pos.join(pos.expanduser('~'), 'hgview.log'), 'a')
+# clean log
+if pos.exists(LOGPATH):
+    try:
+        os.remove(LOGPATH)
+    except EnvironmentError: # could not be remove if 2 hgview are opened
+        pass
+
+from hgviewlib.application import main
+
+main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/README.Debian 
new/hgview-1.8.2/debian/README.Debian
--- old/hgview-1.8.1/debian/README.Debian       1970-01-01 01:00:00.000000000 
+0100
+++ new/hgview-1.8.2/debian/README.Debian       2014-07-30 02:48:14.000000000 
+0200
@@ -0,0 +1,8 @@
+To enable hgview as a mercurial extension (launchable with hg qv),
+include the following lines in your hgrc:
+
+[extensions]
+hgview=
+
+
+ -- Alexandre Fayolle <[email protected]>, Wed, 30 Sep 2009 12:53:24 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/changelog 
new/hgview-1.8.2/debian/changelog
--- old/hgview-1.8.1/debian/changelog   1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/changelog   2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,230 @@
+hgview (1.8.2-1) UNRELEASED; urgency=medium
+
+  * new upstream release
+
+ -- Pierre-Yves David <[email protected]>  Tue, 29 Jul 2014 
17:46:49 -0700
+
+hgview (1.8.1-1) unstable; urgency=medium
+
+  [ Pierre-Yves David ]
+  * new upstream release
+    - fixed urwid version check (closes: #743857)
+    - compatible with hg 3.0 (closes: #747899)
+
+ -- Julien Cristau <[email protected]>  Thu, 15 May 2014 15:24:34 +0200
+
+hgview (1.8.0-1) unstable; urgency=medium
+
+  [ Pierre-Yves David ]
+  * new upstream release
+
+ -- Julien Cristau <[email protected]>  Tue, 11 Feb 2014 00:11:56 +0100
+
+hgview (1.7.1-2) unstable; urgency=low
+
+  * Upload to unstable.
+
+ -- Julien Cristau <[email protected]>  Fri, 21 Jun 2013 13:41:07 +0200
+
+hgview (1.7.1-1) experimental; urgency=low
+
+  * New Upstream Release.
+    - compatible with mercurial 2.5
+    - removed sys.path manipulation (closes: #630692)
+
+ -- Pierre-Yves David <[email protected]>  Mon, 28 Jan 2013 
17:34:33 +0100
+
+hgview (1.7.0-1) unstable; urgency=low
+
+  * New Upstream Release.
+
+ -- Pierre-Yves David <[email protected]>  Tue, 13 Nov 2012 
13:38:43 +0100
+
+hgview (1.6.2-1) unstable; urgency=low
+
+  * New Upstream Release.
+
+ -- Pierre-Yves David <[email protected]>  Wed, 08 Aug 2012 
17:39:49 +0200
+
+hgview (1.6.1-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Pierre-Yves David <[email protected]>  Wed, 08 Aug 2012 
14:41:03 +0200
+
+hgview (1.6.0-1) unstable; urgency=low
+
+  * New Upstream Release
+
+ -- Pierre-Yves David <[email protected]>  Mon, 06 Aug 2012 
15:09:10 +0200
+
+hgview (1.5.0-4) unstable; urgency=low
+
+  * Rebuild the source package with the .install files so Ubuntu doesn't get
+    empty binary packages (LP: #929741).  Oops.
+
+ -- Julien Cristau <[email protected]>  Tue, 29 May 2012 18:13:58 +0200
+
+hgview (1.5.0-3) unstable; urgency=low
+
+  * Remove logilab.org ticket references from debian/changelog
+
+ -- Julien Cristau <[email protected]>  Fri, 23 Dec 2011 17:39:27 +0100
+
+hgview (1.5.0-2) unstable; urgency=low
+
+  * Add missing hgpatches directory.
+
+ -- Julien Cristau <[email protected]>  Thu, 22 Dec 2011 17:58:57 +0100
+
+hgview (1.5.0-1) unstable; urgency=low
+
+  * GUI> replace text in description for fancy display
+  * GUI> links in fancy view opens browser
+  * GUI> Add support for incoming phase feature in hg 2.1
+    Node have different shape given their phase.
+  * TUI> fancier graph highlighting in TUI
+  * TUI> add history and completion for command
+  * TUI> display text translation in source/diff pane
+  * Hg> Allow toggle hidden changesets visibility
+  * Hg> improve mq support
+  * Hg> enable --profile/--time/--traceback/--debug options
+    as mercurial extension
+  * support mercurial 2.0
+  * bugfixes
+  * others
+
+ -- Alain Leufroy <[email protected]>  Wed, 21 Dec 2011 12:00:00 +0100
+
+hgview (1.4.0-2) unstable; urgency=low
+
+  * Fix upgrade path to 1.4.  Thanks to Nicolas Chauvat for the report.
+
+ -- Julien Cristau <[email protected]>  Thu, 29 Sep 2011 14:43:08 +0200
+
+hgview (1.4.0-1) unstable; urgency=low
+
+  * Add a new text based user interface
+  * Remove mx.Datetime dependency
+  * Don't crash/close when exploring an empty repository
+  * Propagate errors from mercurial.hg.repository()
+
+ -- Alain Leufroy <[email protected]>  Mon, 26 Sep 2011 15:22:18 +0200
+
+hgview (1.3.0-2) unstable; urgency=low
+
+  * Switch to dh_python2 (closes: #637400).
+
+ -- Julien Cristau <[email protected]>  Tue, 16 Aug 2011 16:31:54 +0200
+
+hgview (1.3.0-1) unstable; urgency=low
+
+  * New upstream release (closes: #633813)
+
+ -- Alain Leufroy <[email protected]>  Mon, 30 May 2011 10:46:38 +0200
+
+hgview (1.2.1-1) unstable; urgency=low
+
+  * New upstream release (closes: #580997, #558767, #580921)
+  * Updated standards to 3.9.1 (no changes required)
+
+ -- Alexandre Fayolle <[email protected]>  Wed, 25 Aug 2010 16:07:52 +0200
+
+hgview (1.2.0-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- David Douard <[email protected]>  Tue, 19 Jan 2010 09:02:46 +0100
+
+hgview (1.1.3-1) unstable; urgency=low
+
+  * New upstream release, adding missing files in the source tarball
+  * debian/control:
+    - changed section to 'vcs' (closes: #549162)
+
+ -- Alexandre Fayolle <[email protected]>  Thu, 08 Oct 2009 10:55:02 +0200
+
+hgview (1.1.2-1) unstable; urgency=low
+
+  * new upstream release
+  * debian/control:
+    - fixed build dependencies to include pyqt4-dev-tools
+    - added missing substvars in package dependencies (closes: #548522)
+
+ -- Alexandre Fayolle <[email protected]>  Wed, 30 Sep 2009 15:44:09 +0200
+
+hgview (1.1.1-1) unstable; urgency=low
+
+  * new upstream release
+  * upload to Debian (closes #409341)
+
+ -- Alexandre Fayolle <[email protected]>  Fri, 25 Sep 2009 17:53:09 +0200
+
+hgview (1.1.0-1) unstable; urgency=low
+
+  * updated to mainstream 1.1.0
+
+ -- David Douard <[email protected]>  Wed, 23 Sep 2009 18:34:01 +0200
+
+hgview (1.0.1-1) unstable; urgency=low
+
+  * updated to mainstream 1.0.1
+
+ -- David Douard <[email protected]>  Mon, 08 Jun 2009 07:14:55 +0200
+
+hgview (1.0.0-1) unstable; urgency=low
+
+  * first stable release
+
+ -- David Douard <[email protected]>  Thu, 05 May 2009 14:58:23 +0100
+
+hgview (0.99.0-1) unstable; urgency=low
+
+  * Fork from hgview to build a Qt4-only based application
+  * Make it work as a hg extension
+  * Rework keybindings and general navigation
+  * Add a diff viewer between revisions of a file 
+
+ -- David Douard <[email protected]>  Thu, 19 Feb 2009 00:58:23 +0100
+
+hgview (0.9.1-1) unstable; urgency=low
+
+  * Fix a format bug and clean code.
+
+ -- Graziella Toutoungis <[email protected]>  Tue, 28 Oct 2008 
16:24:47 +0200
+
+hgview (0.9.0-1) unstable; urgency=low
+
+  * Add support for named branches     
+  * Activate filter on the log description and file name.
+  * Add Homepage field
+
+ -- Graziella Toutoungis <[email protected]>  Mon, 06 Oct 2008 
15:24:47 +0200
+
+hgview (0.3.1-2) unstable; urgency=low
+
+  * Rebuild with python2.5 as default version
+
+ -- Alexandre.Fayolle <[email protected]>  Wed, 18 Jun 2008 12:24:47 +0200
+
+hgview (0.3.1-1) unstable; urgency=low
+
+  * Bugfixes
+
+ -- David Douard <[email protected]>  Fri, 15 May 2008 09:48:00 +0200
+
+
+hgview (0.3.0-1) unstable; urgency=low
+
+  * Added a Qt4 version 
+  * Some bugfixes
+  * Major code reorganization
+
+ -- David Douard <[email protected]>  Fri, 15 Jun 2007 12:59:12 +0200
+
+hgview (0.2.0-1) unstable; urgency=low
+
+  * first Debian package
+
+ -- David Douard <[email protected]>  Tue, 29 May 2007 15:38:21 +0200
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/compat 
new/hgview-1.8.2/debian/compat
--- old/hgview-1.8.1/debian/compat      1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/compat      2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1 @@
+5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/control 
new/hgview-1.8.2/debian/control
--- old/hgview-1.8.1/debian/control     1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/control     2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,66 @@
+Source: hgview
+Section: vcs
+Priority: optional
+Maintainer: David Douard <[email protected]>
+Uploaders: Julien Cristau <[email protected]>, Alain Leufroy 
<[email protected]>, Pierre-Yves David <[email protected]>, 
Pierre-Yves David <[email protected]>,
+Build-Depends: debhelper (>= 5.0.38), pyqt4-dev-tools, python (>=2.6.6-3~), 
xmlto, asciidoc, mercurial
+X-Python-Version: >= 2.5
+Standards-Version: 3.9.1
+Vcs-Hg: http://hg.logilab.org/master/hgview/
+Vcs-Browser: http://hg.logilab.org/master/hgview/
+Homepage: http://www.hgview.org/
+
+Package: hgview
+Architecture: all
+Depends: 
+  ${python:Depends},
+  ${misc:Depends},
+  python-qt4,
+  python-qscintilla2,
+  python-docutils,
+  hgview-common (= ${source:Version})
+Enhances: mercurial
+Description: mercurial interactive history viewer (Qt4 interface)
+ Its purpose is to easily navigate in a mercurial repository
+ history. It has been written with efficiency in mind when dealing
+ with quite big repositories.
+ .
+ This package installs the Qt4 interface.
+
+Package: hgview-common
+Architecture: all
+Depends:
+  ${python:Depends},
+  ${misc:Depends},
+  mercurial (>= 1.9.1-1),
+Enhances: mercurial
+Breaks: hgview (<< 1.4)
+Replaces: hgview (<< 1.4)
+Recommends: hgview | hgview-curses
+Description: mercurial interactive history viewer (common files)
+ Its purpose is to easily navigate in a mercurial repository
+ history. It has been written with efficiency in mind when dealing
+ with quite big repositories.
+ .
+ This package install the common files.
+ You may want to install a user interface (hgview or hgview-curses).
+
+Package: hgview-curses
+Architecture: all
+Depends:
+ ${python:Depends},
+ ${misc:Depends},
+ python-urwid,
+ python-pygments,
+ python-pyinotify,
+ hgview-common (= ${source:Version}),
+Enhances: mercurial
+Description: mercurial interactive history viewer (text interface)
+ Its purpose is to easily navigate in a mercurial repository
+ history. It has been written with efficiency in mind when dealing
+ with quite big repositories.
+ .
+ This package installs the text interface. 
+ Note that the Qt interface is more complete than the text interface and
+ provides more views.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/copyright 
new/hgview-1.8.2/debian/copyright
--- old/hgview-1.8.1/debian/copyright   1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/copyright   2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,28 @@
+This package was debianized by Logilab <[email protected]>  Sat, 13 Apr 2002 
19:05:23 +0200.
+
+It was downloaded from ftp://ftp.logilab.org/pub/hgview
+
+Upstream Author: 
+
+  Logilab <[email protected]>
+
+Copyright:
+
+Copyright (c) 2004-2012 LOGILAB S.A. (Paris, FRANCE).
+http://www.logilab.fr/ -- mailto:[email protected]
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+On Debian systems, the complete text of the GNU General Public License
+may be found in '/usr/share/common-licenses/GPL'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/hgview-common.install 
new/hgview-1.8.2/debian/hgview-common.install
--- old/hgview-1.8.1/debian/hgview-common.install       1970-01-01 
01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/hgview-common.install       2014-07-30 
02:48:14.000000000 +0200
@@ -0,0 +1,5 @@
+usr/lib/python*/*-packages/hgext
+usr/lib/python*/*-packages/hgviewlib/*.py
+usr/lib/python*/*-packages/hgviewlib/hgpatches
+usr/bin
+usr/man /usr/share
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/hgview-curses.install 
new/hgview-1.8.2/debian/hgview-curses.install
--- old/hgview-1.8.1/debian/hgview-curses.install       1970-01-01 
01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/hgview-curses.install       2014-07-30 
02:48:14.000000000 +0200
@@ -0,0 +1 @@
+usr/lib/python*/*-packages/hgviewlib/curses
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/hgview.install 
new/hgview-1.8.2/debian/hgview.install
--- old/hgview-1.8.1/debian/hgview.install      1970-01-01 01:00:00.000000000 
+0100
+++ new/hgview-1.8.2/debian/hgview.install      2014-07-30 02:48:14.000000000 
+0200
@@ -0,0 +1,2 @@
+usr/lib/python*/*-packages/hgviewlib/qt4
+usr/share/doc/hgview
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/rules 
new/hgview-1.8.2/debian/rules
--- old/hgview-1.8.1/debian/rules       1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/rules       2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+#
+# adapted by Logilab for automatic generation by debianize
+# (part of the devtools project, http://www.logilab.org/projects/devtools)
+#
+# Copyright (c) 2003-2012 LOGILAB S.A. (Paris, FRANCE).
+# http://www.logilab.fr/ -- mailto:[email protected]
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+build-stamp: 
+       dh_testdir
+       python setup.py -q build 
+       touch build-stamp
+
+clean: 
+       dh_testdir
+       rm -f build-stamp configure-stamp
+       rm -rf build
+       python setup.py clean
+       rm -f hgviewlib/qt4/*_ui.py hgviewlib/qt4/hgqv_rc.py
+       make -C doc clean
+       find . -name "*.pyc" | xargs rm -f
+       rm -f changelog.gz
+       dh_clean
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k
+       dh_installdirs
+       python setup.py -q install --no-compile --root=$(CURDIR)/debian/tmp/ 
--install-layout=deb
+       rm -rf debian/tmp/usr/lib/python*/site-packages/hgview/test
+       rm -f debian/tmp/usr/lib/python*/site-packages/hgext/__init__.py*
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+       dh_testdir 
+       dh_testroot 
+       dh_install -i --list-missing --sourcedir=debian/tmp
+       dh_python2 -i
+       dh_installchangelogs -i ChangeLog
+       dh_installexamples -i
+       dh_installdocs -i 
+       dh_installman -i
+       dh_link -i
+       dh_compress -i -X.py -X.ini -X.xml -Xtest
+       dh_fixperms -i
+       dh_installdeb -i
+       dh_gencontrol -i 
+       dh_md5sums -i
+       dh_builddeb -i
+
+
+binary: binary-indep
+binary-arch:
+
+.PHONY: build clean binary binary-indep binary-arch
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/source/format 
new/hgview-1.8.2/debian/source/format
--- old/hgview-1.8.1/debian/source/format       1970-01-01 01:00:00.000000000 
+0100
+++ new/hgview-1.8.2/debian/source/format       2014-07-30 02:48:14.000000000 
+0200
@@ -0,0 +1 @@
+1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian/watch 
new/hgview-1.8.2/debian/watch
--- old/hgview-1.8.1/debian/watch       1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian/watch       2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,2 @@
+version=3
+http://download.logilab.org/pub/hgview/ hgview-(.*)\.tar\.gz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian.maverick 
new/hgview-1.8.2/debian.maverick
--- old/hgview-1.8.1/debian.maverick    1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian.maverick    2014-08-20 10:51:30.000000000 +0200
@@ -0,0 +1 @@
+symbolic link to debian.squeeze
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian.natty 
new/hgview-1.8.2/debian.natty
--- old/hgview-1.8.1/debian.natty       1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/debian.natty       2014-08-20 10:51:30.000000000 +0200
@@ -0,0 +1 @@
+symbolic link to debian.squeeze
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian.squeeze/control 
new/hgview-1.8.2/debian.squeeze/control
--- old/hgview-1.8.1/debian.squeeze/control     1970-01-01 01:00:00.000000000 
+0100
+++ new/hgview-1.8.2/debian.squeeze/control     2014-07-30 02:48:14.000000000 
+0200
@@ -0,0 +1,67 @@
+Source: hgview
+Section: vcs
+Priority: optional
+Maintainer: David Douard <[email protected]>
+Uploaders: Julien Cristau <[email protected]>, Alain Leufroy 
<[email protected]>, Pierre-Yves David <[email protected]>
+Build-Depends: debhelper (>= 5.0.38), pyqt4-dev-tools, python (>=2.5), xmlto, 
asciidoc, mercurial
+Build-Depends-Indep: python-support
+XS-Python-Version: >= 2.5
+Standards-Version: 3.9.1
+Vcs-Hg: http://www.logilab.org/cgi-bin/hgwebdir.cgi/hgview
+Vcs-Browser: http://www.logilab.org/cgi-bin/hgwebdir.cgi/hgview
+Homepage: http://www.logilab.org/project/hgview
+
+Package: hgview
+Architecture: all
+Depends: 
+  ${python:Depends},
+  ${misc:Depends},
+  python-qt4,
+  python-qscintilla2,
+  python-docutils,
+  hgview-common (= ${source:Version})
+Enhances: mercurial
+Description: mercurial interactive history viewer (Qt4 interface)
+ Its purpose is to easily navigate in a mercurial repository
+ history. It has been written with efficiency in mind when dealing
+ with quite big repositories.
+ .
+ This package installs the Qt4 interface.
+
+Package: hgview-common
+Architecture: all
+Depends:
+  ${python:Depends},
+  ${misc:Depends},
+  mercurial (>= 1.9.1-1),
+Enhances: mercurial
+Replaces: hgview (<< 1.4)
+Conflicts: hgview (<< 1.4)
+Recommends: hgview | hgview-curses
+Description: mercurial interactive history viewer (common files)
+ Its purpose is to easily navigate in a mercurial repository
+ history. It has been written with efficiency in mind when dealing
+ with quite big repositories.
+ .
+ This package install the common files.
+ You may want to install a user interface (hgview or hgview-curses).
+
+Package: hgview-curses
+Architecture: all
+Depends:
+ ${python:Depends},
+ ${misc:Depends},
+ python-urwid,
+ python-pygments,
+ python-pyinotify,
+ hgview-common (= ${source:Version}),
+Enhances: mercurial
+Description: mercurial interactive history viewer (text interface)
+ Its purpose is to easily navigate in a mercurial repository
+ history. It has been written with efficiency in mind when dealing
+ with quite big repositories.
+ .
+ This package installs the text interface. 
+ Note that the Qt interface is more complete than the text interface and
+ provides more views.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/debian.squeeze/rules 
new/hgview-1.8.2/debian.squeeze/rules
--- old/hgview-1.8.1/debian.squeeze/rules       1970-01-01 01:00:00.000000000 
+0100
+++ new/hgview-1.8.2/debian.squeeze/rules       2014-07-30 02:48:14.000000000 
+0200
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+#
+# adapted by Logilab for automatic generation by debianize
+# (part of the devtools project, http://www.logilab.org/projects/devtools)
+#
+# Copyright (c) 2003-2012 LOGILAB S.A. (Paris, FRANCE).
+# http://www.logilab.fr/ -- mailto:[email protected]
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+build-stamp: 
+       dh_testdir
+       python setup.py -q build 
+       touch build-stamp
+
+clean: 
+       dh_testdir
+       rm -f build-stamp configure-stamp
+       rm -rf build
+       python setup.py clean
+       rm -f hgviewlib/qt4/*_ui.py hgviewlib/qt4/hgqv_rc.py
+       make -C doc clean
+       find . -name "*.pyc" | xargs rm -f
+       rm -f changelog.gz
+       dh_clean
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k
+       dh_installdirs
+       python setup.py -q install --no-compile --root=$(CURDIR)/debian/tmp/ 
--install-layout=deb
+       rm -rf debian/tmp/usr/lib/python*/site-packages/hgview/test
+       rm -f debian/tmp/usr/lib/python*/site-packages/hgext/__init__.py*
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+       dh_testdir 
+       dh_testroot 
+       dh_install -i --list-missing --sourcedir=debian/tmp
+       dh_pysupport -i
+       dh_installchangelogs -i ChangeLog
+       dh_installexamples -i
+       dh_installdocs -i 
+       dh_installman -i
+       dh_link -i
+       dh_compress -i -X.py -X.ini -X.xml -Xtest
+       dh_fixperms -i
+       dh_installdeb -i
+       dh_gencontrol -i 
+       dh_md5sums -i
+       dh_builddeb -i
+
+
+binary: binary-indep
+binary-arch:
+
+.PHONY: build clean binary binary-indep binary-arch
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgext/hgview.py 
new/hgview-1.8.2/hgext/hgview.py
--- old/hgview-1.8.1/hgext/hgview.py    2014-05-15 15:27:12.000000000 +0200
+++ new/hgview-1.8.2/hgext/hgview.py    2014-07-30 02:48:14.000000000 +0200
@@ -11,7 +11,7 @@
 graphical way. It requires PyQt4 with QScintilla.
 '''
 
-testedwith = '2.4'
+testedwith = '2.9 3.0 3.0.1'
 
 buglink = 'https://www.logilab.org/project/hgview'
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgviewlib/__pkginfo__.py 
new/hgview-1.8.2/hgviewlib/__pkginfo__.py
--- old/hgview-1.8.1/hgviewlib/__pkginfo__.py   2014-05-15 15:27:12.000000000 
+0200
+++ new/hgview-1.8.2/hgviewlib/__pkginfo__.py   2014-07-30 02:48:14.000000000 
+0200
@@ -18,7 +18,7 @@
 import glob
 from os.path import join as joinpath
 distname = modname = 'hgview'
-numversion = (1, 8, 1)
+numversion = (1, 8, 2)
 version = '.'.join([str(num) for num in numversion])
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hgview-1.8.1/hgviewlib/curses/tests/tests_application_patches.py 
new/hgview-1.8.2/hgviewlib/curses/tests/tests_application_patches.py
--- old/hgview-1.8.1/hgviewlib/curses/tests/tests_application_patches.py        
1970-01-01 01:00:00.000000000 +0100
+++ new/hgview-1.8.2/hgviewlib/curses/tests/tests_application_patches.py        
2014-07-30 02:48:14.000000000 +0200
@@ -0,0 +1,63 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2003-2012 LOGILAB S.A. (Paris, FRANCE).
+# http://www.logilab.fr/ -- mailto:[email protected]
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from doctest import testmod
+from unittest import main, TestCase
+
+import logging
+
+import urwid
+
+from hgviewlib.curses.application import *
+
+class TestConnectLogging(TestCase):
+    def setUp(self):
+        from urwid import Text, Filler, Text, raw_display, MainLoop
+        from hgviewlib.curses.application import connect_logging
+        from hgviewlib.curses import MainFrame, Body
+        import logging
+        PALETTE = [('default','default','default'),
+                   ('edit', 'white', 'default'),
+                   ('banner','black','light gray'),
+                   ('DEBUG', 'yellow', 'default'),
+                   ('INFO', 'dark gray', 'default'),
+                   ('WARNING', 'brown', 'default'),
+                   ('ERROR', 'light red', 'default'),
+                   ('CRITICAL', 'white', 'dark red'),
+                  ]
+        self.mainframe = MainFrame('', Body(Filler(Text('Hello world'))))
+        screen = raw_display.Screen()
+        mainloop = MainLoop(self.mainframe, PALETTE, screen)
+        connect_logging(mainloop, logging.DEBUG)
+
+    def test_simple_info(self):
+        logging.info('noo')
+        res = self.mainframe.render((15, 2), False).text
+        self.assertEqual('noo', self.mainframe.footer.get_text()[0])
+        self.assertEqual('INFO', self.mainframe.footer.attr)
+
+    def test_display_traceback(self):
+        try:
+            1/0
+        except:
+            logging.debug('hello world', exc_info=True)
+        res = self.mainframe.footer.get_text()[0].splitlines()
+        ref = ['hello world', 'Traceback (most recent call last):']
+        self.assertEqual(ref, res[:2])
+
+if __name__ == '__main__':
+    main()
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgviewlib/curses/tests/tests_utils.py 
new/hgview-1.8.2/hgviewlib/curses/tests/tests_utils.py
--- old/hgview-1.8.1/hgviewlib/curses/tests/tests_utils.py      1970-01-01 
01:00:00.000000000 +0100
+++ new/hgview-1.8.2/hgviewlib/curses/tests/tests_utils.py      2014-07-30 
02:48:14.000000000 +0200
@@ -0,0 +1,193 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2003-2012 LOGILAB S.A. (Paris, FRANCE).
+# http://www.logilab.fr/ -- mailto:[email protected]
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from doctest import testmod
+from unittest import main, TestCase
+
+import logging
+
+import urwid
+
+from hgviewlib.curses import utils, exceptions
+
+class TestCommandsRegister(TestCase):
+
+    def tearDown(self):
+        utils.unregister_command('foo')
+
+    def test_unregister_not_registered(self):
+        res = utils.unregister_command('babar')
+        self.assertEqual(None, res)
+
+    def test_register_multiple_times(self):
+        utils.register_command('foo', 'A command')
+        self.assertRaises(exceptions.RegisterCommandError,
+                          utils.register_command, 'foo', 'Another command')
+
+    def test_register_minimal(self):
+        utils.register_command('foo', 'A command')
+        res = utils.unregister_command('foo')
+        self.assertEqual(('A command', (), []), res)
+        utils.register_command('foo', 'Another command') # no exception
+        res = utils.unregister_command('foo')
+        self.assertEqual(('Another command', (), []), res)
+
+    def test_register_bad_args(self):
+        self.assertRaises(exceptions.RegisterCommandError,
+                          utils.register_command, 'foo', '', 1)
+
+    def test_register_complete(self):
+        args = (utils.CommandArg('arg1', int, 'argument1'),
+                utils.CommandArg('arg2', float, 'argument2'),)
+        utils.register_command('foo', 'A command', *args)
+        res = utils.unregister_command('foo')
+        self.assertEqual(('A command', args, []), res)
+
+    def test_help_minimal(self):
+        utils.register_command('foo', 'A command')
+        ref = ['usage: foo',
+               'A command ',
+               '          ']
+        res = urwid.Text(utils.help_command('foo')).render((10,)).text
+        self.assertEqual(ref, res)
+
+    def test_help_complete(self):
+        args = (utils.CommandArg('arg1', int, 'argument1'),
+                utils.CommandArg('arg2', float, 'argument2'),)
+        utils.register_command('foo', 'A command', *args)
+        res = urwid.Text(utils.help_command('foo')).render((20,)).text
+        ref = ['usage: foo arg1 arg2',
+               'A command           ',
+               ':arg1: argument1    ',
+               ':arg2: argument2    ',
+               '                    ',
+               ]
+        self.assertEqual(ref, res)
+
+    def test_disconnect_not_registered(self):
+        callback = lambda: True
+        self.assertRaises(exceptions.RegisterCommandError,
+                          utils.disconnect_command, 'foo', callback)
+
+    def test_disconnect_not_connected(self):
+        utils.register_command('foo', 'A command')
+        callback = lambda: True
+        self.assertRaises(exceptions.RegisterCommandError,
+                          utils.disconnect_command, 'foo', callback)
+
+    def connect_not_registered(self):
+        self.assertRaises(exceptions.RegisterCommandError,
+                          utils.connect_command, 'foo', callback)
+
+    def test_connects_noargs(self):
+        utils.register_command('foo', 'A command')
+        func1 = lambda: True
+        func2 = lambda: True
+        utils.connect_command('foo', func1)
+        utils.connect_command('foo', func2)
+        ref = ('A command', (), [(func1, (), {}),
+                                 (func2, (), {})])
+        res = utils.unregister_command('foo')
+        self.assertEqual(ref, res)
+
+    def test_connect_complete(self):
+        utils.register_command('foo', 'A command')
+        func1 = lambda: True
+        func2 = lambda a, b, c, d: True
+        utils.connect_command('foo', func1)
+        utils.connect_command('foo', func2, args=(1,2), kwargs={'c':3, 'd':4})
+        ref = ('A command', (),
+               [(func1, (), {}),
+                (func2, (1, 2), {'c':3, 'd':4})])
+        res = utils.unregister_command('foo')
+        self.assertEqual(ref, res)
+
+    def test_disconnect(self):
+        utils.register_command('foo', 'A command')
+        func1 = lambda: True
+        func2 = lambda a, b, c, d: True
+        utils.connect_command('foo', func1)
+        utils.connect_command('foo', func2, args=(1,2), kwargs={'c':3, 'd':4})
+        utils.disconnect_command('foo', func2, args=(1,2), kwargs={'c':3, 
'd':4})
+        ref = ('A command', (), [(func1, (), {})])
+        res = utils.unregister_command('foo')
+        self.assertEqual(ref, res)
+
+    def test_emit_not_registered(self):
+        self.assertRaises(exceptions.UnknownCommand,
+                          utils.emit_command, 'foo')
+
+    def test_emit_not_connected(self):
+        utils.register_command('foo', 'A command')
+        self.assertEqual(False, utils.emit_command('foo'))
+
+    def test_emit_minimal(self):
+        utils.register_command('foo', 'A command')
+
+        func3 = lambda a, b, c, d: a==1 and b==2 and c==3 and d==5
+        utils.connect_command('foo', func3, args=(1,2), kwargs={'c':3, 'd':4})
+        self.assertEqual(False, utils.emit_command('foo'))
+
+        func1 = lambda: True
+        utils.connect_command('foo', func1)
+        self.assertEqual(True, utils.emit_command('foo'))
+        utils.disconnect_command('foo', func1)
+
+        func2 = lambda a, b, c, d: a==1 and b==2 and c==3 and d==4
+        utils.connect_command('foo', func2, args=(1,2), kwargs={'c':3, 'd':4})
+        self.assertEqual(True, utils.emit_command('foo'))
+
+    def test_emit_with_args(self):
+        utils.register_command('foo', 'A command')
+
+        func3 = lambda a, b, c, d: a==1 and b==2 and c==3 and d==5
+        utils.connect_command('foo', func3, args=(1,), kwargs={'c':3})
+        self.assertEqual(False, utils.emit_command('foo', args=(2,), 
kwargs={'d':4}))
+
+        func1 = lambda a, d: a==2 and d==4
+        utils.connect_command('foo', func1)
+        self.assertEqual(True, utils.emit_command('foo', args=(2,), 
kwargs={'d':4}))
+        utils.disconnect_command('foo', func1)
+
+        func2 = lambda a, b, c, d: a==1 and b==2 and c==3 and d==4
+        utils.connect_command('foo', func3, args=(1,), kwargs={'c':3})
+        self.assertEqual(False, utils.emit_command('foo', args=(2,), 
kwargs={'d':4}))
+
+    def test_emit_convert_cmdargs(self):
+        cmd = 'foo 1 2 2+1 4.'
+        args = (utils.CommandArg('a', int, 'argument1'),
+                utils.CommandArg('b', str, 'argument2'),
+                utils.CommandArg('c', eval, 'argument2'),
+                utils.CommandArg('d', float, 'argument2'), )
+        utils.register_command('foo', 'A command', *args)
+
+        func = lambda a, b, c, d: a==1 and b=="2" and c==3 and d==4.
+        utils.connect_command('foo', func)
+        self.assertEqual(True, utils.emit_command(cmd))
+
+    def test_emit_convert_mixed(self):
+        cmd = 'foo "2 + 1" 4.'
+        args = (utils.CommandArg('c', eval, 'argument2'),
+                utils.CommandArg('d', float, 'argument2'), )
+        utils.register_command('foo', 'A command', *args)
+
+        func3 = lambda a, b, c, d, e, f: (a,b,c,d,e,f) == (1, "2", 3, 4., 5, 6)
+        utils.connect_command('foo', func3, args=(1,), kwargs={'e':5})
+        self.assertEqual(True, utils.emit_command(cmd, ("2",), {'f':6}))
+
+if __name__ == '__main__':
+    testmod(utils)
+    main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgviewlib/hggraph.py 
new/hgview-1.8.2/hgviewlib/hggraph.py
--- old/hgview-1.8.1/hgviewlib/hggraph.py       2014-05-15 15:27:12.000000000 
+0200
+++ new/hgview-1.8.2/hgviewlib/hggraph.py       2014-07-30 02:48:14.000000000 
+0200
@@ -139,7 +139,7 @@
 
 def _dirty_wc(repo):
     """return true if the working directory has changes"""
-    return repo.status() != ([],)*7  # dirty working dir
+    return bool(sum(len(l) for l in repo.status())) # dirty working dir
 
 def _rev_order(phaserevs, rev):
     """return a sort key for changeset reordering (<freshness>, rev)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgviewlib/hgpatches/mqsupport.py 
new/hgview-1.8.2/hgviewlib/hgpatches/mqsupport.py
--- old/hgview-1.8.1/hgviewlib/hgpatches/mqsupport.py   2014-05-15 
15:27:12.000000000 +0200
+++ new/hgview-1.8.2/hgviewlib/hgpatches/mqsupport.py   2014-07-30 
02:48:14.000000000 +0200
@@ -335,8 +335,9 @@
                 ctx2 = node2
             else:
                 ctx2 = self[node2]
-            if not isinstance(ctx1, MqCtx) and not isinstance(ctx2, MqCtx):
-                return status_orig(ctx1, ctx2, match, *args, **kwargs)
+
+            if not (isinstance(ctx1, MqCtx) or isinstance(ctx2, MqCtx)):
+                return super(MqRepository, self).status(ctx1, ctx2, match, 
*args, **kwargs)
             # modified, added, removed, deleted, unknown
             status = ([], [], [], [], [], [], [])
             if match is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgviewlib/qt4/hgfileview.py 
new/hgview-1.8.2/hgviewlib/qt4/hgfileview.py
--- old/hgview-1.8.1/hgviewlib/qt4/hgfileview.py        2014-05-15 
15:27:12.000000000 +0200
+++ new/hgview-1.8.2/hgviewlib/qt4/hgfileview.py        2014-07-30 
02:48:14.000000000 +0200
@@ -380,6 +380,8 @@
             flag, data = self._model.graph.filedata(filename, self._ctx.rev(), 
mode, maxfilesize=-1)
         else:
             flag, data = self._model.graph.filedata(filename, self._ctx.rev(), 
mode)
+        if data and data[-1] == '\n':
+            data = data[:-1]
         if flag == 'file too big':
             self.filedata_frame.hide()
             message = (('<center>'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgviewlib/qt4/hgrepomodel.py 
new/hgview-1.8.2/hgviewlib/qt4/hgrepomodel.py
--- old/hgview-1.8.1/hgviewlib/qt4/hgrepomodel.py       2014-05-15 
15:27:12.000000000 +0200
+++ new/hgview-1.8.2/hgviewlib/qt4/hgrepomodel.py       2014-07-30 
02:48:14.000000000 +0200
@@ -394,6 +394,9 @@
     def __len__(self):
         return len(self._files)
 
+    def __contains__(self, filename):
+        return filename in self._filesdict
+
     def rowCount(self, parent=None):
         return len(self)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hgview-1.8.1/hgviewlib/qt4/hgrepoviewer.py 
new/hgview-1.8.2/hgviewlib/qt4/hgrepoviewer.py
--- old/hgview-1.8.1/hgviewlib/qt4/hgrepoviewer.py      2014-05-15 
15:27:12.000000000 +0200
+++ new/hgview-1.8.2/hgviewlib/qt4/hgrepoviewer.py      2014-07-30 
02:48:14.000000000 +0200
@@ -423,7 +423,7 @@
                 self.statusBar().showMessage,
                 Qt.QueuedConnection)
 
-        self.filelistmodel = HgFileListModel(self.repo)
+        self.filelistmodel = HgFileListModel(self.repo, parent=self)
 
     def setupModels(self, fromhead=None):
         self.create_models(fromhead)
@@ -535,6 +535,7 @@
                 return
             rev = view.revFromindex(indexes[0])
         ctx = self.repomodel.repo[rev]
+        filename = self.tableView_filelist.currentFile() # save before refresh
         self.textview_status.setContext(ctx)
         if self.repomodel.show_hidden:
             self.textview_header.excluded = ()
@@ -543,7 +544,11 @@
         self.textview_header.displayRevision(ctx)
         self.filelistmodel.setSelectedRev(ctx)
         if len(self.filelistmodel):
-            self.tableView_filelist.selectRow(0)
+            if filename not in self.filelistmodel:
+                filename = self.filelistmodel.file(0)
+            self.tableView_filelist.selectFile(filename)
+            self.tableView_filelist.file_selected[str].emit(
+                filename)
 
     def goto(self, rev):
         if len(self.tableView_revisions.model().graph):

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to