Update license to GPLv2+ stable
authorMatt Mackall <mpm@selenic.com>
Tue, 19 Jan 2010 22:20:08 -0600
branchstable
changeset 10263 25e572394f5c3bae9c4706b5529cb78555295a85
parent 10262 eb243551cbd8889e264fef74ea18e5e56a7e98ee
child 10264 d6512b3e9ac0dc97166f4e5dfac86891069291df
child 10265 0d8577e1f56b272698f07c0408f677b7072af661
push id1
push usergszorc@mozilla.com
push dateWed, 18 Mar 2015 16:34:57 +0000
Update license to GPLv2+
contrib/hg-ssh
contrib/mercurial.el
contrib/mercurial.spec
contrib/mq.el
contrib/win32/ReadMe.html
doc/hg.1.txt
doc/hgignore.5.txt
doc/hgrc.5.txt
hg
hgext/acl.py
hgext/bookmarks.py
hgext/bugzilla.py
hgext/children.py
hgext/churn.py
hgext/convert/__init__.py
hgext/convert/bzr.py
hgext/convert/common.py
hgext/convert/convcmd.py
hgext/convert/cvs.py
hgext/convert/cvsps.py
hgext/convert/darcs.py
hgext/convert/filemap.py
hgext/convert/git.py
hgext/convert/gnuarch.py
hgext/convert/hg.py
hgext/convert/monotone.py
hgext/convert/p4.py
hgext/extdiff.py
hgext/fetch.py
hgext/gpg.py
hgext/graphlog.py
hgext/hgcia.py
hgext/hgk.py
hgext/highlight/__init__.py
hgext/highlight/highlight.py
hgext/inotify/__init__.py
hgext/inotify/client.py
hgext/inotify/common.py
hgext/inotify/linux/__init__.py
hgext/inotify/linux/_inotify.c
hgext/inotify/linux/watcher.py
hgext/inotify/server.py
hgext/interhg.py
hgext/keyword.py
hgext/mq.py
hgext/notify.py
hgext/pager.py
hgext/parentrevspec.py
hgext/patchbomb.py
hgext/rebase.py
hgext/record.py
hgext/relink.py
hgext/schemes.py
hgext/share.py
hgext/transplant.py
hgext/win32mbcs.py
hgext/win32text.py
hgext/zeroconf/__init__.py
i18n/hggettext
mercurial/ancestor.py
mercurial/archival.py
mercurial/bundlerepo.py
mercurial/changegroup.py
mercurial/changelog.py
mercurial/cmdutil.py
mercurial/commands.py
mercurial/config.py
mercurial/context.py
mercurial/copies.py
mercurial/demandimport.py
mercurial/dirstate.py
mercurial/dispatch.py
mercurial/encoding.py
mercurial/error.py
mercurial/extensions.py
mercurial/fancyopts.py
mercurial/filelog.py
mercurial/filemerge.py
mercurial/graphmod.py
mercurial/hbisect.py
mercurial/help.py
mercurial/hg.py
mercurial/hgweb/__init__.py
mercurial/hgweb/common.py
mercurial/hgweb/hgweb_mod.py
mercurial/hgweb/hgwebdir_mod.py
mercurial/hgweb/protocol.py
mercurial/hgweb/request.py
mercurial/hgweb/server.py
mercurial/hgweb/webcommands.py
mercurial/hgweb/webutil.py
mercurial/hgweb/wsgicgi.py
mercurial/hook.py
mercurial/httprepo.py
mercurial/i18n.py
mercurial/ignore.py
mercurial/localrepo.py
mercurial/lock.py
mercurial/mail.py
mercurial/manifest.py
mercurial/match.py
mercurial/mdiff.py
mercurial/merge.py
mercurial/minirst.py
mercurial/node.py
mercurial/patch.py
mercurial/posix.py
mercurial/pure/base85.py
mercurial/pure/bdiff.py
mercurial/pure/diffhelpers.py
mercurial/pure/mpatch.py
mercurial/pure/osutil.py
mercurial/pure/parsers.py
mercurial/repair.py
mercurial/repo.py
mercurial/revlog.py
mercurial/sshrepo.py
mercurial/sshserver.py
mercurial/statichttprepo.py
mercurial/store.py
mercurial/streamclone.py
mercurial/strutil.py
mercurial/subrepo.py
mercurial/tags.py
mercurial/templatefilters.py
mercurial/templater.py
mercurial/transaction.py
mercurial/ui.py
mercurial/url.py
mercurial/util.py
mercurial/verify.py
mercurial/win32.py
mercurial/windows.py
setup.py
tests/printrepr.py
tests/run-tests.py
--- a/contrib/hg-ssh
+++ b/contrib/hg-ssh
@@ -1,17 +1,17 @@
 #!/usr/bin/env python
 #
 # Copyright 2005-2007 by Intevation GmbH <intevation@intevation.de>
 #
 # Author(s):
 # Thomas Arendsen Hein <thomas@intevation.de>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """
 hg-ssh - a wrapper for ssh access to a limited set of mercurial repos
 
 To be used in ~/.ssh/authorized_keys with the "command" option, see sshd(8):
 command="hg-ssh path/to/repo1 /path/to/repo2 ~/repo3 ~user/repo4" ssh-dss ...
 (probably together with these other useful options:
  no-port-forwarding,no-X11-forwarding,no-agent-forwarding)
--- a/contrib/mercurial.el
+++ b/contrib/mercurial.el
@@ -1,17 +1,17 @@
 ;;; mercurial.el --- Emacs support for the Mercurial distributed SCM
 
 ;; Copyright (C) 2005, 2006 Bryan O'Sullivan
 
 ;; Author: Bryan O'Sullivan <bos@serpentine.com>
 
 ;; mercurial.el is free software; you can redistribute it and/or
-;; modify it under the terms of version 2 of the GNU General Public
-;; License as published by the Free Software Foundation.
+;; modify it under the terms of the GNU General Public License or any
+;; later version.
 
 ;; mercurial.el 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 mercurial.el, GNU Emacs, or XEmacs; see the file COPYING
@@ -779,17 +779,17 @@ Push changes                          G 
 (add-hook 'after-save-hook 'hg-after-save-hook)
 
 
 ;;; User interface functions.
 
 (defun hg-help-overview ()
   "This is an overview of the Mercurial SCM mode for Emacs.
 
-You can find the source code, license (GPL v2), and credits for this
+You can find the source code, license (GPLv2+), and credits for this
 code by typing `M-x find-library mercurial RET'."
   (interactive)
   (hg-view-output ("Mercurial Help Overview")
     (insert (documentation 'hg-help-overview))
     (let ((pos (point)))
       (insert (documentation 'hg-mode))
       (goto-char pos)
       (end-of-line 1)
--- a/contrib/mercurial.spec
+++ b/contrib/mercurial.spec
@@ -1,13 +1,13 @@
 Summary: Mercurial -- a distributed SCM
 Name: mercurial
 Version: snapshot
 Release: 0
-License: GPLv2
+License: GPLv2+
 Group: Development/Tools
 URL: http://mercurial.selenic.com/
 Source0: http://mercurial.selenic.com/release/%{name}-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 
 # From the README:
 #
 #   Note: some distributions fails to include bits of distutils by
--- a/contrib/mq.el
+++ b/contrib/mq.el
@@ -1,17 +1,17 @@
 ;;; mq.el --- Emacs support for Mercurial Queues
 
 ;; Copyright (C) 2006 Bryan O'Sullivan
 
 ;; Author: Bryan O'Sullivan <bos@serpentine.com>
 
 ;; mq.el is free software; you can redistribute it and/or modify it
-;; under the terms of version 2 of the GNU General Public License as
-;; published by the Free Software Foundation.
+;; under the terms of the GNU General Public License version 2 or any
+;; later version.
 
 ;; mq.el 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 mq.el, GNU Emacs, or XEmacs; see the file COPYING (`C-h
--- a/contrib/win32/ReadMe.html
+++ b/contrib/win32/ReadMe.html
@@ -143,18 +143,17 @@ editor = whatever
       Mercurial is Copyright 2005-2010 Matt Mackall and others. See
       the <tt>Contributors.txt</tt> file for a list of contributors.
     </p>
 
     <p>
       Mercurial is free software; you can redistribute it and/or
       modify it under the terms of the <a
       href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt">GNU
-      General Public License version 2</a> as published by the Free
-      Software Foundation.
+      General Public License version 2</a> or any later version.
     </p>
 
     <p>
       Mercurial is distributed in the hope that it will be useful, but
       <b>without any warranty</b>; without even the implied warranty
       of <b>merchantability</b> or <b>fitness for a particular
       purpose</b>. See the GNU General Public License for more
       details.
--- a/doc/hg.1.txt
+++ b/doc/hg.1.txt
@@ -90,11 +90,11 @@ Main Web Site: http://mercurial.selenic.
 Source code repository: http://selenic.com/hg
 
 Mailing list: http://selenic.com/mailman/listinfo/mercurial
 
 Copying
 -------
 Copyright (C) 2005-2010 Matt Mackall.
 Free use of this software is granted under the terms of the GNU General
-Public License version 2.
+Public License version 2 or any later version.
 
 .. include:: common.txt
--- a/doc/hgignore.5.txt
+++ b/doc/hgignore.5.txt
@@ -101,11 +101,11 @@ See Also
 --------
 |hg(1)|_, |hgrc(5)|_
 
 Copying
 -------
 This manual page is copyright 2006 Vadim Gelfer.
 Mercurial is copyright 2005-2010 Matt Mackall.
 Free use of this software is granted under the terms of the GNU General
-Public License version 2.
+Public License version 2 or any later version.
 
 .. include:: common.txt
--- a/doc/hgrc.5.txt
+++ b/doc/hgrc.5.txt
@@ -946,11 +946,11 @@ See Also
 --------
 |hg(1)|_, |hgignore(5)|_
 
 Copying
 -------
 This manual page is copyright 2005 Bryan O'Sullivan.
 Mercurial is copyright 2005-2010 Matt Mackall.
 Free use of this software is granted under the terms of the GNU General
-Public License version 2.
+Public License version 2 or any later version.
 
 .. include:: common.txt
--- a/hg
+++ b/hg
@@ -1,16 +1,16 @@
 #!/usr/bin/env python
 #
 # mercurial - scalable distributed SCM
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 # enable importing on demand to reduce startup time
 try:
     from mercurial import demandimport; demandimport.enable()
 except ImportError:
     import sys
     sys.stderr.write("abort: couldn't find mercurial libraries in [%s]\n" %
                      ' '.join(sys.path))
--- a/hgext/acl.py
+++ b/hgext/acl.py
@@ -1,15 +1,14 @@
 # acl.py - changeset access control for mercurial
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
-#
+# GNU General Public License version 2 or any later version.
 
 '''hooks for controlling repository access
 
 This hook makes it possible to allow or deny write access to portions
 of a repository when receiving incoming changesets.
 
 The authorization is matched based on the local user name on the
 system where the hook runs, and not the committer of the original
--- a/hgext/bookmarks.py
+++ b/hgext/bookmarks.py
@@ -1,14 +1,14 @@
 # Mercurial extension to provide the 'hg bookmark' command
 #
 # Copyright 2008 David Soria Parra <dsp@php.net>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''track a line of development with movable markers
 
 Bookmarks are local movable markers to changesets. Every bookmark
 points to a changeset identified by its hash. If you commit a
 changeset that is based on a changeset that has a bookmark on it, the
 bookmark shifts to the new changeset.
 
--- a/hgext/bugzilla.py
+++ b/hgext/bugzilla.py
@@ -1,14 +1,14 @@
 # bugzilla.py - bugzilla integration for mercurial
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''hooks for integrating with the Bugzilla bug tracker
 
 This hook extension adds comments on bugs in Bugzilla when changesets
 that refer to bugs by Bugzilla ID are seen. The hook does not change
 bug status.
 
 The hook updates the Bugzilla database directly. Only Bugzilla
--- a/hgext/children.py
+++ b/hgext/children.py
@@ -1,17 +1,17 @@
 # Mercurial extension to provide the 'hg children' command
 #
 # Copyright 2007 by Intevation GmbH <intevation@intevation.de>
 #
 # Author(s):
 # Thomas Arendsen Hein <thomas@intevation.de>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''command to display child changesets'''
 
 from mercurial import cmdutil
 from mercurial.commands import templateopts
 from mercurial.i18n import _
 
 
--- a/hgext/churn.py
+++ b/hgext/churn.py
@@ -1,15 +1,15 @@
 # churn.py - create a graph of revisions count grouped by template
 #
 # Copyright 2006 Josef "Jeff" Sipek <jeffpc@josefsipek.net>
 # Copyright 2008 Alexander Solovyov <piranha@piranha.org.ua>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''command to display statistics about repository history'''
 
 from mercurial.i18n import _
 from mercurial import patch, cmdutil, util, templater
 import sys, os
 import time, datetime
 
--- a/hgext/convert/__init__.py
+++ b/hgext/convert/__init__.py
@@ -1,14 +1,14 @@
 # convert.py Foreign SCM converter
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''import revisions from foreign VCS repositories into Mercurial'''
 
 import convcmd
 import cvsps
 import subversion
 from mercurial import commands
 from mercurial.i18n import _
--- a/hgext/convert/bzr.py
+++ b/hgext/convert/bzr.py
@@ -1,14 +1,14 @@
 # bzr.py - bzr support for the convert extension
 #
 #  Copyright 2008, 2009 Marek Kubica <marek@xivilization.net> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 # This module is for handling 'bzr', that was formerly known as Bazaar-NG;
 # it cannot access 'bar' repositories, but they were never used very much
 
 import os
 from mercurial import demandimport
 # these do not work with demandimport, blacklist
 demandimport.ignore.extend([
--- a/hgext/convert/common.py
+++ b/hgext/convert/common.py
@@ -1,14 +1,14 @@
 # common.py - common code for the convert extension
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import base64, errno
 import os
 import cPickle as pickle
 from mercurial import util
 from mercurial.i18n import _
 
 def encodeargs(args):
--- a/hgext/convert/convcmd.py
+++ b/hgext/convert/convcmd.py
@@ -1,14 +1,14 @@
 # convcmd - convert extension commands definition
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from common import NoRepo, MissingTool, SKIPREV, mapfile
 from cvs import convert_cvs
 from darcs import darcs_source
 from git import convert_git
 from hg import mercurial_source, mercurial_sink
 from subversion import svn_source, svn_sink
 from monotone import monotone_source
--- a/hgext/convert/cvs.py
+++ b/hgext/convert/cvs.py
@@ -1,14 +1,14 @@
 # cvs.py: CVS conversion code inspired by hg-cvs-import and git-cvsimport
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os, locale, re, socket, errno
 from cStringIO import StringIO
 from mercurial import util
 from mercurial.i18n import _
 
 from common import NoRepo, commit, converter_source, checktool
 import cvsps
--- a/hgext/convert/cvsps.py
+++ b/hgext/convert/cvsps.py
@@ -1,15 +1,14 @@
-#
 # Mercurial built-in replacement for cvsps.
 #
 # Copyright 2008, Frank Kingswood <frank@kingswood-consulting.co.uk>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os
 import re
 import cPickle as pickle
 from mercurial import util
 from mercurial.i18n import _
 
 class logentry(object):
--- a/hgext/convert/darcs.py
+++ b/hgext/convert/darcs.py
@@ -1,14 +1,14 @@
 # darcs.py - darcs support for the convert extension
 #
 #  Copyright 2007-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from common import NoRepo, checktool, commandline, commit, converter_source
 from mercurial.i18n import _
 from mercurial import util
 import os, shutil, tempfile
 
 # The naming drift of ElementTree is fun!
 
--- a/hgext/convert/filemap.py
+++ b/hgext/convert/filemap.py
@@ -1,13 +1,13 @@
 # Copyright 2007 Bryan O'Sullivan <bos@serpentine.com>
 # Copyright 2007 Alexis S. L. Carvalho <alexis@cecm.usp.br>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import shlex
 from mercurial.i18n import _
 from mercurial import util
 from common import SKIPREV, converter_source
 
 def rpairs(name):
     yield '.', name
--- a/hgext/convert/git.py
+++ b/hgext/convert/git.py
@@ -1,14 +1,14 @@
 # git.py - git support for the convert extension
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os
 from mercurial import util
 
 from common import NoRepo, commit, converter_source, checktool
 
 class convert_git(converter_source):
     # Windows does not support GIT_DIR= construct while other systems
--- a/hgext/convert/gnuarch.py
+++ b/hgext/convert/gnuarch.py
@@ -1,15 +1,15 @@
 # gnuarch.py - GNU Arch support for the convert extension
 #
 #  Copyright 2008, 2009 Aleix Conchillo Flaque <aleix@member.fsf.org>
 #  and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from common import NoRepo, commandline, commit, converter_source
 from mercurial.i18n import _
 from mercurial import util
 import os, shutil, tempfile, stat, locale
 from email.Parser import Parser
 
 class gnuarch_source(converter_source, commandline):
--- a/hgext/convert/hg.py
+++ b/hgext/convert/hg.py
@@ -1,14 +1,14 @@
 # hg.py - hg backend for convert extension
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 # Notes for hg->hg conversion:
 #
 # * Old versions of Mercurial didn't trim the whitespace from the ends
 #   of commit messages, but new versions do.  Changesets created by
 #   those older versions, then converted, may thus have different
 #   hashes for changesets that are otherwise identical.
 #
--- a/hgext/convert/monotone.py
+++ b/hgext/convert/monotone.py
@@ -1,15 +1,15 @@
 # monotone.py - monotone support for the convert extension
 #
 #  Copyright 2008, 2009 Mikkel Fahnoe Jorgensen <mikkel@dvide.com> and
 #  others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os, re
 from mercurial import util
 from common import NoRepo, commit, converter_source, checktool
 from common import commandline
 from mercurial.i18n import _
 
 class monotone_source(converter_source, commandline):
--- a/hgext/convert/p4.py
+++ b/hgext/convert/p4.py
@@ -1,16 +1,14 @@
-#
 # Perforce source for convert extension.
 #
 # Copyright 2009, Frank Kingswood <frank@kingswood-consulting.co.uk>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
-#
+# GNU General Public License version 2 or any later version.
 
 from mercurial import util
 from mercurial.i18n import _
 
 from common import commit, converter_source, checktool, NoRepo
 import marshal
 import re
 
--- a/hgext/extdiff.py
+++ b/hgext/extdiff.py
@@ -1,14 +1,14 @@
 # extdiff.py - external diff program support for mercurial
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''command to allow external programs to compare revisions
 
 The extdiff Mercurial extension allows you to use external programs
 to compare revisions, or revision with working directory. The external
 diff programs are called with a configurable set of options and two
 non-option arguments: paths to directories containing snapshots of
 files to compare.
--- a/hgext/fetch.py
+++ b/hgext/fetch.py
@@ -1,14 +1,14 @@
 # fetch.py - pull and merge remote changes
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''pull, update and merge in one command'''
 
 from mercurial.i18n import _
 from mercurial.node import nullid, short
 from mercurial import commands, cmdutil, hg, util, url, error
 from mercurial.lock import release
 
--- a/hgext/gpg.py
+++ b/hgext/gpg.py
@@ -1,12 +1,12 @@
 # Copyright 2005, 2006 Benoit Boissinot <benoit.boissinot@ens-lyon.org>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''commands to sign and verify changesets'''
 
 import os, tempfile, binascii
 from mercurial import util, commands, match
 from mercurial import node as hgnode
 from mercurial.i18n import _
 
--- a/hgext/graphlog.py
+++ b/hgext/graphlog.py
@@ -1,14 +1,14 @@
 # ASCII graph log extension for Mercurial
 #
 # Copyright 2007 Joel Rosdahl <joel@rosdahl.net>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''command to view revision graphs from a shell
 
 This extension adds a --graph option to the incoming, outgoing and log
 commands. When this options is given, an ASCII representation of the
 revision graph is also shown.
 '''
 
--- a/hgext/hgcia.py
+++ b/hgext/hgcia.py
@@ -1,10 +1,12 @@
 # Copyright (C) 2007-8 Brendan Cully <brendan@kublai.com>
-# Published under the GNU GPL
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
 
 """hooks for integrating with the CIA.vc notification service
 
 This is meant to be run as a changegroup or incoming hook. To
 configure it, set the following options in your hgrc::
 
   [cia]
   # your registered CIA user name
--- a/hgext/hgk.py
+++ b/hgext/hgk.py
@@ -1,14 +1,14 @@
 # Minimal support for git commands on an hg repository
 #
 # Copyright 2005, 2006 Chris Mason <mason@suse.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''browse the repository in a graphical way
 
 The hgk extension allows browsing the history of a repository in a
 graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not
 distributed with Mercurial.)
 
 hgk consists of two parts: a Tcl script that does the displaying and
--- a/hgext/highlight/__init__.py
+++ b/hgext/highlight/__init__.py
@@ -1,14 +1,14 @@
 # highlight - syntax highlighting in hgweb, based on Pygments
 #
 #  Copyright 2008, 2009 Patrick Mezard <pmezard@gmail.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 #
 # The original module was split in an interface and an implementation
 # file to defer pygments loading and speedup extension setup.
 
 """syntax highlighting for hgweb (requires Pygments)
 
 It depends on the Pygments syntax highlighting library:
 http://pygments.org/
--- a/hgext/highlight/highlight.py
+++ b/hgext/highlight/highlight.py
@@ -1,14 +1,14 @@
 # highlight.py - highlight extension implementation file
 #
 #  Copyright 2007-2009 Adam Hupp <adam@hupp.org> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 #
 # The original module was split in an interface and an implementation
 # file to defer pygments loading and speedup extension setup.
 
 from mercurial import demandimport
 demandimport.ignore.extend(['pkgutil', 'pkg_resources', '__main__',])
 from mercurial import util, encoding
 
--- a/hgext/inotify/__init__.py
+++ b/hgext/inotify/__init__.py
@@ -1,15 +1,15 @@
 # __init__.py - inotify-based status acceleration for Linux
 #
 # Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com>
 # Copyright 2007, 2008 Brendan Cully <brendan@kublai.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''accelerate status report using Linux's inotify service'''
 
 # todo: socket permissions
 
 from mercurial.i18n import _
 from mercurial import cmdutil, util
 import server
--- a/hgext/inotify/client.py
+++ b/hgext/inotify/client.py
@@ -1,16 +1,16 @@
 # client.py - inotify status client
 #
 # Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com>
 # Copyright 2007, 2008 Brendan Cully <brendan@kublai.com>
 # Copyright 2009 Nicolas Dumazet <nicdumz@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from mercurial.i18n import _
 import common, server
 import errno, os, socket, struct
 
 class QueryFailed(Exception): pass
 
 def start_server(function):
--- a/hgext/inotify/common.py
+++ b/hgext/inotify/common.py
@@ -1,15 +1,15 @@
 # server.py - inotify common protocol code
 #
 # Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com>
 # Copyright 2007, 2008 Brendan Cully <brendan@kublai.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import cStringIO, socket, struct
 
 """
   Protocol between inotify clients and server:
 
   Client sending query:
   1) send protocol version number
--- a/hgext/inotify/linux/__init__.py
+++ b/hgext/inotify/linux/__init__.py
@@ -1,15 +1,15 @@
 # __init__.py - low-level interfaces to the Linux inotify subsystem
 
 # Copyright 2006 Bryan O'Sullivan <bos@serpentine.com>
 
 # This library is free software; you can redistribute it and/or modify
 # it under the terms of version 2.1 of the GNU Lesser General Public
-# License, incorporated herein by reference.
+# License, or any later version.
 
 '''Low-level interface to the Linux inotify subsystem.
 
 The inotify subsystem provides an efficient mechanism for file status
 monitoring and change notification.
 
 This package provides the low-level inotify system call interface and
 associated constants and helper functions.
--- a/hgext/inotify/linux/_inotify.c
+++ b/hgext/inotify/linux/_inotify.c
@@ -1,16 +1,16 @@
 /*
  * _inotify.c - Python extension interfacing to the Linux inotify subsystem
  *
  * Copyright 2006 Bryan O'Sullivan <bos@serpentine.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of version 2.1 of the GNU Lesser General
- * Public License, incorporated herein by reference.
+ * Public License or any later version.
  */
 
 #include <Python.h>
 #include <alloca.h>
 #include <sys/inotify.h>
 #include <stdint.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
--- a/hgext/inotify/linux/watcher.py
+++ b/hgext/inotify/linux/watcher.py
@@ -1,15 +1,15 @@
 # watcher.py - high-level interfaces to the Linux inotify subsystem
 
 # Copyright 2006 Bryan O'Sullivan <bos@serpentine.com>
 
 # This library is free software; you can redistribute it and/or modify
 # it under the terms of version 2.1 of the GNU Lesser General Public
-# License, incorporated herein by reference.
+# License, or any later version.
 
 '''High-level interfaces to the Linux inotify subsystem.
 
 The inotify subsystem provides an efficient mechanism for file status
 monitoring and change notification.
 
 The watcher class hides the low-level details of the inotify
 interface, and provides a Pythonic wrapper around it.  It generates
--- a/hgext/inotify/server.py
+++ b/hgext/inotify/server.py
@@ -1,15 +1,15 @@
 # server.py - inotify status server
 #
 # Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com>
 # Copyright 2007, 2008 Brendan Cully <brendan@kublai.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from mercurial.i18n import _
 from mercurial import cmdutil, osutil, util
 import common
 import errno, os, select, socket, stat, struct, sys, tempfile, time
 
 try:
     import linux as inotify
--- a/hgext/interhg.py
+++ b/hgext/interhg.py
@@ -1,17 +1,17 @@
 # interhg.py - interhg
 #
 # Copyright 2007 OHASHI Hideya <ohachige@gmail.com>
 #
 # Contributor(s):
 #   Edward Lee <edward.lee@engineering.uiuc.edu>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''expand expressions into changelog and summaries
 
 This extension allows the use of a special syntax in summaries, which
 will be automatically expanded into links or any other arbitrary
 expression, much like InterWiki does.
 
 A few example patterns (link to bug tracking, etc.) that may be used
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -1,14 +1,14 @@
 # keyword.py - $Keyword$ expansion for Mercurial
 #
 # Copyright 2007-2009 Christian Ebert <blacktrash@gmx.net>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 #
 # $Id$
 #
 # Keyword expansion hack against the grain of a DSCM
 #
 # There are many good reasons why this is not needed in a distributed
 # SCM, still it may be useful in very small projects based on single
 # files (like LaTeX packages), that are mostly addressed to an
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -1,14 +1,14 @@
 # mq.py - patch queues for mercurial
 #
 # Copyright 2005, 2006 Chris Mason <mason@suse.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''manage a stack of patches
 
 This extension lets you work with a stack of patches in a Mercurial
 repository. It manages two stacks of patches - all known patches, and
 applied patches (subset of known patches).
 
 Known patches are represented as patch files in the .hg/patches
--- a/hgext/notify.py
+++ b/hgext/notify.py
@@ -1,14 +1,14 @@
 # notify.py - email notifications for mercurial
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''hooks for sending email notifications at commit/push time
 
 Subscriptions can be managed through a hgrc file. Default mode is to
 print messages to stdout, for testing and configuring.
 
 To use, configure the notify extension and enable it in hgrc like
 this::
--- a/hgext/pager.py
+++ b/hgext/pager.py
@@ -1,14 +1,14 @@
 # pager.py - display output using a pager
 #
 # Copyright 2008 David Soria Parra <dsp@php.net>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 #
 # To load the extension, add it to your .hgrc file:
 #
 #   [extension]
 #   pager =
 #
 # Run "hg help pager" to get info on configuration.
 
--- a/hgext/parentrevspec.py
+++ b/hgext/parentrevspec.py
@@ -1,14 +1,14 @@
 # Mercurial extension to make it easy to refer to the parent of a revision
 #
 # Copyright (C) 2007 Alexis S. L. Carvalho <alexis@cecm.usp.br>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''interpret suffixes to refer to ancestor revisions
 
 This extension allows you to use git-style suffixes to refer to the
 ancestors of a specific revision.
 
 For example, if you can refer to a revision as "foo", then::
 
--- a/hgext/patchbomb.py
+++ b/hgext/patchbomb.py
@@ -1,14 +1,14 @@
 # patchbomb.py - sending Mercurial changesets as patch emails
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''command to send changesets as (a series of) patch emails
 
 The series is started off with a "[PATCH 0 of N]" introduction, which
 describes the series as a whole.
 
 Each patch email has a Subject line of "[PATCH M of N] ...", using the
 first line of the changeset description as the subject text. The
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -1,14 +1,14 @@
 # rebase.py - rebasing feature for mercurial
 #
 # Copyright 2008 Stefano Tortarolo <stefano.tortarolo at gmail dot com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''command to move sets of revisions to a different ancestor
 
 This extension lets you rebase changesets in an existing Mercurial
 repository.
 
 For more information:
 http://mercurial.selenic.com/wiki/RebaseExtension
--- a/hgext/record.py
+++ b/hgext/record.py
@@ -1,14 +1,14 @@
 # record.py
 #
 # Copyright 2007 Bryan O'Sullivan <bos@serpentine.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''commands to interactively select changes for commit/qrefresh'''
 
 from mercurial.i18n import gettext, _
 from mercurial import cmdutil, commands, extensions, hg, mdiff, patch
 from mercurial import util
 import copy, cStringIO, errno, operator, os, re, tempfile
 
--- a/hgext/relink.py
+++ b/hgext/relink.py
@@ -1,14 +1,14 @@
 # Mercurial extension to provide 'hg relink' command
 #
 # Copyright (C) 2007 Brendan Cully <brendan@kublai.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """recreates hardlinks between repository clones"""
 
 from mercurial import cmdutil, hg, util
 from mercurial.i18n import _
 import os, stat
 
 def relink(ui, repo, origin=None, **opts):
--- a/hgext/schemes.py
+++ b/hgext/schemes.py
@@ -1,12 +1,12 @@
 # Copyright 2009, Alexander Solovyov <piranha@piranha.org.ua>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """extend schemes with shortcuts to repository swarms
 
 This extension allows you to specify shortcuts for parent URLs with a
 lot of repositories to act like a scheme, for example::
 
   [schemes]
   py = http://code.python.org/hg/
--- a/hgext/share.py
+++ b/hgext/share.py
@@ -1,12 +1,12 @@
 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''share a common history between several working directories'''
 
 from mercurial.i18n import _
 from mercurial import hg, commands
 
 def share(ui, source, dest=None, noupdate=False):
     """create a new shared repository (experimental)
--- a/hgext/transplant.py
+++ b/hgext/transplant.py
@@ -1,14 +1,14 @@
 # Patch transplanting extension for Mercurial
 #
 # Copyright 2006, 2007 Brendan Cully <brendan@kublai.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''command to transplant changesets from another branch
 
 This extension allows you to transplant patches from another branch.
 
 Transplanted patches are recorded in .hg/transplant/transplants, as a
 map from a changeset hash to its hash in the source repository.
 '''
--- a/hgext/win32mbcs.py
+++ b/hgext/win32mbcs.py
@@ -1,17 +1,17 @@
 # win32mbcs.py -- MBCS filename support for Mercurial
 #
 # Copyright (c) 2008 Shun-ichi Goto <shunichi.goto@gmail.com>
 #
 # Version: 0.2
 # Author:  Shun-ichi Goto <shunichi.goto@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 #
 
 '''allow the use of MBCS paths with problematic encodings
 
 Some MBCS encodings are not good for some path operations (i.e.
 splitting path, case conversion, etc.) with its encoded bytes. We call
 such a encoding (i.e. shift_jis and big5) as "problematic encoding".
 This extension can be used to fix the issue with those encodings by
--- a/hgext/win32text.py
+++ b/hgext/win32text.py
@@ -1,14 +1,14 @@
 # win32text.py - LF <-> CRLF/CR translation utilities for Windows/Mac users
 #
 #  Copyright 2005, 2007-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''perform automatic newline conversion
 
 To perform automatic newline conversion, use::
 
   [extensions]
   win32text =
   [encode]
--- a/hgext/zeroconf/__init__.py
+++ b/hgext/zeroconf/__init__.py
@@ -1,14 +1,14 @@
 # zeroconf.py - zeroconf support for Mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''discover and advertise repositories on the local network
 
 Zeroconf enabled repositories will be announced in a network without
 the need to configure a server or a service. They can be discovered
 without knowing their actual IP address.
 
 To allow other people to discover your repository using run "hg serve"
--- a/i18n/hggettext
+++ b/i18n/hggettext
@@ -1,16 +1,16 @@
 #!/usr/bin/env python
 #
 # hggettext - carefully extract docstrings for Mercurial
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 # The normalize function is taken from pygettext which is distributed
 # with Python under the Python License, which is GPL compatible.
 
 """Extract docstrings from Mercurial commands.
 
 Compared to pygettext, this script knows about the cmdtable and table
 dictionaries used by Mercurial, and will only extract docstrings from
--- a/mercurial/ancestor.py
+++ b/mercurial/ancestor.py
@@ -1,14 +1,14 @@
 # ancestor.py - generic DAG ancestor algorithm for mercurial
 #
 # Copyright 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import heapq
 
 def ancestor(a, b, pfunc):
     """
     return the least common ancestor of nodes a and b or None if there
     is no such ancestor.
 
--- a/mercurial/archival.py
+++ b/mercurial/archival.py
@@ -1,14 +1,14 @@
 # archival.py - revision archival for mercurial
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 from node import hex
 import cmdutil
 import util
 import cStringIO, os, stat, tarfile, time, zipfile
 import zlib, gzip
 
--- a/mercurial/bundlerepo.py
+++ b/mercurial/bundlerepo.py
@@ -1,14 +1,14 @@
 # bundlerepo.py - repository class for viewing uncompressed bundles
 #
 # Copyright 2006, 2007 Benoit Boissinot <bboissin@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """Repository class for viewing uncompressed bundles.
 
 This provides a read-only repository interface to bundles as if they
 were part of the actual repository.
 """
 
 from node import nullid
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -1,14 +1,14 @@
 # changegroup.py - Mercurial changegroup manipulation functions
 #
 #  Copyright 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import util
 import struct, os, bz2, zlib, tempfile
 
 def getchunk(source):
     """return the next chunk from changegroup 'source' as a string"""
     d = source.read(4)
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -1,14 +1,14 @@
 # changelog.py - changelog class for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import bin, hex, nullid
 from i18n import _
 import util, error, revlog, encoding
 
 def _string_escape(text):
     """
     >>> d = {'nl': chr(10), 'bs': chr(92), 'cr': chr(13), 'nul': chr(0)}
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -1,14 +1,14 @@
 # cmdutil.py - help for command processing in mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import hex, nullid, nullrev, short
 from i18n import _
 import os, sys, errno, re, glob
 import mdiff, bdiff, util, templater, patch, error, encoding
 import match as _match
 
 revrangesep = ':'
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1,14 +1,14 @@
 # commands.py - command processing for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import hex, nullid, nullrev, short
 from lock import release
 from i18n import _, gettext
 import os, re, sys, difflib, time, tempfile
 import hg, util, revlog, bundlerepo, extensions, copies, error
 import patch, help, mdiff, url, encoding
 import archival, changegroup, cmdutil, sshserver, hbisect
--- a/mercurial/config.py
+++ b/mercurial/config.py
@@ -1,14 +1,14 @@
 # config.py - configuration parsing for Mercurial
 #
 #  Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import error
 import re, os
 
 class sortdict(dict):
     'a simple sorted dictionary'
     def __init__(self, data=None):
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -1,14 +1,14 @@
 # context.py - changeset and file context objects for mercurial
 #
 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import nullid, nullrev, short, hex
 from i18n import _
 import ancestor, bdiff, error, util, subrepo
 import os, errno
 
 propertycache = util.propertycache
 
--- a/mercurial/copies.py
+++ b/mercurial/copies.py
@@ -1,14 +1,14 @@
 # copies.py - copy detection for Mercurial
 #
 # Copyright 2008 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import util
 import heapq
 
 def _nonoverlap(d1, d2, d3):
     "Return list of elements in d1 not in d2 or d3"
     return sorted([d for d in d1 if d not in d3 and d not in d2])
--- a/mercurial/demandimport.py
+++ b/mercurial/demandimport.py
@@ -1,14 +1,14 @@
 # demandimport.py - global demand-loading of modules for Mercurial
 #
 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 '''
 demandimport - automatic demandloading of modules
 
 To enable this module, do:
 
   import demandimport; demandimport.enable()
 
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -1,14 +1,14 @@
 # dirstate.py - working directory tracking for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import nullid
 from i18n import _
 import util, ignore, osutil, parsers
 import struct, os, stat, errno
 import cStringIO
 
 _unknown = ('?', 0, 0, 0)
--- a/mercurial/dispatch.py
+++ b/mercurial/dispatch.py
@@ -1,14 +1,14 @@
 # dispatch.py - command dispatching for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import os, sys, atexit, signal, pdb, socket, errno, shlex, time
 import util, commands, hg, fancyopts, extensions, hook, error
 import cmdutil, encoding
 import ui as _ui
 
 def run():
--- a/mercurial/encoding.py
+++ b/mercurial/encoding.py
@@ -1,14 +1,14 @@
 # encoding.py - character transcoding support for Mercurial
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import error
 import sys, unicodedata, locale, os
 
 _encodingfixup = {'646': 'ascii', 'ANSI_X3.4-1968': 'ascii'}
 
 try:
     encoding = os.environ.get("HGENCODING")
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -1,14 +1,14 @@
 # error.py - Mercurial exceptions
 #
 # Copyright 2005-2008 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """Mercurial exceptions.
 
 This allows us to catch exceptions at higher levels without forcing
 imports.
 """
 
 # Do not import anything here, please
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -1,14 +1,14 @@
 # extensions.py - extension handling for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import imp, os
 import util, cmdutil, help
 from i18n import _, gettext
 
 _extensions = {}
 _order = []
 
--- a/mercurial/fancyopts.py
+++ b/mercurial/fancyopts.py
@@ -1,14 +1,14 @@
 # fancyopts.py - better command line parsing
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import getopt
 
 def gnugetopt(args, options, longoptions):
     """Parse options mostly like getopt.gnu_getopt.
 
     This is different from getopt.gnu_getopt in that an argument of - will
     become an argument of - instead of vanishing completely.
--- a/mercurial/filelog.py
+++ b/mercurial/filelog.py
@@ -1,14 +1,14 @@
 # filelog.py - file history class for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import revlog
 
 class filelog(revlog.revlog):
     def __init__(self, opener, path):
         revlog.revlog.__init__(self, opener,
                         "/".join(("data", path + ".i")))
 
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -1,14 +1,14 @@
 # filemerge.py - file-level merge handling for Mercurial
 #
 # Copyright 2006, 2007, 2008 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import short
 from i18n import _
 import util, simplemerge, match
 import os, tempfile, re, filecmp
 
 def _toolstr(ui, tool, part, default=""):
     return ui.config("merge-tools", tool + "." + part, default)
--- a/mercurial/graphmod.py
+++ b/mercurial/graphmod.py
@@ -1,15 +1,15 @@
 # Revision graph generator for Mercurial
 #
 # Copyright 2008 Dirkjan Ochtman <dirkjan@ochtman.nl>
 # Copyright 2007 Joel Rosdahl <joel@rosdahl.net>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """supports walking the history as DAGs suitable for graphical output
 
 The most basic format we use is that of::
 
   (id, type, data, [parentids])
 
 The node and parent ids are arbitrary integers which identify a node in the
--- a/mercurial/hbisect.py
+++ b/mercurial/hbisect.py
@@ -1,17 +1,17 @@
 # changelog bisection for mercurial
 #
 # Copyright 2007 Matt Mackall
 # Copyright 2005, 2006 Benoit Boissinot <benoit.boissinot@ens-lyon.org>
 #
 # Inspired by git bisect, extension skeleton taken from mq.py.
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os
 from i18n import _
 from node import short, hex
 import util
 
 def bisect(changelog, state):
     """find the next node (if any) for testing during a bisect search.
--- a/mercurial/help.py
+++ b/mercurial/help.py
@@ -1,14 +1,14 @@
 # help.py - help data for mercurial
 #
 # Copyright 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import gettext, _
 import sys, os
 import extensions
 
 
 def moduledoc(file):
     '''return the top-level python documentation for the given file
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -1,15 +1,15 @@
 # hg.py - repository classes for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 from lock import release
 import localrepo, bundlerepo, httprepo, sshrepo, statichttprepo
 import lock, util, extensions, error, encoding
 import merge as _merge
 import verify as _verify
 import errno, os, shutil
--- a/mercurial/hgweb/__init__.py
+++ b/mercurial/hgweb/__init__.py
@@ -1,15 +1,15 @@
 # hgweb/__init__.py - web interface to a mercurial repository
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import hgweb_mod, hgwebdir_mod
 
 def hgweb(*args, **kwargs):
     return hgweb_mod.hgweb(*args, **kwargs)
 
 def hgwebdir(*args, **kwargs):
     return hgwebdir_mod.hgwebdir(*args, **kwargs)
--- a/mercurial/hgweb/common.py
+++ b/mercurial/hgweb/common.py
@@ -1,15 +1,15 @@
 # hgweb/common.py - Utility functions needed by hgweb_mod and hgwebdir_mod
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import errno, mimetypes, os
 
 HTTP_OK = 200
 HTTP_BAD_REQUEST = 400
 HTTP_UNAUTHORIZED = 401
 HTTP_FORBIDDEN = 403
 HTTP_NOT_FOUND = 404
--- a/mercurial/hgweb/hgweb_mod.py
+++ b/mercurial/hgweb/hgweb_mod.py
@@ -1,15 +1,15 @@
 # hgweb/hgweb_mod.py - Web interface for a repository.
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os
 from mercurial import ui, hg, hook, error, encoding, templater
 from common import get_mtime, ErrorResponse
 from common import HTTP_OK, HTTP_BAD_REQUEST, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
 from common import HTTP_UNAUTHORIZED, HTTP_METHOD_NOT_ALLOWED
 from request import wsgirequest
 import webcommands, protocol, webutil
--- a/mercurial/hgweb/hgwebdir_mod.py
+++ b/mercurial/hgweb/hgwebdir_mod.py
@@ -1,15 +1,15 @@
 # hgweb/hgwebdir_mod.py - Web interface for a directory of repositories.
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os, re, time
 from mercurial.i18n import _
 from mercurial import ui, hg, util, templater
 from mercurial import error, encoding
 from common import ErrorResponse, get_mtime, staticfile, paritygen,\
                    get_contact, HTTP_OK, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
 from hgweb_mod import hgweb
--- a/mercurial/hgweb/protocol.py
+++ b/mercurial/hgweb/protocol.py
@@ -1,14 +1,14 @@
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import cStringIO, zlib, tempfile, errno, os, sys, urllib, copy
 from mercurial import util, streamclone
 from mercurial.node import bin, hex
 from mercurial import changegroup as changegroupmod
 from common import ErrorResponse, HTTP_OK, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
 
 # __all__ is populated with the allowed commands. Be sure to add to it if
--- a/mercurial/hgweb/request.py
+++ b/mercurial/hgweb/request.py
@@ -1,15 +1,15 @@
 # hgweb/request.py - An http request from either CGI or the standalone server.
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import socket, cgi, errno
 from mercurial import util
 from common import ErrorResponse, statusmessage
 
 shortcuts = {
     'cl': [('cmd', ['changelog']), ('rev', None)],
     'sl': [('cmd', ['shortlog']), ('rev', None)],
--- a/mercurial/hgweb/server.py
+++ b/mercurial/hgweb/server.py
@@ -1,15 +1,15 @@
 # hgweb/server.py - The standalone hg web server.
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os, sys, errno, urllib, BaseHTTPServer, socket, SocketServer, traceback
 from mercurial import hg, util, error
 from hgweb_mod import hgweb
 from hgwebdir_mod import hgwebdir
 from mercurial.i18n import _
 
 def _splitURI(uri):
--- a/mercurial/hgweb/webcommands.py
+++ b/mercurial/hgweb/webcommands.py
@@ -1,14 +1,14 @@
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os, mimetypes, re, cgi, copy
 import webutil
 from mercurial import error, archival, templater, templatefilters
 from mercurial.node import short, hex
 from mercurial.util import binary
 from common import paritygen, staticfile, get_contact, ErrorResponse
 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
--- a/mercurial/hgweb/webutil.py
+++ b/mercurial/hgweb/webutil.py
@@ -1,15 +1,15 @@
 # hgweb/webutil.py - utility library for the web interface.
 #
 # Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os, copy
 from mercurial import match, patch, util, error
 from mercurial.node import hex, nullid
 
 def up(p):
     if p[0] != "/":
         p = "/" + p
--- a/mercurial/hgweb/wsgicgi.py
+++ b/mercurial/hgweb/wsgicgi.py
@@ -1,14 +1,14 @@
 # hgweb/wsgicgi.py - CGI->WSGI translator
 #
 # Copyright 2006 Eric Hopper <hopper@omnifarious.org>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 #
 # This was originally copied from the public domain code at
 # http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side
 
 import os, sys
 from mercurial import util
 
 def launch(application):
--- a/mercurial/hook.py
+++ b/mercurial/hook.py
@@ -1,14 +1,14 @@
 # hook.py - hook support for mercurial
 #
 # Copyright 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import os, sys
 import extensions, util
 
 def _pythonhook(ui, repo, name, hname, funcname, args, throw):
     '''call python hook. hook is callable object, looked up as
     name in python module. if callable returns "true", hook
--- a/mercurial/httprepo.py
+++ b/mercurial/httprepo.py
@@ -1,15 +1,15 @@
 # httprepo.py - HTTP repository proxy classes for mercurial
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import bin, hex, nullid
 from i18n import _
 import repo, changegroup, statichttprepo, error, url, util
 import os, urllib, urllib2, urlparse, zlib, httplib
 import errno, socket
 import encoding
 
--- a/mercurial/i18n.py
+++ b/mercurial/i18n.py
@@ -1,14 +1,14 @@
 # i18n.py - internationalization support for mercurial
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import encoding
 import gettext, sys, os
 
 # modelled after templater.templatepath:
 if hasattr(sys, 'frozen'):
     module = sys.executable
 else:
--- a/mercurial/ignore.py
+++ b/mercurial/ignore.py
@@ -1,14 +1,14 @@
 # ignore.py - ignored file handling for mercurial
 #
 # Copyright 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import util, match
 import re
 
 _commentre = None
 
 def ignorepats(lines):
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1,14 +1,14 @@
 # localrepo.py - read/write repository class for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import bin, hex, nullid, nullrev, short
 from i18n import _
 import repo, changegroup, subrepo
 import changelog, dirstate, filelog, manifest, context
 import lock, transaction, store, encoding
 import util, extensions, hook, error
 import match as match_
--- a/mercurial/lock.py
+++ b/mercurial/lock.py
@@ -1,14 +1,14 @@
 # lock.py - simple advisory locking scheme for mercurial
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import util, error
 import errno, os, socket, time
 import warnings
 
 class lock(object):
     '''An advisory lock held by one process to control access to a set
     of files.  Non-cooperating processes or incorrectly written scripts
--- a/mercurial/mail.py
+++ b/mercurial/mail.py
@@ -1,14 +1,14 @@
 # mail.py - mail sending bits for mercurial
 #
 # Copyright 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import util, encoding
 import os, smtplib, socket, quopri
 import email.Header, email.MIMEText, email.Utils
 
 def _smtp(ui):
     '''build an smtp connection and return a function to send mail'''
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1,14 +1,14 @@
 # manifest.py - manifest revision class for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import mdiff, parsers, error, revlog
 import array, struct
 
 class manifestdict(dict):
     def __init__(self, mapping=None, flags=None):
         if mapping is None: mapping = {}
--- a/mercurial/match.py
+++ b/mercurial/match.py
@@ -1,14 +1,14 @@
 # match.py - filename matching
 #
 #  Copyright 2008, 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import re
 import util
 
 class match(object):
     def __init__(self, root, cwd, patterns, include=[], exclude=[],
                  default='glob', exact=False):
         """build an object to match a set of file patterns
--- a/mercurial/mdiff.py
+++ b/mercurial/mdiff.py
@@ -1,14 +1,14 @@
 # mdiff.py - diff and patch routines for mercurial
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import bdiff, mpatch, util
 import re, struct
 
 def splitnewlines(text):
     '''like str.splitlines, but only split on newlines.'''
     lines = [l + '\n' for l in text.split('\n')]
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -1,14 +1,14 @@
 # merge.py - directory-level update/merge handling for Mercurial
 #
 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import nullid, nullrev, hex, bin
 from i18n import _
 import util, filemerge, copies, subrepo
 import errno, os, shutil
 
 class mergestate(object):
     '''track 3-way merge state of individual files'''
--- a/mercurial/minirst.py
+++ b/mercurial/minirst.py
@@ -1,14 +1,14 @@
 # minirst.py - minimal reStructuredText parser
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """simplified reStructuredText parser.
 
 This parser knows just enough about reStructuredText to parse the
 Mercurial docstrings.
 
 It cheats in a major way: nested blocks are not really nested. They
 are just indented blocks that look like they are nested. This relies
--- a/mercurial/node.py
+++ b/mercurial/node.py
@@ -1,14 +1,14 @@
 # node.py - basic nodeid manipulation for mercurial
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import binascii
 
 nullrev = -1
 nullid = "\0" * 20
 
 # This ugly style has a noticeable effect in manifest parsing
 hex = binascii.hexlify
--- a/mercurial/patch.py
+++ b/mercurial/patch.py
@@ -1,15 +1,15 @@
 # patch.py - patch file parsing routines
 #
 # Copyright 2006 Brendan Cully <brendan@kublai.com>
 # Copyright 2007 Chris Mason <chris.mason@oracle.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 from node import hex, nullid, short
 import base85, cmdutil, mdiff, util, diffhelpers, copies
 import cStringIO, email.Parser, os, re
 import sys, tempfile, zlib
 
 gitre = re.compile('diff --git a/(.*) b/(.*)')
--- a/mercurial/posix.py
+++ b/mercurial/posix.py
@@ -1,14 +1,14 @@
 # posix.py - Posix utility function implementations for Mercurial
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import osutil
 import os, sys, errno, stat, getpass, pwd, grp, fcntl
 
 posixfile = open
 nulldev = '/dev/null'
 normpath = os.path.normpath
--- a/mercurial/pure/base85.py
+++ b/mercurial/pure/base85.py
@@ -1,14 +1,14 @@
 # base85.py: pure python base85 codec
 #
 # Copyright (C) 2009 Brendan Cully <brendan@kublai.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import struct
 
 _b85chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
             "abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"
 _b85chars2 = [(a + b) for a in _b85chars for b in _b85chars]
 _b85dec = {}
 
--- a/mercurial/pure/bdiff.py
+++ b/mercurial/pure/bdiff.py
@@ -1,14 +1,14 @@
 # bdiff.py - Python implementation of bdiff.c
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import struct, difflib
 
 def splitnewlines(text):
     '''like str.splitlines, but only split on newlines.'''
     lines = [l + '\n' for l in text.split('\n')]
     if lines:
         if lines[-1] == '\n':
--- a/mercurial/pure/diffhelpers.py
+++ b/mercurial/pure/diffhelpers.py
@@ -1,14 +1,14 @@
 # diffhelpers.py - pure Python implementation of diffhelpers.c
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 def addlines(fp, hunk, lena, lenb, a, b):
     while True:
         todoa = lena - len(a)
         todob = lenb - len(b)
         num = max(todoa, todob)
         if num == 0:
             break
--- a/mercurial/pure/mpatch.py
+++ b/mercurial/pure/mpatch.py
@@ -1,14 +1,14 @@
 # mpatch.py - Python implementation of mpatch.c
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import struct
 try:
     from cStringIO import StringIO
 except ImportError:
     from StringIO import StringIO
 
 # This attempts to apply a series of patches in time proportional to
--- a/mercurial/pure/osutil.py
+++ b/mercurial/pure/osutil.py
@@ -1,14 +1,14 @@
 # osutil.py - pure Python version of osutil.c
 #
 #  Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import os
 import stat as _stat
 
 posixfile = open
 
 def _mode_to_kind(mode):
     if _stat.S_ISREG(mode): return _stat.S_IFREG
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -1,14 +1,14 @@
 # parsers.py - Python implementation of parsers.c
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from mercurial.node import bin, nullid, nullrev
 from mercurial import util
 import struct, zlib
 
 _pack = struct.pack
 _unpack = struct.unpack
 _compress = zlib.compress
--- a/mercurial/repair.py
+++ b/mercurial/repair.py
@@ -1,15 +1,15 @@
 # repair.py - functions for repository repair for mercurial
 #
 # Copyright 2005, 2006 Chris Mason <mason@suse.com>
 # Copyright 2007 Matt Mackall
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import changegroup
 from node import nullrev, short
 from i18n import _
 import os
 
 def _bundle(repo, bases, heads, node, suffix, extranodes=None):
     """create a bundle with the specified revisions as a backup"""
--- a/mercurial/repo.py
+++ b/mercurial/repo.py
@@ -1,15 +1,15 @@
 # repo.py - repository base classes for mercurial
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import error
 
 class repository(object):
     def capable(self, name):
         '''tell whether repo supports named capability.
         return False if not supported.
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -1,14 +1,14 @@
 # revlog.py - storage back-end for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """Storage back-end for Mercurial.
 
 This provides efficient delta storage with O(1) retrieve and append
 and O(changes) merge between branches.
 """
 
 # import stuff from node for others to import from revlog
--- a/mercurial/sshrepo.py
+++ b/mercurial/sshrepo.py
@@ -1,14 +1,14 @@
 # sshrepo.py - ssh repository proxy class for mercurial
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import bin, hex
 from i18n import _
 import repo, util, error, encoding
 import re, urllib
 
 class remotelock(object):
     def __init__(self, repo):
--- a/mercurial/sshserver.py
+++ b/mercurial/sshserver.py
@@ -1,15 +1,15 @@
 # sshserver.py - ssh protocol server support for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 from node import bin, hex
 import streamclone, util, hook
 import os, sys, tempfile, urllib, copy
 
 class sshserver(object):
 
--- a/mercurial/statichttprepo.py
+++ b/mercurial/statichttprepo.py
@@ -1,16 +1,16 @@
 # statichttprepo.py - simple http repository class for mercurial
 #
 # This provides read-only repo access to repositories exported via static http
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import changelog, byterange, url, error
 import localrepo, manifest, util, store
 import urllib, urllib2, errno
 
 class httprangereader(object):
     def __init__(self, url, opener):
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -1,14 +1,14 @@
 # store.py - repository store handling for Mercurial
 #
 # Copyright 2008 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import osutil, util
 import os, stat
 
 _sha = util.sha1
 
 # This avoids a collision between a file named foo and a dir named
--- a/mercurial/streamclone.py
+++ b/mercurial/streamclone.py
@@ -1,14 +1,14 @@
 # streamclone.py - streaming clone server support for mercurial
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import util, error
 from i18n import _
 
 from mercurial import store
 
 class StreamException(Exception):
     def __init__(self, code):
--- a/mercurial/strutil.py
+++ b/mercurial/strutil.py
@@ -1,14 +1,14 @@
 # strutil.py - string utilities for Mercurial
 #
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 def findall(haystack, needle, start=0, end=None):
     if end is None:
         end = len(haystack)
     if end < 0:
         end += len(haystack)
     if start < 0:
         start += len(haystack)
--- a/mercurial/subrepo.py
+++ b/mercurial/subrepo.py
@@ -1,14 +1,14 @@
 # subrepo.py - sub-repository handling for Mercurial
 #
 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import errno, os
 from i18n import _
 import config, util, node, error
 hg = None
 
 nullstate = ('', '')
 
--- a/mercurial/tags.py
+++ b/mercurial/tags.py
@@ -1,15 +1,15 @@
 # tags.py - read tag info from local repository
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com>
 # Copyright 2009 Greg Ward <greg@gerg.ca>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 # Currently this module only deals with reading and caching tags.
 # Eventually, it could take care of updating (adding/removing/moving)
 # tags too.
 
 from node import nullid, bin, hex, short
 from i18n import _
 import encoding
--- a/mercurial/templatefilters.py
+++ b/mercurial/templatefilters.py
@@ -1,14 +1,14 @@
 # template-filters.py - common template expansion filters
 #
 # Copyright 2005-2008 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import cgi, re, os, time, urllib, textwrap
 import util, encoding
 
 def stringify(thing):
     '''turn nested template iterator into string.'''
     if hasattr(thing, '__iter__') and not isinstance(thing, str):
         return "".join([stringify(t) for t in thing if t is not None])
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -1,14 +1,14 @@
 # templater.py - template expansion for output
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import re, sys, os
 import util, config, templatefilters
 
 path = ['templates', '../templates']
 stringify = templatefilters.stringify
 
--- a/mercurial/transaction.py
+++ b/mercurial/transaction.py
@@ -4,17 +4,17 @@
 # errors and interruptions. More serious failures like system crashes
 # can be recovered with an fsck-like tool. As the whole repository is
 # effectively log-structured, this should amount to simply truncating
 # anything that isn't referenced in the changelog.
 #
 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import os, errno
 import error
 
 def active(func):
     def _active(self, *args, **kwds):
         if self.count == 0:
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -1,14 +1,14 @@
 # ui.py - user interface bits for mercurial
 #
 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import errno, getpass, os, socket, sys, tempfile, traceback
 import config, util, error
 
 _booleans = {'1': True, 'yes': True, 'true': True, 'on': True,
              '0': False, 'no': False, 'false': False, 'off': False}
 
--- a/mercurial/url.py
+++ b/mercurial/url.py
@@ -1,16 +1,16 @@
 # url.py - HTTP handling for mercurial
 #
 # Copyright 2005, 2006, 2007, 2008 Matt Mackall <mpm@selenic.com>
 # Copyright 2006, 2007 Alexis S. L. Carvalho <alexis@cecm.usp.br>
 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 import urllib, urllib2, urlparse, httplib, os, re, socket, cStringIO
 from i18n import _
 import keepalive, util
 
 def hidepassword(url):
     '''hide user credential in a url string'''
     scheme, netloc, path, params, query, fragment = urlparse.urlparse(url)
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -1,16 +1,16 @@
 # util.py - Mercurial utility functions and platform specfic implementations
 #
 #  Copyright 2005 K. Thananchayan <thananck@yahoo.com>
 #  Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
 #  Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """Mercurial utility functions and platform specfic implementations.
 
 This contains helper routines that are independent of the SCM core and
 hide platform-specific details from the core.
 """
 
 from i18n import _
--- a/mercurial/verify.py
+++ b/mercurial/verify.py
@@ -1,14 +1,14 @@
 # verify.py - repository integrity checking for Mercurial
 #
 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from node import nullid, short
 from i18n import _
 import os
 import revlog, util, error
 
 def verify(repo):
     lock = repo.lock()
--- a/mercurial/win32.py
+++ b/mercurial/win32.py
@@ -1,14 +1,14 @@
 # win32.py - utility functions that use win32 API
 #
 # Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """Utility functions that use win32 API.
 
 Mark Hammond's win32all package allows better functionality on
 Windows. This module overrides definitions in util.py. If not
 available, import of this module will fail, and generic code will be
 used.
 """
--- a/mercurial/windows.py
+++ b/mercurial/windows.py
@@ -1,14 +1,14 @@
 # windows.py - Windows utility function implementations for Mercurial
 #
 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 from i18n import _
 import osutil, error
 import errno, msvcrt, os, re, sys, random
 
 nulldev = 'NUL:'
 umask = 002
 
--- a/setup.py
+++ b/setup.py
@@ -266,17 +266,17 @@ for root in ('templates', 'i18n', 'help'
                           [os.path.join(dir, file_) for file_ in files]))
 
 setup(name='mercurial',
       version=version,
       author='Matt Mackall',
       author_email='mpm@selenic.com',
       url='http://mercurial.selenic.com/',
       description='Scalable distributed SCM',
-      license='GNU GPL',
+      license='GNU GPLv2+',
       scripts=scripts,
       packages=packages,
       ext_modules=ext_modules,
       data_files=datafiles,
       cmdclass=cmdclass,
       options=dict(py2exe=dict(packages=['hgext', 'email']),
                    bdist_mpkg=dict(zipdist=True,
                                    license='COPYING',
--- a/tests/printrepr.py
+++ b/tests/printrepr.py
@@ -1,11 +1,11 @@
 #!/usr/bin/env python
 #
 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 """prints repr(sys.stdin) but preserves newlines in input"""
 
 import sys
 print repr(sys.stdin.read())[1:-1].replace('\\n', '\n'),
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -1,16 +1,16 @@
 #!/usr/bin/env python
 #
 # run-tests.py - Run a set of tests on Mercurial
 #
 # Copyright 2006 Matt Mackall <mpm@selenic.com>
 #
 # This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
+# GNU General Public License version 2 or any later version.
 
 # Modifying this script is tricky because it has many modes:
 #   - serial (default) vs parallel (-jN, N > 1)
 #   - no coverage (default) vs coverage (-c, -C, -s)
 #   - temp install (default) vs specific hg script (--with-hg, --local)
 #   - tests are a mix of shell scripts and Python scripts
 #
 # If you change this script, it is recommended that you ensure you