Add vcs-load-dirs project to thirdparty directory.
authorPawel Solyga <Pawel.Solyga@gmail.com>
Tue, 12 May 2009 15:52:53 +0200
changeset 2311 e8262ca32109
parent 2310 d51331eaec15
child 2312 71a5bc0f0398
Add vcs-load-dirs project to thirdparty directory. vcs-load-dirs project contains load-dir scripts for different version control sysystems including git, hg, darcs, bazaar. More information about the project: http://software.complete.org/software/wiki/vcs-load-dirs/ http://software.complete.org/static/vcs-load-dirs/doc//hg_load_dirs.1.html
thirdparty/vcs-load-dirs/COPYING
thirdparty/vcs-load-dirs/baz_load_dirs
thirdparty/vcs-load-dirs/darcs_load_dirs
thirdparty/vcs-load-dirs/debian/baz-load-dirs.install
thirdparty/vcs-load-dirs/debian/baz-load-dirs.manpages
thirdparty/vcs-load-dirs/debian/changelog
thirdparty/vcs-load-dirs/debian/compat
thirdparty/vcs-load-dirs/debian/control
thirdparty/vcs-load-dirs/debian/copyright
thirdparty/vcs-load-dirs/debian/darcs-load-dirs.install
thirdparty/vcs-load-dirs/debian/darcs-load-dirs.manpages
thirdparty/vcs-load-dirs/debian/dirs
thirdparty/vcs-load-dirs/debian/docs
thirdparty/vcs-load-dirs/debian/git-load-dirs.install
thirdparty/vcs-load-dirs/debian/git-load-dirs.manpages
thirdparty/vcs-load-dirs/debian/hg-load-dirs.install
thirdparty/vcs-load-dirs/debian/hg-load-dirs.manpages
thirdparty/vcs-load-dirs/debian/load-dirs-common.install
thirdparty/vcs-load-dirs/debian/pycompat
thirdparty/vcs-load-dirs/debian/rules
thirdparty/vcs-load-dirs/debian/svk-load-dirs.install
thirdparty/vcs-load-dirs/debian/svk-load-dirs.manpages
thirdparty/vcs-load-dirs/debian/tla-load-dirs.install
thirdparty/vcs-load-dirs/debian/tla-load-dirs.manpages
thirdparty/vcs-load-dirs/docs/Makefile
thirdparty/vcs-load-dirs/docs/sgml-common/COPYING
thirdparty/vcs-load-dirs/docs/sgml-common/COPYRIGHT
thirdparty/vcs-load-dirs/docs/sgml-common/ChangeLog
thirdparty/vcs-load-dirs/docs/sgml-common/Makefile.common
thirdparty/vcs-load-dirs/docs/sgml-common/SConstruct
thirdparty/vcs-load-dirs/docs/sgml-common/ps2epsi
thirdparty/vcs-load-dirs/docs/vcs_load_dirs.sgml
thirdparty/vcs-load-dirs/git_load_dirs
thirdparty/vcs-load-dirs/hg_load_dirs
thirdparty/vcs-load-dirs/setup.py
thirdparty/vcs-load-dirs/svk_load_dirs
thirdparty/vcs-load-dirs/tla_load_dirs
thirdparty/vcs-load-dirs/vcs_support/__init__.py
thirdparty/vcs-load-dirs/vcs_support/commandver.py
thirdparty/vcs-load-dirs/vcs_support/init.py
thirdparty/vcs-load-dirs/vcs_support/util.py
thirdparty/vcs-load-dirs/vcs_support/vcs_interact.py
thirdparty/vcs-load-dirs/vcs_support/vcs_wc.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/COPYING	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,342 @@
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/baz_load_dirs	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,20 @@
+#!/usr/bin/python
+# Copyright (C) 2005-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from vcs_support import init
+init.run("baz")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/darcs_load_dirs	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+### REMEMBER TO UPDATE VERSION IN vcs_support/init.py
+
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+from vcs_support import init
+
+init.run("darcs")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/baz-load-dirs.install	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/baz_load_dirs usr/bin
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/baz-load-dirs.manpages	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+docs/baz_load_dirs.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/changelog	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,315 @@
+vcs-load-dirs (1.1.6) unstable; urgency=low
+
+  * Added Vcs-* and Homepage control lines.
+
+ -- John Goerzen <jgoerzen@complete.org>  Sat, 01 Mar 2008 20:49:13 -0600
+
+vcs-load-dirs (1.1.5) unstable; urgency=low
+
+  * Better git rm handling.  Patch from agx@sigxcpu.org.
+    Closes: #417307.
+  * Convert changelog to UTF-8.  Closes: #453970.  (And the merged
+    bugs from the other binary debs generated from this package.)
+
+ -- John Goerzen <jgoerzen@complete.org>  Sun, 10 Feb 2008 07:52:54 -0600
+
+vcs-load-dirs (1.1.4) unstable; urgency=low
+
+  * Better documented -f
+  * Put Mercurial log where it won't get accidentally checked in
+  * Unify logfile generation across VCSs
+
+ -- John Goerzen <jgoerzen@complete.org>  Sat,  3 Mar 2007 08:12:28 -0600
+
+vcs-load-dirs (1.1.3) unstable; urgency=low
+
+  * -f now suppresses the interactive interface; it isn't necessary
+    in that mode.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 28 Feb 2007 06:07:56 -0600
+
+vcs-load-dirs (1.1.2) unstable; urgency=low
+
+  * Can now import directly from tar.gz, tar.bz2, and zip archives.
+    Closes: #235240.
+  * Guido's patch for git summary was already applied.  Closes: #403505.
+  * Fixed bug with Mercurial renames.
+  * New option -f to request no changes other than commits to the VCS.
+  * Documented -n and -f in the manpages.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 28 Feb 2007 05:32:53 -0600
+
+vcs-load-dirs (1.1.1) unstable; urgency=low
+
+  * Fixed Mercurial log summary recording.
+  * Noted program's new homepage.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue, 27 Feb 2007 03:04:54 -0600
+
+vcs-load-dirs (1.1.0) unstable; urgency=low
+
+  * New version.
+  * Source renamed to vcs-load-dirs.
+
+ -- John Goerzen <jgoerzen@complete.org>  Mon, 26 Feb 2007 05:06:12 -0600
+
+tla-load-dirs (1.0.35) unstable; urgency=low
+
+  * Merge and ACK NMU 1.0.33.1.  Closes: #395128.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 22 Nov 2006 05:07:41 -0600
+
+tla-load-dirs (1.0.34) unstable; urgency=high
+
+  * Fix darcs support, which one of the earlier git patches broke.
+
+ -- John Goerzen <jgoerzen@complete.org>  Fri, 17 Nov 2006 06:16:14 -0600
+
+tla-load-dirs (1.0.33.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Make sure git-load-dirs actually gets installed (Closes: #395128)
+
+ -- Guido Guenther <agx@sigxcpu.org>  Thu,  9 Nov 2006 09:48:02 +0100
+
+tla-load-dirs (1.0.33) unstable; urgency=low
+
+  * Added support for git, thanks to a patch from Guido Guenther.
+    Closes: #387139.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 18 Oct 2006 04:00:47 -0500
+
+tla-load-dirs (1.0.32) unstable; urgency=low
+
+  * Now build baz-load-dirs again, since bazaar is no longer broken.
+    Closes: #390458.
+
+ -- John Goerzen <jgoerzen@complete.org>  Mon,  9 Oct 2006 07:02:03 -0500
+
+tla-load-dirs (1.0.31) unstable; urgency=high
+
+  * Update deps on load-dirs-common.  Closes: #385644.
+  * Update for new Python policy.  Closes: #380975.
+  * No longer build baz-load-dirs for Debian.  bazaar is not migrating
+    into testing, and is preventing this package from entering.
+  * Update standards-version to 3.7.2.
+
+ -- John Goerzen <jgoerzen@complete.org>  Mon,  4 Sep 2006 09:06:41 -0500
+
+tla-load-dirs (1.0.30) unstable; urgency=low
+
+  * Apply patch from Gregory Colpart to fix a typo in svk support.
+    Closes: #382291.
+
+ -- John Goerzen <jgoerzen@complete.org>  Thu, 10 Aug 2006 16:13:13 -0500
+
+tla-load-dirs (1.0.29) unstable; urgency=low
+
+  * Ack NMU.  Closes: #360730.
+  * Do import instead of commit when the current tree-version has no logs.
+    Patch from Lionel Elie Mamane.  Closes: #350234.
+
+ -- John Goerzen <jgoerzen@complete.org>  Sat, 17 Jun 2006 11:21:19 -0500
+
+tla-load-dirs (1.0.28-0.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Add commas in dependency fields (Closes: #360730).
+
+ -- Luk Claes <luk@debian.org>  Mon, 17 Apr 2006 11:12:32 +0200
+
+tla-load-dirs (1.0.28) unstable; urgency=low
+
+  * Applied patch from Teemu Ikonen to support baz.  Closes: #322622.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue,  6 Sep 2005 06:03:24 -0500
+
+tla-load-dirs (1.0.27) unstable; urgency=low
+
+  * Fixed docs for darcs_load_dirs and also fixed manpages to reflect
+    that upstream archive is now kept in darcs instead of tla.
+
+ -- John Goerzen <jgoerzen@complete.org>  Thu,  1 Sep 2005 06:18:46 -0500
+
+tla-load-dirs (1.0.26) unstable; urgency=low
+
+  * Applied patch from Marc Dequènes to support new tla 1.3 command syntax.
+    Closes: #319505.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 24 Aug 2005 06:26:53 -0500
+
+tla-load-dirs (1.0.25) unstable; urgency=low
+
+  * Fixed bug where moving files into a new directory could fail on darcs.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 17 Aug 2005 05:26:27 -0500
+
+tla-load-dirs (1.0.24) unstable; urgency=low
+
+  * Now use darcs record -l instead of darcs add for adds.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue, 21 Jun 2005 06:47:27 -0500
+
+tla-load-dirs (1.0.23) unstable; urgency=low
+
+  * Missed a change to tla_wc.py that resulted because of the changes in
+    1.0.22.  Thanks James Vega for the helpful bug report.  Closes: #311582.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed,  1 Jun 2005 21:20:09 -0500
+
+tla-load-dirs (1.0.22) unstable; urgency=low
+
+  * Add --case-ok to darcs command line and sort filenames before adding.
+    Closes: #311041.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue, 31 May 2005 06:00:45 -0500
+
+tla-load-dirs (1.0.21) unstable; urgency=low
+
+  * No longer run "darcs check".
+
+ -- John Goerzen <jgoerzen@complete.org>  Sat, 14 May 2005 12:09:53 -0500
+
+tla-load-dirs (1.0.20) unstable; urgency=low
+
+  * Fixed rename problem caused by the fix in 1.0.19.
+
+ -- John Goerzen <jgoerzen@complete.org>  Mon, 25 Apr 2005 06:09:22 -0500
+
+tla-load-dirs (1.0.19) unstable; urgency=low
+
+  * [darcs] Fixed moving a file to a directory whose parent didn't yet exist.
+    Thanks to Matt Krai for helpful debugging information.  Closes: #293088.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 20 Apr 2005 22:04:15 -0500
+
+tla-load-dirs (1.0.18) unstable; urgency=low
+
+  * Fixed typos in control.  Closes: #300420.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue, 19 Apr 2005 23:56:29 -0500
+
+tla-load-dirs (1.0.17) unstable; urgency=low
+
+  * [darcs] No longer attempt to darcs remove files; darcs will detect
+    the deletion automatically.
+
+ -- John Goerzen <jgoerzen@complete.org>  Mon, 18 Apr 2005 20:16:14 -0500
+
+tla-load-dirs (1.0.16) unstable; urgency=low
+
+  * Added patch from Alfred M. Szmidt to support symlinks.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue,  1 Mar 2005 14:57:02 -0600
+
+tla-load-dirs (1.0.15) unstable; urgency=low
+
+  * Made load-dirs-common conflict with tla-load-dirs (<< 1.0.14).
+    Some files in earlier tla-load-dirs packages are now in
+    load-dirs-common.  Closes: #278102.
+
+ -- John Goerzen <jgoerzen@complete.org>  Sun, 24 Oct 2004 17:02:04 -0500
+
+tla-load-dirs (1.0.14) unstable; urgency=low
+
+  * Added darcs_load_dirs.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 13 Oct 2004 21:01:04 -0500
+
+tla-load-dirs (1.0.13) unstable; urgency=low
+
+  * Added python to build-deps.  Closes: #259136.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue, 13 Jul 2004 10:17:04 -0500
+
+tla-load-dirs (1.0.12) unstable; urgency=low
+
+  * Experimental: Let the tagging method be tagline.
+
+ -- John Goerzen <jgoerzen@complete.org>  Thu, 26 Feb 2004 22:00:07 -0600
+
+tla-load-dirs (1.0.11) unstable; urgency=low
+
+  * Added "upstream" changelog (from tla), note it in debian/rules,
+    and build-dep on a version of debhelper that can support it.
+  * Fixed tla version detection to work with the new "candidate" versions
+    in Debian sid.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue, 16 Dec 2003 16:16:46 -0600
+
+tla-load-dirs (1.0.10) unstable; urgency=low
+
+  * Added a manpage and description of the program's operation.
+    Closes: #214097.
+  * control s/Build-Depends/Build-Depends-Indep/
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 22 Oct 2003 16:55:19 -0500
+
+tla-load-dirs (1.0.9) unstable; urgency=low
+
+  * Fixed a typo in tla_wc.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 22 Oct 2003 13:52:37 -0500
+
+tla-load-dirs (1.0.8) unstable; urgency=low
+
+  * Now compatible with both 1.0 and the latest 1.1 snapshot.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed, 22 Oct 2003 13:27:54 -0500
+
+tla-load-dirs (1.0.7) unstable; urgency=low
+
+  * Various bugfixes.
+  * Added -s option to set the summary line.
+
+ -- John Goerzen <jgoerzen@complete.org>  Fri,  5 Sep 2003 09:43:03 -0500
+
+tla-load-dirs (1.0.6) unstable; urgency=low
+
+  * Made the verbose stuff actually do something more verbose.
+
+ -- John Goerzen <jgoerzen@complete.org>  Thu,  4 Sep 2003 09:36:06 -0500
+
+tla-load-dirs (1.0.5) unstable; urgency=low
+
+  * Slight logic error when adding multiple nested directories.
+    Now do the adds after the copyfrom().
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed,  3 Sep 2003 22:04:25 -0500
+
+tla-load-dirs (1.0.4) unstable; urgency=low
+
+  * Added better error checking of input.
+  * Added command to redraw screen.
+  * Many bugfixes.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed,  3 Sep 2003 15:09:18 -0500
+
+tla-load-dirs (1.0.3) unstable; urgency=low
+
+  * Now properly rm -rf's a directory that is removed.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed,  3 Sep 2003 14:32:39 -0500
+
+tla-load-dirs (1.0.2) unstable; urgency=low
+
+  * Fixed a small syntax error in tla_wc.py.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed,  3 Sep 2003 14:04:21 -0500
+
+tla-load-dirs (1.0.1) unstable; urgency=low
+
+  * New arg: --no-commit.
+  * Now strips off the path from the logged import directory.
+  * More aggressive clean target.
+  * Creates any directories necessary to move files into.
+  * Cleaned up output.
+
+ -- John Goerzen <jgoerzen@complete.org>  Wed,  3 Sep 2003 11:43:12 -0500
+
+tla-load-dirs (1.0.0) unstable; urgency=low
+
+  * Initial Release.  Closes: #208463.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue,  2 Sep 2003 20:10:45 -0500
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/compat	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/control	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,99 @@
+Source: vcs-load-dirs
+Section: devel
+Priority: optional
+Maintainer: John Goerzen <jgoerzen@complete.org>
+XS-Python-Version: current
+Build-Depends-Indep: debhelper (>= 5.0.37.2), gtk-doc-tools, sgml2x, docbook-utils, jade, python (>= 2.3), python-dev, python-central (>= 0.5)
+Standards-Version: 3.7.2
+Homepage: http://software.complete.org/vcs-load-dirs
+Vcs-Git: git://git.complete.org/vcs-load-dirs
+Vcs-Browser: http://git.complete.org/vcs-load-dirs
+
+Package: tla-load-dirs
+Architecture: all
+XB-Python-Version: ${python:Versions}
+Depends: load-dirs-common (= ${Source-Version}), tla, ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
+Description: Import upstream archives into tla/arch
+ Tom Lord's arch/tla system is capable of importing upstream directories
+ into a tla archive for some archives.  For situations where the upstream
+ renames or moves files and directories on a regular basis, version
+ information can be lost.
+ .
+ tla-load-dirs works with tla to import these things and preserve
+ changes.  It works on a principle similar to Subversion's
+ svn_load_dirs.
+
+Package: darcs-load-dirs
+Architecture: all
+XB-Python-Version: ${python:Versions}
+Depends: load-dirs-common (= ${Source-Version}), darcs, ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
+Description: Import upstream archives into darcs
+ Darcs works fine for importing new archives.  However, for situations
+ where the upstream renames or moves files and directories on a regular
+ basis, version information can be lost.
+ .
+ darcs-load-dirs works with darcs to import these things and preserve
+ changes.  It works on a principle similar to Subversion's
+ svn_load_dirs or my tla_load_dirs package for Arch.
+
+Package: hg-load-dirs
+Architecture: all
+XB-Python-Version: ${python:Versions}
+Depends: load-dirs-common (= ${Source-Version}), mercurial, ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
+Description: Import upstream archives into darcs
+ Mercurial works fine for importing new archives.  However, for situations
+ where the upstream renames or moves files and directories on a regular
+ basis, version information can be lost.
+ .
+ hg-load-dirs works with darcs to import these things and preserve
+ changes.  It works on a principle similar to Subversion's
+ svn_load_dirs or my tla_load_dirs package for Arch.
+
+Package: baz-load-dirs
+Architecture: all
+XB-Python-Version: ${python:Versions}
+Depends: load-dirs-common (= ${Source-Version}), bazaar, ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
+Description: Import upstream archives into baz
+ Bazaar (baz) works fine for importing new archives.  However, for situations
+ where the upstream renames or moves files and directories on a regular
+ basis, version information can be lost.
+ .
+ baz-load-dirs works with baz to import these things and preserve
+ changes.  It works on a principle similar to Subversion's
+ svn_load_dirs or my tla_load_dirs package for tla.
+
+Package: svk-load-dirs
+Architecture: all
+XB-Python-Version: ${python:Versions}
+Depends: load-dirs-common (= ${Source-Version}), svk, ${shlibs:Depends} ${misc:Depends} ${python:Depends}
+Description: Import upstream archives into svk
+ Svk works fine for importing new archives.  However, for situations
+ where the upstream renames or moves files and directories on a regular
+ basis, version information can be lost.
+ .
+ svk-load-dirs works with svk to import these things and preserve
+ changes.  It works on a principle similar to Subversion's
+ svn_load_dirs or my tla_load_dirs package for tla.
+
+Package: git-load-dirs
+Architecture: all
+XB-Python-Version: ${python:Versions}
+Depends: load-dirs-common (= ${Source-Version}), git-core, ${shlibs:Depends} ${misc:Depends} ${python:Depends}
+Description: Import upstream archives into git
+ Git works fine for importing new archives.  However, for situations
+ where the upstream renames or moves files and directories on a regular
+ basis, version information can be lost.
+ .
+ git-load-dirs works with git to import these things and preserve
+ changes.  It works on a principle similar to Subversion's
+ svn_load_dirs or my tla_load_dirs package for tla.
+
+Package: load-dirs-common
+Architecture: all
+XB-Python-Version: ${python:Versions}
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
+Conflicts: tla-load-dirs (<< 1.0.14)
+Description: Common files for tla-load-dirs and darcs-load-dirs
+ These two packages share much common code.  This package provides
+ that common code so you don't have to install it twice on your system.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/copyright	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,26 @@
+This package was debianized by John Goerzen <jgoerzen@complete.org> on
+Tue,  2 Sep 2003 20:10:45 -0500.
+
+It was downloaded from the Arch repository at http://arch.complete.org/
+
+Upstream Author(s): John Goerzen <jgoerzen@complete.org>
+
+Copyright:
+
+# Copyright (C) 2003-2006 John Goerzen
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You may find the GPL at /usr/share/common-licenses/GPL-2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/darcs-load-dirs.install	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/darcs_load_dirs usr/bin
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/darcs-load-dirs.manpages	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+docs/darcs_load_dirs.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/dirs	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+usr/bin
+usr/lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/git-load-dirs.install	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/git_load_dirs usr/bin
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/git-load-dirs.manpages	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+docs/git_load_dirs.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/hg-load-dirs.install	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/hg_load_dirs usr/bin
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/hg-load-dirs.manpages	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+docs/hg_load_dirs.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/load-dirs-common.install	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+debian/tmp/usr/lib usr
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/pycompat	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/rules	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,104 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+PYTHON=python
+PACKAGE=vcs-load-dirs
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+	CFLAGS += -O0
+else
+	CFLAGS += -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+	INSTALL_PROGRAM += -s
+endif
+
+configure: configure-stamp
+configure-stamp:
+	dh_testdir
+	# Add here commands to configure the package.
+
+	touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+	dh_testdir
+
+	# Add here commands to compile the package.
+	#/usr/bin/docbook-to-man debian/tla-load-dirs.sgml > tla-load-dirs.1
+	cd docs && make manpages
+	$(PYTHON) setup.py build
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	# Add here commands to clean up after the build process.
+	#-$(MAKE) clean
+	-$(PYTHON) setup.py clean
+	-rm -rf ./++* ./,,*
+	-rm -rf build
+	-cd docs; make realclean
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+
+	# Add here commands to install the package into debian/tla-load-dirs.
+	#$(MAKE) install DESTDIR=$(CURDIR)/debian/tla-load-dirs
+	mkdir debian/tmp
+	$(PYTHON) setup.py install --root=`pwd`/debian/tmp \
+		--no-compile
+
+
+binary-arch: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs -i
+	dh_installdocs -i
+	dh_installexamples -i
+	dh_install -i
+#	dh_installmenu
+#	dh_installdebconf	
+#	dh_installlogrotate
+#	dh_installemacsen
+#	dh_installpam
+#	dh_installmime
+#	dh_installinit
+#	dh_installcron
+#	dh_installinfo
+	dh_installman -i
+	dh_link -i
+	dh_strip -i
+	dh_compress -i
+	dh_fixperms -i
+#	dh_perl
+	dh_pycentral
+	dh_python -i
+#	dh_makeshlibs
+	dh_installdeb -i
+	dh_shlibdeps -i
+	dh_gencontrol -i
+	dh_md5sums -i
+	dh_builddeb -i
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/svk-load-dirs.install	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/svk_load_dirs usr/bin
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/svk-load-dirs.manpages	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+docs/svk_load_dirs.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/tla-load-dirs.install	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/tla_load_dirs usr/bin
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/debian/tla-load-dirs.manpages	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,1 @@
+docs/tla_load_dirs.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/Makefile	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,62 @@
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+MASTERBASE := vcs_load_dirs
+TOPNODE := vcs_load_dirs
+BASICDEPS := $(MASTERBASE).sgml
+#DOINDEX := yes
+DOINDEX := no
+HTMLARGS := -s local
+PSARGS := -s local=printlocal
+
+all: ps
+ps: $(MASTERBASE).ps
+html: html/index.html
+text: $(MASTERBASE).txt
+
+manpages: tla_load_dirs.1 darcs_load_dirs.1 baz_load_dirs.1 svk_load_dirs.1 git_load_dirs.1 hg_load_dirs.1
+%.1: %.sgml
+	docbook2man $<
+
+darcs_load_dirs.1: vcs_load_dirs.1
+	sed -e s/vcs_load_dirs/darcs_load_dirs/g \
+	    -e s/VCS_LOAD_DIRS/DARCS_LOAD_DIRS/g < $< > $@
+
+hg_load_dirs.1: vcs_load_dirs.1
+	sed -e s/vcs_load_dirs/hg_load_dirs/g \
+	    -e s/VCS_LOAD_DIRS/HG_LOAD_DIRS/g < $< > $@
+
+tla_load_dirs.1: vcs_load_dirs.1
+	sed -e s/vcs_load_dirs/tla_load_dirs/g \
+	    -e s/VCS_LOAD_DIRS/TLA_LOAD_DIRS/g < $< > $@
+
+baz_load_dirs.1: vcs_load_dirs.1
+	sed -e s/vcs_load_dirs/baz_load_dirs/g \
+	    -e s/VCS_LOAD_DIRS/BAZ_LOAD_DIRS/g < $< > $@
+
+svk_load_dirs.1: vcs_load_dirs.1
+	sed -e s/vcs_load_dirs/svk_load_dirs/g \
+		-e s/VCS_LOAD_DIRS/SVK_LOAD_DIRS/g < $< > $@
+
+git_load_dirs.1: vcs_load_dirs.1
+	sed -e s/vcs_load_dirs/git_load_dirs/g \
+		-e s/VCS_LOAD_DIRS/GIT_LOAD_DIRS/g < $< > $@
+
+include sgml-common/Makefile.common
+
+realclean: clean
+	-rm -rf *.links *.refs *.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/sgml-common/COPYING	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,342 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+# arch-tag: License for sgml-common
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/sgml-common/COPYRIGHT	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,39 @@
+Copyright for all code except ps2epsi
+-------------------------------------
+# Copyright (C) 2002, 2003 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+Copyright for ps2epsi
+---------------------
+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, 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, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+My local changes were to the page size.
+
+# arch-tag: Copyright statements and information for sgml-common
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/sgml-common/ChangeLog	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,265 @@
+# do not edit -- automatically generated by arch changelog
+# arch-tag: automatic-ChangeLog--jgoerzen@complete.org--projects/sgml-common--head--1.0
+#
+
+2004-05-21 14:28:00 GMT	John Goerzen <jgoerzen@complete.org>	patch-20
+
+    Summary:
+      Fixed text target
+    Revision:
+      sgml-common--head--1.0--patch-20
+
+
+    modified files:
+     ChangeLog SConstruct
+
+
+2004-02-27 15:22:59 GMT	John Goerzen <jgoerzen@complete.org>	patch-19
+
+    Summary:
+      Added manpage generation support
+    Revision:
+      sgml-common--head--1.0--patch-19
+
+
+    modified files:
+     ChangeLog SConstruct
+
+
+2004-02-03 19:50:11 GMT	John Goerzen <jgoerzen@complete.org>	patch-18
+
+    Summary:
+      More clearing up of REs
+    Revision:
+      sgml-common--head--1.0--patch-18
+
+
+    modified files:
+     ChangeLog SConstruct
+
+
+2004-02-03 19:40:22 GMT	John Goerzen <jgoerzen@complete.org>	patch-17
+
+    Summary:
+      Tightened up re for finding image tags
+    Revision:
+      sgml-common--head--1.0--patch-17
+
+
+    modified files:
+     ChangeLog SConstruct
+
+
+2004-02-03 19:28:03 GMT	John Goerzen <jgoerzen@complete.org>	patch-16
+
+    Summary:
+      More changes to support scanner
+    Revision:
+      sgml-common--head--1.0--patch-16
+
+    Removed outdated code and made more bugfixes relevant to documents without
+    images or with only pre-generated images.
+
+    new files:
+     ChangeLog
+
+    modified files:
+     SConstruct
+
+
+2004-02-03 18:41:51 GMT	John Goerzen <jgoerzen@complete.org>	patch-15
+
+    Summary:
+      HTML gen now basically functional with scanning
+    Revision:
+      sgml-common--head--1.0--patch-15
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-03 17:41:51 GMT	John Goerzen <jgoerzen@complete.org>	patch-14
+
+    Summary:
+      Auto-scanning is now close for PDFs.
+    Revision:
+      sgml-common--head--1.0--patch-14
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-03 16:59:02 GMT	John Goerzen <jgoerzen@complete.org>	patch-13
+
+    Summary:
+      Scanners starting to work
+    Revision:
+      sgml-common--head--1.0--patch-13
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-03 16:22:51 GMT	John Goerzen <jgoerzen@complete.org>	patch-12
+
+    Summary:
+      Cleaned up HTML situation
+    Revision:
+      sgml-common--head--1.0--patch-12
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 22:33:50 GMT	John Goerzen <jgoerzen@complete.org>	patch-11
+
+    Summary:
+      SConstruct file now working
+    Revision:
+      sgml-common--head--1.0--patch-11
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 22:07:27 GMT	John Goerzen <jgoerzen@complete.org>	patch-10
+
+    Summary:
+      Fixed nasty PNG gen bug
+    Revision:
+      sgml-common--head--1.0--patch-10
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 21:57:32 GMT	John Goerzen <jgoerzen@complete.org>	patch-9
+
+    Summary:
+      Checkpointing some more...
+    Revision:
+      sgml-common--head--1.0--patch-9
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 21:37:29 GMT	John Goerzen <jgoerzen@complete.org>	patch-8
+
+    Summary:
+      Checkpointing some more...
+    Revision:
+      sgml-common--head--1.0--patch-8
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 20:19:02 GMT	John Goerzen <jgoerzen@complete.org>	patch-7
+
+    Summary:
+      Checkpointing
+    Revision:
+      sgml-common--head--1.0--patch-7
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 19:18:40 GMT	John Goerzen <jgoerzen@complete.org>	patch-6
+
+    Summary:
+      Added Plucker
+    Revision:
+      sgml-common--head--1.0--patch-6
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 19:09:16 GMT	John Goerzen <jgoerzen@complete.org>	patch-5
+
+    Summary:
+      Added cleanup rules
+    Revision:
+      sgml-common--head--1.0--patch-5
+
+
+    modified files:
+     SConstruct
+
+
+2004-02-02 18:58:11 GMT	John Goerzen <jgoerzen@complete.org>	patch-4
+
+    Summary:
+      sources now checks only chapters/ to prevent dep cycle with index
+    Revision:
+      sgml-common--head--1.0--patch-4
+
+
+    modified files:
+     Makefile.common SConstruct {arch}/=tagging-method
+
+
+2004-02-02 17:51:27 GMT	John Goerzen <jgoerzen@complete.org>	patch-3
+
+    Summary:
+      Experimental SCons conversion
+    Revision:
+      sgml-common--head--1.0--patch-3
+
+
+    new files:
+     SConstruct
+
+
+2003-10-21 20:24:04 GMT	John Goerzen <jgoerzen@complete.org>	patch-2
+
+    Summary:
+      Added plain text generation target
+    Revision:
+      sgml-common--head--1.0--patch-2
+
+    Added plain text generation target
+    
+
+    modified files:
+     ./Makefile.common
+
+
+2003-09-10 14:27:58 GMT	John Goerzen <jgoerzen@complete.org>	patch-1
+
+    Summary:
+      Minor updates to PNG generation and gtk-doc icon locations
+    Revision:
+      sgml-common--head--1.0--patch-1
+
+
+    modified files:
+     Makefile.common
+
+
+2003-09-10 14:24:24 GMT	John Goerzen <jgoerzen@complete.org>	base-0
+
+    Summary:
+      initial import
+    Revision:
+      sgml-common--head--1.0--base-0
+
+    
+    (automatically generated log message)
+
+    new files:
+     COPYING COPYRIGHT Makefile.common ps2epsi
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/sgml-common/Makefile.common	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,229 @@
+# -*- Mode: makefile; -*-
+# arch-tag: Primary sgml-common top-level Makefile
+# Common Makefile for SGML documents
+#
+# Copyright (C) 2002, 2003 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+# The following variables should be set:
+# MASTERBASE -- basename of master file -- example: my-guide
+# BASICDEPS -- various dependencies of the master file.  For instance,
+#   this might include files included in the SGML.  It could also be empty.
+# TOPNODE -- Basename of top id for HTML link.
+
+MASTER := $(MASTERBASE).sgml
+FIGUREDIRS := $(wildcard figures/*)
+DOINDEX ?= yes
+
+######################################################################
+# Index generation
+######################################################################
+
+ifeq ($(DOINDEX), yes)
+
+INDEXSGMLFILE := index/index.sgml
+INDEXDATAFILE := index/HTML.index
+
+$(INDEXSGMLFILE): $(INDEXDATAFILE)
+	@echo " *** Generating SGML index from index list"
+	collateindex.pl -i ch.index -g -o index/index.sgml index/HTML.index
+
+$(INDEXDATAFILE): $(MASTER) $(BASICDEPS)
+#	jade -t sgml -d docbook.dsl -V html-index $(MASTER)
+#	jade -t sgml -V html-index $(MASTER)
+	@echo " *** Generating index list from document"
+	-rm -r index
+	mkdir index
+	collateindex.pl -i ch.index -N -o index/index.sgml
+	#mkdir html-temp
+	#docbook2html --output html-temp -V html-index $(MASTER)
+	docbook-2-html -O -V -O html-index $(HTMLARGS) $(MASTER)
+	mv $(MASTERBASE)-html/HTML.index index/
+	rm -r $(MASTERBASE)-html
+endif # DOINDEX
+
+######################################################################
+# Text generation
+######################################################################
+$(MASTERBASE).txt: $(MASTER) $(BASICDEPS) $(INDEXSGMLFILE)
+	@echo " *** Generating text output"
+	docbook2txt $(MASTER)
+
+######################################################################
+# PostScript generation
+######################################################################
+
+$(MASTERBASE).ps: $(MASTER) $(BASICDEPS) $(INDEXSGMLFILE) $(EPSFILES)
+	@echo " *** Generating PostScript output"
+# This works too: docbook2ps -V paper-size=Letter $(MASTER)
+	docbook-2-ps -q -O -V -O paper-size=Letter $(PSARGS) $(MASTER)
+
+######################################################################
+# Figure generation
+######################################################################
+
+%_1.epi: %.ps
+	$(get-epi)
+%_2.epi: %.ps
+	$(get-epi)
+%_3.epi: %.ps
+	$(get-epi)
+%_4.epi: %.ps
+	$(get-epi)
+%_5.epi: %.ps
+	$(get-epi)
+%_6.epi: %.ps
+	$(get-epi)
+%_7.epi: %.ps
+	$(get-epi)
+%_8.epi: %.ps
+	$(get-epi)
+%_9.epi: %.ps
+	$(get-epi)
+%_10.epi: %.ps
+	$(get-epi)
+%_11.epi: %.ps
+	$(get-epi)
+%_12.epi: %.ps
+	$(get-epi)
+
+%_1_l.epi: %.ps
+	$(get-epil)
+%_2_l.epi: %.ps
+	$(get-epil)
+%_3_l.epi: %.ps
+	$(get-epil)
+%_4_l.epi: %.ps
+	$(get-epil)
+%_5_l.epi: %.ps
+	$(get-epil)
+%_6_l.epi: %.ps
+	$(get-epil)
+%_7_l.epi: %.ps
+	$(get-epil)
+%_8_l.epi: %.ps
+	$(get-epil)
+%_9_l.epi: %.ps
+	$(get-epil)
+%_10_l.epi: %.ps
+	$(get-epil)
+%_11_l.epi: %.ps
+	$(get-epil)
+%_12_l.epi: %.ps
+	$(get-epil)
+
+%.png: %_l.epi
+	@echo " *** Generating PNG image for $<"
+	gs -q -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r90 -dBATCH -dNOPAUSE \
+		-dSAFER -sOutputFile=$@ -sDEVICE=png16m $< -c showpage
+
+%.ps: %.pdf
+	pdftops $<
+
+######################################################################
+# HTML generation
+######################################################################
+
+define copy-figures-worker
+mkdir html/figures
+for DIRECTORY in $(FIGUREDIRS); do mkdir html/$$DIRECTORY; cp -v $$DIRECTORY/*.png html/$$DIRECTORY/; done
+endef
+
+define copy-figures
+$(if $(FIGUREDIRS),$(copy-figures-worker))
+endef
+
+html/index.html: $(MASTER) $(BASICDEPS) $(INDEXSGMLFILE) $(PNGFILES)
+	@echo " *** Generating HTML output"
+	-rm -r html
+	mkdir html
+	#docbook2html --output html $(MASTER)
+	docbook-2-html $(HTMLARGS) $(MASTER)
+	mv $(MASTERBASE)-html/* html/
+	rmdir $(MASTERBASE)-html
+	$(copy-figures)
+#	tidy -m html/*.html
+	ln -s $(TOPNODE).html html/index.html
+	-cp -v /usr/share/gtk-doc/data/*.png html/
+
+######################################################################
+# Cleaning
+######################################################################
+
+clean:
+	-rm -f `find . -name "*~"` `find . -name "*.png"` `find . -name "*.epi"`
+	-rm -r html-temp html index $(MASTERBASE).txt
+	-rm *.aux *.log *.dvi *.tex *.jtex *.ps *.html *.log *.out jadetex.cfg
+	-rm *.ps html/*.html figures/topology/*.epi figures/topology/*.png
+	-rm *.log *.pdb
+	-rm `find . -name ".ps"` `find . -name "*.epi"` *.pdf
+	-rm `find . -name "*.png"`
+
+######################################################################
+# Utility functions
+######################################################################
+
+GETPAGE=$(shell echo $(1) | sed -e "s/^.*_\([0-9]*\).epi/\\1/g")
+define get-epi
+@echo " *** Generating EPI image for $<"
+psselect -q $(call GETPAGE,$@) $< temp.ps
+psresize -w 6.375in -h 8.25in temp.ps temp2.ps
+../sgml-common/ps2epsi temp2.ps $@
+rm temp.ps temp2.ps
+endef
+
+GETPAGEL=$(shell echo $(1) | sed -e "s/^.*_\([0-9]*\)_l.epi/\\1/g")
+define get-epil
+@echo " *** Generating large EPI image for $<"
+psselect -q $(call GETPAGEL,$@) $< temp.ps
+psresize -w 8.5in -h 11in temp.ps temp2.ps
+../sgml-common/ps2epsi temp2.ps $@
+rm temp.ps temp2.ps
+endef
+
+
+pdf: $(MASTERBASE).pdf
+
+$(MASTERBASE).pdf: $(MASTERBASE).ps
+	ps2pdf14 $(MASTERBASE).ps
+
+plucker: $(MASTERBASE).pdb
+$(MASTERBASE).pdb: html
+	plucker-build --bpp=4 --compression=zlib --doc-name="$(MASTERBASE)" \
+	-H file:`pwd`/html/index.html -M 5 \
+	--maxheight=320 --maxwidth=310 \
+	--staybelow=file:`pwd`/html --title="$(MASTERBASE)" -p . \
+	-f $(MASTERBASE)
+
+###########################################################################
+# These are obsolete but should still work.
+###########################################################################
+
+
+$(MASTERBASE).dvi: $(MASTERBASE).tex
+	@echo " *** Generating DVI file."
+	jadetex unix-guide.tex
+	jadetex unix-guide.tex
+	jadetex unix-guide.tex
+
+$(MASTERBASE).tex: $(MASTER) $(BASICDEPS) $(INDEXSGMLFILE)
+	@echo " *** Generating TeX files."
+	docbook2tex -V paper-size=Letter $(MASTER)
+#	jade -t tex -V tex-backend -d \
+#		/usr/share/sgml/docbook/stylesheet/dsssl/modular/print/docbook.dsl \
+#		$(MASTER)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/sgml-common/SConstruct	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,208 @@
+# vim: set filetype=python :
+# arch-tag: general-purpose SCons build file for sgml-common
+
+from glob import glob
+import os, re
+
+############################################################
+# Setup
+############################################################
+
+SConsignFile('.sconsign-master')
+#Import('env')
+d = env.Dictionary()
+if not 'JADE' in d:
+    d['JADE'] = 'jade'
+if not 'INDEXNODE' in d:
+    d['INDEXNODE'] = 'ch.index'
+if not 'GTKIMGPATH' in d:
+    d['GTKIMGPATH'] = '/usr/share/gtk-doc/data'
+if not 'PS2EPSI' in d:
+    d['PS2EPSI'] = '../sgml-common/ps2epsi'
+
+def removeindex(l):
+    while 'index/index.sgml' in l:
+        l.remove('index/index.sgml')
+
+master = d['MASTERBASE'] 
+mastersgml = master + '.sgml'
+sources = [mastersgml] + glob('*/*.sgml') + glob('*/*/*.sgml')
+removeindex(sources)
+db2htmlcmd = 'docbook-2-html -D $JADE ${HTMLARGS}  ${SOURCE}'
+db2htmlindexcmd = 'docbook-2-html -D $JADE -O -V -O html-index ${HTMLARGS} ${SOURCE}'
+
+##################################################
+# SCANNERS
+##################################################
+def recursescan(scanner, node, env):
+    result = scanner(node, env) 
+    retval = []
+    for item in result:
+        retval.append(item)
+        retval.extend(recursescan(scanner, item, env))
+    return retval
+
+SGML_includes_re = re.compile(r'<!ENTITY[^>]+SYSTEM[^>]+"(.+)"', re.M)
+def SGML_includes_scan(node, env, path):
+    ret = SGML_includes_re.findall(node.get_contents())
+    removeindex(ret)
+    return ret
+
+SGML_includes_scanner = Scanner(name = 'SGML_includes',
+    function = SGML_includes_scan, recursive = 1, skeys = ['.sgml', '.ent'])
+
+SGML_image_pdf_re = re.compile(r'<(graphic|imagedata).+?fileref="([^"]+\.pdf)"', re.S)
+SGML_image_png_re = re.compile(r'<(graphic|imagedata).+?fileref="([^"]+\.png)"', re.S)
+def SGML_image_scanner(node, env, path, arg):
+    root, ext = os.path.splitext(str(node))
+    contents = node.get_contents()
+    return SGML_includes_scan(node, env, path) + \
+            [os.getcwd() + '/' + x[1] for x in arg.findall(contents)]
+
+SGML_pdf_scanner = Scanner(name = 'SGML_pdf',
+         function = SGML_image_scanner, argument = SGML_image_pdf_re,
+         recursive = 1)
+SGML_png_scanner = Scanner(name = 'SGML_png',
+        function = SGML_image_scanner, argument = SGML_image_png_re,
+        recursive = 1)
+
+##################################################
+# BUILDERS
+##################################################
+
+#### PLAIN TEXT
+Btxt = Builder(action="docbook2txt $SOURCE", src_suffix='.sgml', suffix='.txt')
+
+#### PDF / POSTSCRIPT
+Bpdf = Builder(action="docbook-2-pdf -D ${JADE} -q -O -V -O paper-size=Letter ${PDFARGS} ${SOURCE}",
+        src_suffix='.sgml', suffix='.pdf')
+Bpdf2ps = Builder(action="pdftops ${SOURCE}", src_suffix='.pdf', suffix='.ps')
+
+#### MAN PAGES
+# FIXME: test this
+Bman = Builder(action="docbook2man $SOURCE", src_suffix='.sgml', suffix='.1')
+
+#### HTML
+Bhtml = Builder(action = [ \
+        'if test -d ${TARGET.dir} ; then rm -r ${TARGET.dir} ; fi',
+        'mkdir ${TARGET.dir}',
+        db2htmlcmd,
+        'mv ${MASTERBASE}-html/* ${TARGET.dir}/',
+        'rmdir ${MASTERBASE}-html',
+        'ln -s ${TOPNODE}.html ${TARGET.dir}/index.html',
+        'cp ${GTKIMGPATH}/*.png ${TARGET.dir}/'])
+
+#### PNG
+Bepip2png = Builder(action = 'gs -q -dTextAlphaBits=4 -dGraphicsAlphaBits=4 ' +\
+        '-r90 -dBATCH -dNOPAUSE -dSAFER -sOutputFile=$TARGET ' + \
+        '-sDEVICE=png16m $SOURCE -c showpage', suffix='.png', src_suffix='.pngepi')
+
+#### EPI from PS
+def getpagenumfromname(target, source, env, for_signature):
+    return re.search('^.*_(\d+)\.(png){0,1}epi$', str(target[0])).group(1)
+d['GETPAGE'] = getpagenumfromname
+
+Aps2epi = Action(['psselect -q ${GETPAGE} $SOURCE temp.ps',
+        'psresize -w ${WIDTH} -h ${HEIGHT} temp.ps temp2.ps',
+        '$PS2EPSI temp2.ps $TARGET',
+        'rm temp.ps temp2.ps'])
+Bps2epi = Builder(action=Aps2epi, src_suffix='.ps', suffix='.epi')
+Bps2epip = Builder(action=Aps2epi, src_suffix='.ps', suffix='.pngepi')
+Bepi2pdf = Builder(action="epstopdf -o=${TARGET} ${SOURCE}", suffix='.pdf',
+        src_suffix='.epi')
+
+#### PLUCKER
+Bplucker = Builder(action = 'plucker-build --bpp=4 --compression=zlib ' + \
+        '--doc-name="${MASTERBASE}" -H file:${SOURCE.abspath} -M 5 ' + \
+        '--maxheight=320 --maxwidth=310 --staybelow=file:`pwd`/${SOURCE.dir} ' + \
+        '--title="${MASTERBASE}" -p . -f ${MASTERBASE}')
+
+##################################################
+# General setup
+##################################################
+
+env.Append(BUILDERS = {'Text': Btxt, 'PDF2PS': Bpdf2ps, 'PDF': Bpdf, 'HTML': Bhtml,
+        'Plucker': Bplucker, 'PS2EPI': Bps2epi, 'PS2EPIP': Bps2epip,
+        'EPI2PDF': Bepi2pdf, 'EPIP2PNG': Bepip2png, 'MAN': Bman})
+
+#### INDEX GENERATION
+if 'DOINDEX' in d:
+    Bindex = Builder(action = ['if test -d ${TARGET.dir}  ; then rm -r ${TARGET.dir} ; fi',
+        "mkdir ${TARGET.dir}",
+        "collateindex.pl -i $INDEXNODE -N -o $TARGET",
+        db2htmlindexcmd,
+        "mv ${MASTERBASE}-html/HTML.index ${TARGET.dir}/",
+        "rm -r ${MASTERBASE}-html",
+        "collateindex.pl -i $INDEXNODE -g -o $TARGET ${TARGET.dir}/HTML.index"])
+    env['BUILDERS']['Index'] = Bindex
+    index = env.Index('index/index.sgml', mastersgml)
+    env.Depends(index, sources)
+    env.Clean(index, 'index')
+    deps = sources + [index]
+else:
+    deps = sources
+
+##################################################
+# BUILD RULES
+###################################################
+# Text
+text = env.Text(mastersgml)
+env.Depends(text, deps)
+env.Alias('text', text)
+
+# PDF
+pdfsgml = File(mastersgml)
+pdf = env.PDF(pdfsgml)
+figsindoc = [x for x in recursescan(SGML_pdf_scanner, pdfsgml, env) if str(x).endswith('.pdf')]
+epipdf = []
+for file in figsindoc:
+    pdfname = re.sub('_\d+\.pdf$', '.pdf', str(file))
+    if pdfname == str(file):
+        # This is not a filename that fits our pattern; add unmodified.
+        epipdf.append(file)
+        continue
+    psfile = env.PDF2PS(source = pdfname)
+    epifile = env.PS2EPI(str(file).replace(".pdf", ".epi"), psfile,
+            WIDTH='6.375in', HEIGHT='8.25in')
+    epipdf.append(env.EPI2PDF(source = epifile))
+
+env.Depends(pdf, deps)
+env.Depends(pdf, epipdf)
+env.Alias('pdf', pdf)
+env.Clean(pdf, ['jadetex.cfg', '${MASTERBASE}.aux', '${MASTERBASE}.dvi',
+        '${MASTERBASE}.jtex', '${MASTERBASE}.log', '${MASTERBASE}.out',
+        'jade-out.fot'])
+
+# PS
+ps = env.PDF2PS(source = pdf)
+env.Alias('ps', ps)
+
+# HTML
+htmlsgml = File(mastersgml)
+buildhtml = env.HTML('html/index.html', htmlsgml)
+figsindoc = [x for x in recursescan(SGML_png_scanner, htmlsgml, env) if str(x).endswith('.png')]
+epipng = []
+for file in figsindoc:
+    pdfname = re.sub('_\d+\.png$', '.pdf', str(file))
+    if pdfname == str(file):
+        # This is not a filename that fits our pattern; add unmodified. 
+        epipng.append(file)
+        continue
+    psfile = env.PDF2PS(source = pdfname)
+    epifile = env.PS2EPIP(str(file).replace(".png", ".pngepi"), psfile,
+            WIDTH='8.5in', HEIGHT='11in')
+    epipng.append(env.EPIP2PNG(source = epifile))
+
+env.Depends(buildhtml, epipng)
+env.Depends(buildhtml, deps)
+pnginstalls = env.InstallAs(['html/' + str(x) for x in epipng], epipng)
+env.Depends(pnginstalls, buildhtml)
+html = env.Alias('html', buildhtml)
+html = env.Alias('html', pnginstalls)
+env.Clean(buildhtml, 'html')
+
+# Plucker
+plucker = env.Plucker(master + '.pdb', 'html/index.html')
+env.Alias('plucker', plucker)
+
+env.Default(html)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/sgml-common/ps2epsi	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,77 @@
+#!/bin/sh
+# $RCSfile: ps2epsi,v $ $Revision: 1.4.2.2 $
+# arch-tag: ps2epsi customized for sgml-common
+
+tmpfile=/tmp/ps2epsi$$
+
+export outfile
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+	echo "Usage: `basename $0` file.ps [file.epsi]" 1>&2
+	exit 1
+fi
+
+infile=$1;
+
+if [ $# -eq 1 ]
+then
+	case "${infile}" in
+	  *.ps)		base=`basename ${infile} .ps` ;;
+	  *.cps)	base=`basename ${infile} .cps` ;;
+	  *.eps)	base=`basename ${infile} .eps` ;;
+	  *.epsf)	base=`basename ${infile} .epsf` ;;
+	  *)		base=`basename ${infile}` ;;
+	esac
+	outfile=${base}.epsi
+else
+	outfile=$2
+fi
+
+ls -l ${infile} |
+awk 'F==1	{
+		cd="%%CreationDate: " $6 " " $7 " " $8;
+		t="%%Title: " $9;
+		f="%%For:" U " " $3;
+		c="%%Creator: Ghostscript ps2epsi from " $9;
+		next;
+		}
+	/^%!/	{next;}
+	/^%%Title:/	{t=$0; next;}
+	/^%%Creator:/	{c=$0; next;}
+	/^%%CreationDate:/	{cd=$0; next;}
+	/^%%For:/	{f=$0; next;}
+	!/^%/	{
+		print "/ps2edict 30 dict def";
+		print "ps2edict begin";
+		print "/epsititle (" t "\\n) def";
+		print "/epsicreator (" c "\\n) def";
+		print "/epsicrdt (" cd "\\n) def";
+		print "/epsifor (" f "\\n) def";
+		print "end";
+		exit(0);
+		}
+	' U="$USERNAME$LOGNAME"  F=1 - F=2 ${infile} >$tmpfile
+
+gs -q -dNOPAUSE -dSAFER -dDELAYSAFER -r72 -sDEVICE=bit -sOutputFile=/dev/null $tmpfile ps2epsi.ps $tmpfile <${infile} 1>&2
+rm -f $tmpfile
+
+(
+cat << BEGINEPS
+save countdictstack mark newpath /showpage {} def /setpagedevice {pop} def
+%%EndProlog
+%%Page 1 1
+BEGINEPS
+
+cat ${infile} |
+sed -e '/^%%BeginPreview:/,/^%%EndPreview[^!-~]*$/d' -e '/^%!PS-Adobe/d'\
+    -e '/^%%[A-Za-z][A-Za-z]*[^!-~]*$/d' -e '/^%%[A-Za-z][A-Za-z]*: /d'
+
+cat << ENDEPS
+%%Trailer
+cleartomark countdictstack exch sub { end } repeat restore
+%%EOF
+ENDEPS
+
+) >> ${outfile}
+
+exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/docs/vcs_load_dirs.sgml	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,314 @@
+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+  <!ENTITY vld "<application>vcs_load_dirs</application>">
+]>
+<!--      "file:///usr/share/sgml/docbook/dtd/xml/4.2/docbookx.dtd"> -->
+
+<reference>
+  <title>vcs_load_dirs Manual</title>
+
+  <refentry>
+    <refentryinfo>
+      <address><email>jgoerzen@complete.org</email></address>
+      <author><firstname>John</firstname><surname>Goerzen</surname></author>
+    </refentryinfo>
+
+    <refmeta>
+      <refentrytitle>vcs_load_dirs</refentrytitle>
+      <manvolnum>1</manvolnum>
+      <refmiscinfo>John Goerzen</refmiscinfo>
+    </refmeta>
+
+    <refnamediv>
+      <refname>vcs_load_dirs</refname>
+      <refpurpose>Import upstream archives into tla, hg, darcs, or git and handle renames</refpurpose>
+    </refnamediv>
+
+    <refsynopsisdiv>
+      <cmdsynopsis>
+        <command>vcs_load_dirs</command>
+        <group>
+          <arg>-w<replaceable>WC</replaceable></arg>
+          <arg>--wc=<replaceable>WC</replaceable></arg>
+        </group>
+        <group>
+          <arg>-l<replaceable>FILE</replaceable></arg>
+          <arg>--log=<replaceable>FILE</replaceable></arg>
+        </group>
+        <group>
+          <arg>-L<replaceable>TEXT</replaceable></arg>
+          <arg>--log-message=<replaceable>TEXT</replaceable></arg>
+        </group>
+        <group>
+          <arg>-s<replaceable>MSG</replaceable></arg>
+          <arg>--summary=<replaceable>MSG</replaceable></arg>
+        </group>
+        <group>
+          <arg>-v</arg>
+          <arg>--verbose</arg>
+        </group>
+        <group>
+          <arg>-n</arg>
+          <arg>--no-commit</arg>
+        </group>
+        <group>
+          <arg>-f</arg>
+          <arg>--fs-changes-only</arg>
+        </group>
+        <arg choice="plain">vendor_source_dir</arg>
+      </cmdsynopsis>
+
+      <cmdsynopsis>
+	<command>vcs_load_dirs</command>
+        <arg choice="plain">--version</arg>
+      </cmdsynopsis>
+
+      <cmdsynopsis>
+        <command>vcs_load_dirs</command>
+        <group>
+          <arg choice="plain">--help</arg>
+          <arg choice="plain">-h</arg>
+        </group>
+      </cmdsynopsis>
+
+    </refsynopsisdiv>
+
+    <refsect1>
+      <title>Description</title>
+      <para>
+        &vld; is a tool to help you import archives from people that
+        do not use Arch, Mercurial, Darcs, or Git into an Arch,
+        Mercurial, Darcs, or Git
+        archive.  Along the way, it takes
+        care of all the typical hassles: it will create tags in the
+        repository for new files; delete tags for removed files;
+        and move tags for files that have themselves been moved.
+        &vld; can handle both first imports of a package and
+        successive imports.
+      </para>
+      <para>
+        For those familiar with Subversion, you will know that it has
+        a tool called <application>svn_load_dirs</application>.  &vld;
+        is modeled after that program, but contains various
+        improvements for ease of use.
+      </para>
+    </refsect1>
+
+    <refsect1>
+      <title>Usage</title>
+      <para>
+        In the simplest case, you will simply run &vld; from your
+        working directory, passing it the name of the directory
+        containing the new upstream sources.  &vld will run, usually
+        making and commiting changes without any need of greater
+        assistance from you.
+      </para>
+      <refsect2>
+        <title>Renamed Files</title>
+        <para>
+          &vld; can automatically detect added files and deleted files
+          if they occur in isolation.  However, it cannot
+          automatically tell the difference between a delete and an
+          add, and a rename.  (There is not enough information in
+          simple upstream imports to capture the intent.)  
+          Therefore, &vld; will prompt you to solve the problem.
+          You can opt to ignore it -- &vld; will just issue deletes
+          and adds as appropriate -- but then your history will be
+          harder to track if there were indeed renames along the way.
+        </para>
+        <para>
+          You will be presented with a four-column listing.  Those
+          columns, in order from left to right, represent:
+        </para>
+        <orderedlist>
+          <listitem><para>File number for deleted file</para>
+          </listitem>
+          <listitem><para>File name of deleted file</para>
+          </listitem>
+          <listitem><para>File number of added file</para>
+          </listitem>
+          <listitem><para>File name of added file</para>
+          </listitem>
+        </orderedlist>
+        <para>
+          You have three options at this point: you can press q to
+          indicate that there are no more renames; you can press r to
+          request the list be re-drawn, or you can supply one or more
+          renames.
+        </para>
+        <para>
+          A rename uses the left column as the old name and the right
+          column as the new name.  To save you typing, you just enter
+          the appropriate file numbers separated by spaces.  So, if
+          the file at position 5 on the left moved to position 1b on
+          the right, just enter "5 1b".  After doing that, the list
+          will be automatically re-drawn, and you can either make
+          further selections or exit.
+        </para>
+        <para>
+          If you want to rename several files at once, enter your
+          rename commands separated by commas.  For instance, "5 1b, 6
+          1c".
+        </para>
+      </refsect2>
+    </refsect1>
+
+    <refsect1>
+      <title>Options</title>
+      
+      <variablelist>
+        <varlistentry><term>-h</term>
+          <term>--help</term>
+          <listitem><para>Displays a brief summary of the available
+              options and exits.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry><term>-l<replaceable>FILE</replaceable></term>
+          <term>--log=<replaceable>FILE</replaceable></term>
+          <listitem><para>
+              Add the contents of <replaceable>FILE</replaceable> to
+              the end of the log message automatically generated by
+              &vld; for a commit/record.
+            </para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry><term>-L<replaceable>TEXT</replaceable></term>
+          <term>--log-message=<replaceable>TEXT</replaceable></term>
+          <listitem><para>
+              Add the <replaceable>TEXT</replaceable> specified on the
+              command line to the log message.
+            </para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry><term>-s<replaceable>MSG</replaceable></term>
+          <term>--summary=<replaceable>MSG</replaceable></term>
+          <listitem>
+            <para>
+              Sets the log summary line to the
+              <replaceable>MSG</replaceable> supplied on the command
+              line.  This operation requires Darcs, Mercurial, or 
+              tla 1.1 or above; tla 1.0
+              does not provide the features necessary to implement it.
+            </para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry><term>-n</term>
+          <term>--no-commit</term>
+          <listitem><para>
+              Do not commit changes to the target VCS.
+            </para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry><term>-f</term>
+          <term>--fs-changes-only</term>
+          <listitem><para>
+              Move files in the filesystem, but do not inform VCS of
+              changes.  You will almost certainly want to use this
+              with -n.  This also suppresses the interactive interface.
+            </para>
+          </listitem>
+        </varlistentry>
+              
+        <varlistentry><term>-v</term>
+          <term>--verbose</term>
+          <listitem><para>Causes &vld; to display additional status
+              information.  You will see the darcs/tla/git/hg commands that are
+              being run behind the scenes, and some executed commands
+              may receive arguments asking them to be more verbose as
+              well.
+            </para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry><term>--version</term>
+          <listitem><para>Causes &vld; to print its version number and
+              exit.
+            </para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry><term>-w<replaceable>WC</replaceable></term>
+          <term>--wc=<replaceable>WC</replaceable></term>
+          <listitem>
+            <para>
+              Explicitly set the working copy directory to
+              <replaceable>WC</replaceable>.  If not specified,
+              defaults to the current working directory.
+            </para>
+          </listitem>
+        </varlistentry>        
+      </variablelist>
+    </refsect1>
+    <refsect1>
+      <title>Copyright</title>
+      <para>&vld;, and this manual, are Copyright &copy; 2003-2007 John Goerzen.</para>
+
+      <para>
+	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.
+      </para>
+
+      <para>
+	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.
+      </para>
+
+      <para>
+	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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA</para>
+
+    </refsect1>
+
+    <refsect1>
+      <title>Author</title>
+      <para>&vld;, its libraries, documentation, and all included files, except where
+	noted, was written by John Goerzen <email>jgoerzen@complete.org</email> and
+	copyright is held as stated in the COPYRIGHT section.
+      </para>
+
+      <para>
+        The homepage for &vld; is
+        <ulink
+        url="http://software.complete.org/vcs-load-dirs"></ulink>
+      </para>
+      <para>
+        This package may be downloaded from
+        <ulink
+          url="http://packages.debian.org/vcs-load-dirs"></ulink>.
+        darcs users may also obtain the latest version with:
+        <screen>
+$ darcs get --partial http://darcs.complete.org/vcs-load-dirs
+        </screen>
+      </para>
+    </refsect1>
+
+    <refsect1>
+      <title>See Also</title>
+      <para>
+        <application>tla</application>(1),
+        <application>darcs</application>(1),
+        <application>hg</application>(1),
+        <application>git</application>(1),
+        <application>tla-buildpackage</application>(1),
+        <application>darcs-buildpackage</application>(1),
+        <application>hg-buildpackage</application>(1).
+      </para>
+    </refsect1>
+  </refentry>
+</reference>
+
+<!--
+Local Variables:
+mode: sgml
+sgml-set-face: T
+End:
+-->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/git_load_dirs	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+### REMEMBER TO UPDATE VERSION IN vcs_support/init.py
+
+# Copyright (C) 2006-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+from vcs_support import init
+
+init.run("git")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/hg_load_dirs	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+### REMEMBER TO UPDATE VERSION IN vcs_support/init.py
+
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+from vcs_support import init
+
+init.run("hg")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/setup.py	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+# Copyright (C) 2003-2007 John Goerzen
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# END OF COPYRIGHT #
+
+from distutils.core import setup
+
+setup(name = "vcs_load_dirs",
+      author = 'John Goerzen',
+      author_email = 'jgoerzen@complete.org',
+      packages = ['vcs_support'],
+      scripts = ['tla_load_dirs', 'hg_load_dirs', 'darcs_load_dirs', 'baz_load_dirs', 'svk_load_dirs', 'git_load_dirs']
+      #license = offlineimap.version.copyright + \
+      #          ", Licensed under the GPL version 2"
+)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/svk_load_dirs	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,20 @@
+#!/usr/bin/python
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from vcs_support import init
+init.run("svk")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/tla_load_dirs	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,20 @@
+#!/usr/bin/python
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from vcs_support import init
+init.run("tla")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/vcs_support/commandver.py	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,179 @@
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import util
+vcssyn = None
+vcsobj = None
+vcscmd = None
+darcs = False
+svk = False
+git = False
+hg = False
+
+def setscm(x):
+    global darcs, svk, git, vcscmd, hg
+    if (x == "darcs"):
+        vcscmd = "darcs"
+        darcs = True
+    elif (x == "baz"):
+        vcscmd = "baz"
+    elif (x == "tla"):
+        vcscmd = "tla"
+    elif (x == "git"):
+        vcscmd = "git"
+        git = True
+    elif (x == "hg"):
+        vcscmd = "hg"
+        hg = True
+    elif (x == "svk"):
+        vcscmd = "svk"
+        svk = True
+    else:
+        print "Failed to determine VCS to use"
+        sys.exit(2)
+    print " VCSCMD: ", vcscmd
+
+def isdarcs():
+    global darcs
+    return darcs
+
+def issvk():
+    global svk
+    return svk
+
+def isgit():
+    global git
+    return git
+
+def ishg():
+    global hg
+    return hg
+
+def getvcssyntax():
+    global vcssyn, vcsobj
+    if vcssyn != None:
+        return vcssyn
+
+    if isdarcs():
+        vcssyn = 'darcs'
+        vcsobj = Darcs()
+    elif ishg():
+        vcssyn = 'hg'
+        vcsobj = Hg()
+    elif isgit():
+        vcssyn = 'Git'
+        vcsobj = Git()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('tla-1.0.') != -1:
+        vcssyn = '1.0'
+        vcsobj = Tla10()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('tla-1.1.') != -1:
+        vcssyn = '1.1'
+        vcsobj = Tla11()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('tla-1.3.') != -1:
+        vcssyn = '1.3'
+        vcsobj = Tla13()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('baz Bazaar version 1.4.') != -1:
+        vcssyn = 'baz1.4'
+        vcsobj = Baz14()        
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('This is svk') != -1:
+        vcssyn = 'svk'
+        vcsobj = Svk()
+    else:
+        vcssyn = '1.3'
+        vcsobj = Tla13()
+    return vcssyn
+
+class Tla10:
+    tagging_method = 'tagging-method'
+    add = ['add-tag']
+    move = 'move-tag'
+    delete = ['delete-tag']
+    update = 'update --in-place .'
+    replay = 'replay --in-place .'
+    commit = 'commit'
+    importcmd = 'import'
+
+class Tla11:
+    tagging_method = 'id-tagging-method'
+    add = ['add']
+    move = 'move'
+    delete = ['delete']
+    update = 'update'
+    replay = 'replay'
+    commit = 'commit'
+    importcmd = 'import'
+
+class Tla13:
+    tagging_method = 'id-tagging-method'
+    add = ['add-id']
+    move = 'move-id'
+    delete = ['delete-id']
+    update = 'update'
+    replay = 'replay'
+    commit = 'commit'
+    importcmd = 'import'
+
+class Baz14:
+    tagging_method = 'id-tagging-method'
+    add = ['add-id']
+    move = 'move-id'
+    delete = ['delete-id']
+    update = 'update'
+    replay = 'replay'
+    commit = 'commit'    
+    importcmd = 'import'
+
+class Darcs:
+    tagging_method = None
+    add = ['add', '--case-ok']
+    move = 'mv'
+    delete = None
+    update = 'pull'
+    replay = 'pull'
+    commit = 'record'
+
+class Hg:
+    tagging_method = None
+    add = ['add']
+    move = 'mv'
+    delete = None
+    update = 'pull'
+    replay = 'pull'
+    commit = 'commit'
+
+class Git:
+    tagging_method = None
+    add = ['add']
+    move = 'mv'
+    delete = ['rm', '-r']
+    update = 'checkout'
+    replay = None 
+    commit = 'commit'
+
+class Svk:
+	tagging_method = None
+	add = ['add']
+	move = 'mv'
+	delete = ['rm']
+	update = 'pull'
+	replay = 'pull'
+	commit = 'commit'
+
+def cmd():
+    global vcsobj
+    getvcssyntax()
+    return vcsobj
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/vcs_support/init.py	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,75 @@
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+from optparse import OptionParser
+from vcs_support import util, commandver
+import sys
+
+def run(darcsdefault):
+    version = '1.1.4'
+
+    parser = OptionParser(usage="usage: %prog [options] vendor_source_dir",
+                          version=version)
+    parser.add_option("-w", "--wc", dest="wc", default=".",
+                      help="Set working copy to WC (defaults to current directory)", metavar="WC")
+    parser.add_option("-l", "--log", dest="changelog", metavar="FILE", default=None,
+                      help="Get changelog text from FILE")
+    parser.add_option("-L", "--log-message", dest="logtext", metavar="TEXT",
+                      default='', help="Log with TEXT")
+    parser.add_option("-s", "--summary", dest="summary", metavar="MSG",
+                      default=None, help="Set log summary message to MSG, overriding the default")
+    parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
+                      default=False, help="Show more status information")
+    parser.add_option("-f", "--fs-changes-only", action="store_true",
+                      dest="fsonly", default=False,
+                      help="Disable interactivity and issue no add/rm/mv commands to VCS, use with -n")
+    parser.add_option("-n", "--no-commit", action="store_false", dest="docommit",
+                      default=True, help="Do not commit the changes.")
+
+    (options, args) = parser.parse_args()
+    util.verbose = options.verbose
+
+    log = options.logtext + "\n"
+    if options.changelog:
+        fd = open(options.changelog, "r")
+        log += fd.read()
+        fd.close()
+
+    if len(args) != 1:
+        parser.error("Failed to specify a path to import.")
+
+    commandver.setscm(darcsdefault)
+
+    from vcs_support import vcs_wc, vcs_interact
+
+    wc = vcs_wc.wc(options.wc, verbose = options.verbose,
+                   fsonly = options.fsonly)
+    if not wc.gettaggingmethod() in ['explicit', 'tagline']:
+        print "Working directory uses unsupported tagging method %s" % \
+              wc.gettaggingmethod()
+        sys.exit(1)
+
+
+    iobj = vcs_interact.interaction(wc, args[0], options.docommit, log = log,
+                                    verbose = options.verbose,
+                                    summary = options.summary)
+    try:
+        iobj.main()
+    finally:
+        iobj.cleanup()
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/vcs_support/util.py	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,172 @@
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import os, sys, re
+
+nulldev = None
+verbose = 0
+
+class ExecProblem(Exception):
+    pass
+
+def mainexec(program, args = [], child_stdout = None,
+             child_stdin = None, child_stderr = None, wait = 1, closefds = []):
+    """Runs the program as a sub-process, passing to it args if specified.
+    The sub-process has its file descriptors adjusted as per the arguments.
+
+    If wait is 1, wait until the child exits, then return the result code from
+    os.waitpid().
+
+    If wait is 0, return the PID immediately."""
+    global verbose
+    def setfds(source, dest):
+        if source != None:
+            if hasattr(source, 'fileno'):
+                source = source.fileno()
+            os.dup2(source, dest)
+            
+    pid = os.fork()
+    if not pid:
+        if verbose:
+            print "Running: ", program, args
+        setfds(child_stdin, 0)
+        setfds(child_stdout, 1)
+        setfds(child_stderr, 2)
+        for fd in closefds:
+            os.close(fd)
+        os.execvp(program, (program,) + tuple(args))
+        sys.exit(255)
+    else:
+        if wait:
+            return os.waitpid(pid, 0)[1]
+        else:
+            return pid
+
+def safeexec(program, args = [], child_stdout = None,
+             child_stdin = None, child_stderr = None,
+             expected = 0):
+    """Calls mainexec() with the appropriate arguments, and raises
+    an exception if the program died with a signal or returned an
+    error code other than expected.  This function will always wait."""
+    result = mainexec(program, args, child_stdout, child_stdin, child_stderr)
+    return checkresult(result, expected)
+
+def getstdoutsafeexec(program, args, expected = 0):
+    pipes = os.pipe()
+    pid = mainexec(program, args, child_stdout = pipes[1], wait  = 0)
+    os.close(pipes[1])
+    fd = os.fdopen(pipes[0], 'r')
+    retval = fd.readlines()
+    checkpid(pid, expected)
+    os.close(pipes[0])
+    return retval
+
+def silentsafeexec(program, args, expected = 0):
+    """Silently runs the specified program."""
+    null = getnull()
+    result = mainexec(program, args, null, null, null)
+    return checkresult(result, expected)
+
+def checkresult(result, expected):
+    info = []
+    if os.WIFSIGNALED(result):
+        info.append("got signal %d" % os.WTERMSIG(result))
+    if os.WIFEXITED(result):
+        info.append("exited with code %d" % os.WEXITSTATUS(result))
+    info = ",".join(info)
+    if not os.WIFEXITED(result):
+        raise ExecProblem, info
+    if os.WEXITSTATUS(result) != expected:
+        raise ExecProblem, info + " (expected exit code %d)" % expected
+    return result
+
+def checkpid(pid, expected):
+    return checkresult(os.waitpid(pid, 0)[1], expected)
+
+def getnull():
+    global nulldev
+    if not nulldev:
+        nulldev = open("/dev/null", "w+")
+    return nulldev
+
+def chdircmd(newdir, func, *args, **kwargs):
+    cwd = os.getcwd()
+    os.chdir(newdir)
+    try:
+        return apply(func, args, kwargs)
+    finally:
+        os.chdir(cwd)
+
+def maketree(path, addpath = None, ignore = [], res = None):
+    thisdir = os.listdir(path)
+    retval = []
+    others = []
+    if res == None:
+        res = [re.compile(x) for x in ignore]
+    for item in thisdir:
+        skip = 0
+        for retest in res:
+            if retest.search(item):
+                skip = 1
+                break
+        if skip:
+            continue
+        dirname = os.path.join(path, item)
+        if os.path.isdir(dirname) and not os.path.islink(dirname):
+            if addpath:
+                retval.append(os.path.join(addpath, item) + '/')
+            else:
+                retval.append(item + '/')
+            if addpath:
+                newaddpath = os.path.join(addpath, item)
+            else:
+                newaddpath = item
+            others.extend(maketree(dirname, newaddpath, res = res))
+        else:
+            if addpath:
+                retval.append(os.path.join(addpath, item))
+            else:
+                retval.append(item)
+    return sorttree(retval + others)
+
+def sorttree(srctree, filesfirst = False):
+    retval = []
+    dirs = [x for x in srctree if x.endswith('/')]
+    files = [x for x in srctree if not x.endswith('/')]
+    dirs.sort()
+    files.sort()
+    if filesfirst:
+        return files + dirs
+    else:
+        return dirs + files
+    
+        
+def copyfrom(srcdir, destdir):
+    pipes = os.pipe()
+    verbargs = []
+    #if verbose:
+    #    verbargs.append('-v')
+    readerpid = chdircmd(srcdir, mainexec, "tar", ["-cSpf", "-", "."],
+                         child_stdout = pipes[1], wait = 0,
+                         closefds = [pipes[0]])
+    writerpid = chdircmd(destdir, mainexec, "tar", ["-xSpf", "-"] + verbargs,
+                         child_stdin = pipes[0], wait = 0, closefds = [pipes[1]])
+    os.close(pipes[0])
+    os.close(pipes[1])
+    checkpid(readerpid, 0)
+    checkpid(writerpid, 0)
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/vcs_support/vcs_interact.py	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,214 @@
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import sys, os
+import util
+from commandver import isdarcs
+from tempfile import mkdtemp
+
+class interaction:
+    def __init__(self, wcobj, importdir, docommit, log = '', verbose = 0,
+                 summary = None):
+        self.wcobj = wcobj
+        self.log = log
+        self.docommit = docommit
+        self.verb = verbose
+        self.summary = summary
+
+        if os.path.isdir(importdir):
+            self.importdir = os.path.abspath(importdir)
+            self.importfile = None
+            self.tmpdir = None
+
+        else:                           # Not a dir, try to unpack an archive.
+            self.importfile = os.path.abspath(importdir)
+            # mkdtemp returns an absolute path
+            self.importdir = mkdtemp("-vcs-load-dirs", ",,unpack-", "..")
+            self.tmpdir = self.importdir
+
+            try:
+                if self.verb:
+                    print "Unpacking archive..."
+
+                if self.importfile.endswith(".tar.gz"):
+                    util.chdircmd(self.importdir, util.safeexec, "tar",
+                                  ["-zxf", self.importfile])
+
+                elif self.importfile.endswith(".tar.bz2"):
+                    util.chdircmd(self.importdir, util.safeexec, "tar",
+                                  ["-jxf", self.importfile])
+                elif self.importfile.endswith(".zip"):
+                    util.chdircmd(self.importdir, util.safeexec, "unzip",
+                                  [self.importfile])
+                else:
+                    raise IOError, "Unknown archive file type"
+
+                # Many tarballs expand into just one single directory.
+                # Check to see if that's the case.
+
+                dents = os.listdir(self.importdir)
+                if len(dents) == 1 and os.path.isdir(self.importdir + "/" +
+                                                     dents[0]):
+                    self.importdir = self.importdir + "/" + dents[0]
+            except:
+                self.cleanup()
+                raise
+
+    def cleanup(self):
+        if not (self.tmpdir is None):
+            util.safeexec("rm", ["-rf", self.tmpdir])
+            self.tmpdir = None
+
+    def updateimportfiles(self):
+        if self.verb:
+            print "Scanning upstream tree..."
+        self.importfiles = util.maketree(self.importdir)
+
+    def updatewcfiles(self):
+        if self.verb:
+            print "Scanning working copy tree..."
+        self.wcfiles = self.wcobj.gettree()
+
+    def update(self):
+        self.updatewcfiles()
+        self.updatechangedfiles()
+
+    def updatechangedfiles(self):
+        if self.verb:
+            print "Calculating changes..."
+        wcfilehash = {}
+        for x in self.wcfiles:
+            wcfilehash[x] = 1
+        importfilehash = {}
+        for x in self.importfiles:
+            importfilehash[x] = 1
+        
+        self.addedfiles = [x for x in self.importfiles if not wcfilehash.has_key(x)]
+        self.deletedfiles = [x for x in self.wcfiles if not importfilehash.has_key(x)]
+        
+
+    def main(self):
+        def readloop():
+            for command in sys.stdin.readline().strip().split(','):
+                command = command.strip()
+                if command == 'q':
+                    return 0
+                if command == 'r':
+                    return 1
+                src, dest = command.split(' ')
+                src = int(src, 16)
+                dest = int(dest, 16)
+                self.mv(self.deletedfiles[src], self.addedfiles[dest])
+            return 1
+
+        self.updateimportfiles()
+        needsupdate = 1
+        
+        while 1:
+            self.update()
+            if self.wcobj.fsonly:
+                # Don't show this interface if we're not talking to the VCS
+                break
+            if not (len(self.addedfiles) and len(self.deletedfiles)):
+                # Just ran update; don't do it again.
+                needsupdate = 0
+                break
+
+            counter = 0
+            print "%3s %-35s %3s %-35s" % ('Num', 'Source Files', 'Num',
+                                             'Destination Files',)
+            print "%s %s %s %s" % ("-" * 3, "-" * 35, "-" * 3, "-" * 35)
+            while counter < max(len(self.addedfiles), len(self.deletedfiles)):
+                addfile = ''
+                delfile = ''
+                if counter < len(self.addedfiles):
+                    addfile = self.addedfiles[counter]
+                if counter < len(self.deletedfiles):
+                    delfile = self.deletedfiles[counter]
+                print "%3x %-35s %3x %-35s" % (counter, delfile, counter, addfile)
+                counter += 1
+            print "Syntax: src dest [,src dest [,...]] to move, q to accept, r to redraw:"
+            sys.stdout.write("Command: ")
+            sys.stdout.flush()
+            try:
+                if not readloop():
+                    break
+            except ValueError:
+                print "Error handling input; please try again."
+            except IndexError:
+                print "Error handling input; please try again."
+
+        self.catchup(needsupdate)
+        
+    def catchup(self, needsupdate = 1):
+        if self.verb:
+            print " *** Processing changes."
+        if needsupdate:
+            self.update()
+        if self.verb:
+            print "Deleting %d files" % len(self.deletedfiles)
+        if isdarcs():
+            for file in util.sorttree(self.deletedfiles, filesfirst = True):
+                self.delfile(file)
+        else:
+            for file in self.deletedfiles:
+                self.delfile(file)
+
+        if self.verb:
+            print "Copying upstream directory to working copy..."
+        util.copyfrom(self.importdir, self.wcobj.wcpath)
+
+        if self.verb:
+            print "Adding %d files" % len(self.addedfiles)
+        self.addedfiles.sort() # Make sure top-level dirs added before files
+        for file in self.addedfiles:
+            self.addfile(file)
+        self.writelog()
+        if self.docommit:
+            self.wcobj.commit()
+
+    def writelog(self):
+        logtext = ""
+        if not (self.importfile is None):
+            importname = self.importfile
+        else:
+            importname = self.importdir
+            
+        if self.summary:
+            summary = self.summary
+        else:
+            summary = "Imported %s" % os.path.basename(importname)
+        logtext += "Imported %s\ninto %s\n\n" % \
+                   (os.path.basename(importname),
+                   self.wcobj.gettreeversion())
+        logtext += self.log
+        self.wcobj.makelog(summary, logtext)
+        
+
+    def addfile(self, file):
+        self.wcobj.addtag(file)
+
+    def delfile(self, file):
+        self.wcobj.deltag(file)
+        self.wcobj.delfile(file)
+    
+        
+    def mv(self, src, dest):
+        print "%s -> %s" % (src, dest)
+        self.wcobj.movefile(src, dest)
+        self.wcobj.movetag(src, dest)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/vcs_support/vcs_wc.py	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,215 @@
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import util
+import os.path
+from commandver import cmd, isdarcs, issvk, isgit, ishg, vcscmd
+
+class wc:
+    """Object for a working copy."""
+
+    def __init__(self, wcpath, verbose = 0, fsonly = 0):
+        self.wcpath = os.path.abspath(wcpath)
+        self.verb = verbose
+        self.fsonly = fsonly
+        if not self.wcverify():
+            raise Exception, "%s is not a tla working copy" % self.wcpath
+
+    def gettreeversion(self):
+        if isdarcs():
+            #util.chdircmd(self.wcpath, util.getstdoutsafeexec, "darcs",
+            #              ['check'])
+            return "Darcs repository"
+        elif ishg():
+            return "Mercurial repository"
+        elif issvk():
+            return "Svk repository"
+        elif isgit():
+            return "Git repository"
+        else:
+            return util.chdircmd(self.wcpath, util.getstdoutsafeexec, vcscmd,
+                                 ['tree-version'])[0].strip() 
+
+    def wcverify(self):
+        try:
+            self.gettreeversion()
+        except util.ExecProblem:
+            return 0
+        return 1
+
+    def gettaggingmethod(self):
+        if isdarcs() or isgit() or ishg():
+            return 'explicit'
+        else:
+            return util.chdircmd(self.wcpath, util.getstdoutsafeexec, vcscmd,
+                                 [cmd().tagging_method])[0].strip()
+
+    def gettree(self):
+        return util.maketree(self.wcpath,
+                             ignore = [r'(^(\{arch\}$|,,|\.hg|\.hgtags|\.hgignore|\.git|_darcs|\.arch-ids$|\.arch-inventory$|\+\+)|/\.arch-ids/)'])
+    
+    def addtag(self, file):
+        if self.verb:
+            print "Adding %s" % file
+        if (file[-1] == '/') and \
+           (not os.path.exists(os.path.join(self.wcpath,
+                                            file[:-1]))):
+            try:
+                print "addtag: making dir %s" % file[:-1]
+                os.makedirs(os.path.join(self.wcpath, file[:-1]))
+            except:
+                raise
+        file = self.slashstrip(file)
+        isdir = os.path.isdir(os.path.join(self.wcpath, file))
+        if (not self.fsonly) and \
+               (not ishg()) and ((not isdarcs()) or isdir):
+            # Darcs will see adds later, but we need to add dirs
+            # now so darcs mv will work.
+            #
+            # Mercurial will see adds later, and doesn't track directories,
+            # so we don't do anything with it.
+            util.chdircmd(self.wcpath, util.safeexec, vcscmd,
+                          cmd().add + [file])
+
+    def movetag(self, src, dest):
+        if self.verb:
+            print "Moving %s to %s" % (src, dest)
+        if src[-1] == '/' \
+               and dest[-1] == '/' \
+               and ((not isdarcs()) and (not isgit()) and (not ishg())):
+            # Dir to dir -- darcs mv will catch it already.
+            # Git doesn't do rename recording, so don't worry about it?
+            return
+        src, dest = self.slashstrip(src, dest)
+        if not self.fsonly:
+            util.chdircmd(self.wcpath, util.safeexec, vcscmd,
+                          [cmd().move, src, dest])
+
+    def movefile(self, src, dest):
+        if self.verb:
+            print "Moving file %s to %s" % (src, dest)
+        src, dest = self.slashstrip(src, dest)
+
+        def doit():
+            destdir = os.path.dirname(dest)
+            if (not os.path.exists(destdir)) and destdir != '':
+                self.makedirs(destdir)
+            if self.fsonly or \
+               (not isdarcs() and (not isgit()) and (not ishg())):
+                # Darcs, hg, and git actually do this when they move the tag
+                os.rename(src, dest)
+
+        util.chdircmd(self.wcpath, doit)
+
+    def delfile(self, file):
+        if self.verb:
+            print "Deleting file %s" % file
+        fullfile = os.path.join(self.wcpath, file)
+        if os.path.isfile(fullfile):
+            os.unlink(fullfile)
+        else:
+            util.safeexec("rm", ['-rf', fullfile])
+
+    def deltag(self, file):
+        if (not self.fsonly) and \
+               ((not isdarcs()) and (not ishg())):
+            if self.verb:
+                print "Deleting %s" % file
+            if os.path.islink(os.path.join(self.wcpath,file)) or os.path.exists(os.path.join(self.wcpath, file)):
+                util.chdircmd(self.wcpath, util.safeexec, vcscmd,
+                          cmd().delete + [file])
+
+    def makelog(self, summary, logtext):
+        self.summary = summary
+        self.logtext = logtext
+        if ishg() or isgit() or isdarcs():
+            logfn = self.wcpath + "/../,,vcslog"
+	else:
+            logfn =  util.chdircmd(self.wcpath, util.getstdoutsafeexec, vcscmd,
+                                   ['make-log'])[0].strip()
+
+        self.logfn = os.path.abspath(logfn)
+        
+        fd = open(self.logfn, "w")
+        if isgit():
+            fd.write("%s\n\n" % summary)
+        if ishg():
+            fd.write("%s\n" % summary)
+        elif not (isdarcs() or ishg()):
+            fd.write("Summary: %s\n" % summary)
+            fd.write("Keywords: \n\n")
+        fd.write(logtext)
+        print "LOGTEXT", logtext
+        fd.close()
+
+
+    def commit(self):
+        if self.verb:
+            print "Committing changes"
+        if isdarcs():
+            util.chdircmd(self.wcpath, util.safeexec, vcscmd,
+                          [cmd().commit, "-l", "-a", "-m", self.summary,
+                           "--logfile", self.logfn,
+                           "--delete-logfile"])
+        elif isgit():
+            util.chdircmd(self.wcpath, util.safeexec, vcscmd,
+                          [cmd().commit, "-a", "-F", self.logfn])
+	    os.unlink(self.logfn)
+        elif ishg():
+            util.chdircmd(self.wcpath, util.safeexec, vcscmd,
+                          [cmd().commit, "-A", "-l", self.logfn])
+            os.unlink(self.logfn)
+        else:
+            if len(util.chdircmd(self.wcpath, util.getstdoutsafeexec, vcscmd, ['logs']))==0:
+                util.chdircmd(self.wcpath, util.safeexec, vcscmd, [cmd().importcmd])
+            else:
+                util.chdircmd(self.wcpath, util.safeexec, vcscmd, [cmd().commit])
+        
+    def slashstrip(self, *args):
+        retval = []
+        for item in args:
+            if not len(item):
+                retval.append(item)
+            if item[-1] == '/':
+                item = item[:-1]
+            retval.append(item)
+        if len(args) == 1:
+            return retval[0]
+        return retval
+
+
+    def makedirs(self, name, mode=0777):
+        """makedirs(path [, mode=0777])
+
+        Super-mkdir; create a leaf directory and all intermediate ones.
+        Works like mkdir, except that any intermediate path segment (not
+        just the rightmost) will be created if it does not exist.  This is
+        recursive.
+
+        (Modified from Python source)
+
+        """
+        head, tail = os.path.split(name)
+        if not tail:
+            head, tail = os.path.split(head)
+        if head and tail and not os.path.exists(head):
+            self.makedirs(head, mode)
+        if self.verb:
+            print "Created directory", name
+        os.mkdir(name, mode)
+        self.addtag(name)
+