Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Contact: git@vger.kernel.org
Source: https://www.kernel.org/pub/software/scm/git/

Files: *
Copyright: © 2005-2016, Linus Torvalds and others.
License: GPL-2

Files: xdiff/*
Copyright: © 2003-2009, Davide Libenzi, Johannes E. Schindelin
License: LGPL-2.1+

Files: xdiff/xhistogram.c
Copyright: © 2010, Google Inc.
           and other copyright owners as documented in JGit's IP log.
License: EDL-1.0

Files: ewah/*
Copyright: © 2013, GitHub Inc.
           © 2009-2013, Daniel Lemire, Cliff Moon,
	       David McIntosh, Rober Becho, Google Inc. and Veronika Zenz
License: GPL-2+

Files: gitk-git/*
Copyright: © 2005-2015, Paul Mackerras, et al.
License: GPL-2+

Files: gitk-git/po/bg.po
Copyright: © 2014, 2015 Alexander Shopov <ash@kambanaria.org>
License: GPL-2
Comment: This file is distributed under the same license as the git package.

Files: git-gui/*
Copyright: © 2005-2010, Shawn Pearce, et. al.
License: GPL-2+

Files: git-gui/po/bg.po git-gui/po/de.po git-gui/po/fr.po git-gui/po/glossary/*
Copyright: © 2007-2008, Shawn Pearce, et al.
           © 2012-2015, Alexander Shopov <ash@kambanaria.org>
License: GPL-2
Comment: This file is distributed under the same license as the git package.

Files: git-gui/po/glossary/el.po git-gui/po/glossary/pt_br.po
Copyright: © 2007, Shawn Pearce, et al.
           © 2009, Jimmy Angelakos
License: GPL-2+
Comment: This file is distributed under the same license as the git-gui package.

Files: gitweb/static/js/*
Copyright: © 2007, Fredrik Kuivinen <frekui@gmail.com>
           © 2007, Petr Baudis <pasky@suse.cz>
      © 2008-2011, Jakub Narebski <jnareb@gmail.com>
           © 2011, John 'Warthog9' Hawley <warthog9@eaglescrag.net>
License: GPL-2+

Files: git-p4
Copyright: © 2007, Simon Hausmann <simon@lst.de>
           © 2007, Trolltech ASA
License: Expat

Files: git-svn.perl
Copyright: © 2006, Eric Wong <normalperson@yhbt.net>
License: GPL-2+

Files: vcs-svn/*
Copyright: © 2010, David Barr <david.barr@cordelta.com>
           © 2010, Jonathan Nieder <jrnieder@gmail.com>
           © 2005, Stefan Hegny, hydrografix Consulting GmbH,
                   Frankfurt/Main, Germany
                   and others, see http://svn2cc.sarovar.org
License: BSD-2-clause

Files: imap-send.c
Copyright: © 2000-2002, Michael R. Elkins <me@mutt.org>
           © 2002-2004, Oswald Buddenhagen <ossi@users.sf.net>
           © 2004, Theodore Y. Ts'o <tytso@mit.edu>
           © 2006, Mike McCormack
Name: git-imap-send - drops patches into an imap Drafts folder
  derived from isync/mbsync - mailbox synchronizer
License: GPL-2+

Files: perl/Git.pm
Copyright: © 2006, by Petr Baudis <pasky@suse.cz>
License: GPL-2+

Files: perl/private-Error.pm
Copyright: © 1997-8, Graham Barr <gbarr@ti.com>
License: GPL-1+ or Artistic-1
 This program is free software; you can redistribute it and/or modify
 it under the terms of either:
 .
    a) the GNU General Public License as published by the Free Software
       Foundation; either version 1, or (at your option) any later
       version, or
 .
    b) the "Artistic License" which comes with Perl.
 .
 On Debian GNU/Linux systems, the complete text of the GNU General
 Public License can be found in '/usr/share/common-licenses/GPL' and
 the Artistic Licence in '/usr/share/common-licenses/Artistic'.

Files: kwset.c kwset.h
Copyright: © 1989, 1998, 2000, 2005, Free Software Foundation, Inc.
License: GPL-2+

Files: khash.h
Copyright: © 2008, 2009, 2011 by Attractive Chaos <attractor@live.co.uk>
License: Expat

Files: trace.c
Copyright: © 2000-2002, Michael R. Elkins <me@mutt.org>
           © 2002-2004, Oswald Buddenhagen <ossi@users.sf.net>
           © 2004, Theodore Y. Ts'o <tytso@mit.edu>
           © 2006, Mike McCormack
           © 2006, Christian Couder
License: GPL-2+

Files: sh-i18n--envsubst.c
Copyright: © 2010, Ævar Arnfjörð Bjarmason
           © 1998-2007, Free Software Foundation, Inc.
License: GPL-2+

Files: t/test-lib.sh
Copyright: © 2005, Junio C Hamano
License: GPL-2+

Files: compat/inet_ntop.c compat/inet_pton.c
Copyright: © 1996-2001, Internet Software Consortium.
License: ISC

Files: compat/poll/poll.c compat/poll/poll.h
Copyright: © 2001-2003, 2006-2011, Free Software Foundation, Inc.
Name: Emulation for poll(2) from gnulib.
License: GPL-2+

Files: compat/vcbuild/include/sys/utime.h
Copyright: ?
License: mingw-runtime

Files: compat/nedmalloc/*
Copyright: © 2005-2006 Niall Douglas
License: Boost

Files: compat/nedmalloc/malloc.c.h
Copyright: © 2006, KJK::Hyperion <hackbunny@reactos.com>
License: dlmalloc

Files: compat/regex/*
Copyright: © 1985, 1989-93, 1995-2010, Free Software Foundation, Inc.
Name: Extended regular expression matching and search library
License: LGPL-2.1+

Files: compat/obstack.c compat/obstack.h
Copyright: © 1988-1994, 1996-2005, 2009, Free Software Foundation, Inc.
Name: Object stack macros.
License: LGPL-2.1+

Files: contrib/persistent-https/*
Copyright: © 2012, Google Inc.
License: Apache-2.0

Files: contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
Copyright: © 2011, John Szakmeister <john@szakmeister.net>
           © 2012, Philipp A. Hartmann <pah@qo.cx>
License: GPL-2+

Files: contrib/hg-to-git/hg-to-git.py
Copyright: © 2007, Stelian Pop <stelian@popies.net>
Name: hg-to-git.py - A Mercurial to GIT converter
License: GPL-2+

Files: contrib/mw-to-git/git-*.perl contrib/mw-to-git/t/t*
Copyright: © 2011
		Jérémie Nikaes <jeremie.nikaes@ensimag.imag.fr>
		Arnaud Lacurie <arnaud.lacurie@ensimag.imag.fr>
		Claire Fousse <claire.fousse@ensimag.imag.fr>
		David Amouyal <david.amouyal@ensimag.imag.fr>
		Matthieu Moy <matthieu.moy@grenoble-inp.fr>
           © 2012
		Charles Roussel <charles.roussel@ensimag.imag.fr>
		Simon Cathebras <simon.cathebras@ensimag.imag.fr>
		Julien Khayat <julien.khayat@ensimag.imag.fr>
		Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
		Simon Perrat <simon.perrat@ensimag.imag.fr>
	   © 2013
		Benoit Person <benoit.person@ensimag.imag.fr>
		Celestin Matte <celestin.matte@ensimag.imag.fr>
License: GPL-2+

Files: debian/*
Copyright: © 2005, Sebastian Kuzminsky <seb@highlab.com>
           © 2005-2006, Andres Salomon <dilinger@debian.org>
           © 2005-2012, Gerrit Pape <pape@smarden.org>
License: GPL-2

License: GPL-2
 You can redistribute this software and/or modify it under the terms of
 the GNU General Public License as published by the Free Software
 Foundation; version 2 dated June, 1991.
 .
 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.
 .
 On Debian systems, the complete text of the GNU General Public License
 can be found in /usr/share/common-licenses/GPL-2 file.

License: GPL-2+
 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.
 .
 On Debian systems, the complete text of the GNU General Public License
 can be found in /usr/share/common-licenses/GPL-2 file.

License: LGPL-2+
 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Library General Public License as
 published by the Free Software Foundation; either version 2 of the
 License, or (at your option) any later version.
 .
 This library 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
 Library General Public License for more details.
 .
 On Debian systems, the complete text of the GNU Library General Public License
 can be found in the /usr/share/common-licenses/LGPL-2 file.

License: LGPL-2.1+
 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.
 .
 This library 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
 Lesser General Public License for more details.
 .
 On Debian systems, the complete text of the GNU Lesser General Public License
 can be found in /usr/share/common-licenses/LGPL-2.1.

License: Apache-2.0
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 .
     http://www.apache.org/licenses/LICENSE-2.0
 .
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 .
 On Debian systems, the full text of the Apache License version 2 can
 be found in /usr/share/common-licenses/Apache-2.0.

License: BSD-2-clause
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice(s), this list of conditions and the following disclaimer
    unmodified other than the allowable addition of one or more
    copyright notices.
 2. Redistributions in binary form must reproduce the above copyright
    notice(s), this list of conditions and the following disclaimer in
    the documentation and/or other materials provided with the
    distribution.
 .
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE
 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

License: ISC
 Permission to use, copy, modify, and distribute this software for any
 purpose with or without fee is hereby granted, provided that the above
 copyright notice and this permission notice appear in all copies.
 .
 THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
 ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
 OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
 CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 SOFTWARE.

License: Expat
 <http://www.opensource.org/licenses/mit-license.php>:
 .
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.

License: EDL-1.0
 Redistribution and use in source and binary forms, with or
 without modification, are permitted provided that the following
 conditions are met:
 .
 - Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
 .
 - Redistributions in binary form must reproduce the above
   copyright notice, this list of conditions and the following
   disclaimer in the documentation and/or other materials provided
   with the distribution.
 .
 - Neither the name of the Eclipse Foundation, Inc. nor the
   names of its contributors may be used to endorse or promote
   products derived from this software without specific prior
   written permission.
 .
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

License: mingw-runtime
 This file has no copyright assigned and is placed in the Public Domain.
 This file is a part of the mingw-runtime package.
 .
 The mingw-runtime package and its code is distributed in the hope that it
 will be useful but WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESSED OR
 IMPLIED ARE HEREBY DISCLAIMED.  This includes but is not limited to
 warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 .
 You are free to use this package and its code without limitation.

License: Boost
 It is licensed under the Boost Software License which basically means
 you can do anything you like with it. This does not apply to the malloc.c.h
 file which remains copyright to others.
 .
 Boost Software License - Version 1.0 - August 17th, 2003
 .
 Permission is hereby granted, free of charge, to any person or organization
 obtaining a copy of the software and accompanying documentation covered by
 this license (the "Software") to use, reproduce, display, distribute,
 execute, and transmit the Software, and to prepare derivative works of the
 Software, and to permit third-parties to whom the Software is furnished to
 do so, all subject to the following:
 .
 The copyright notices in the Software and this entire statement, including
 the above license grant, this restriction and the following disclaimer,
 must be included in all copies of the Software, in whole or in part, and
 all derivative works of the Software, unless such copies or derivative
 works are solely in the form of machine-executable object code generated by
 a source language processor.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 DEALINGS IN THE SOFTWARE.

License: dlmalloc
 This is a version (aka dlmalloc) of malloc/free/realloc written by
 Doug Lea and released to the public domain, as explained at
 http://creativecommons.org/licenses/publicdomain.  Send questions,
 comments, complaints, performance data, etc to dl@cs.oswego.edu
 .
 Incorporates code from intrin_x86.h, which bears the following notice:
 .
 Compatibility <intrin_x86.h> header for GCC -- GCC equivalents of intrinsic
 Microsoft Visual C++ functions. Originally developed for the ReactOS
 (<http://www.reactos.org/>) and TinyKrnl (<http://www.tinykrnl.org/>)
 projects.
 .
 Copyright (c) 2006 KJK::Hyperion <hackbunny@reactos.com>
 .
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
 to deal in the Software without restriction, including without limitation
 the rights to use, copy, modify, merge, publish, distribute, sublicense,
 and/or sell copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 DEALINGS IN THE SOFTWARE.
