git (1:2.20.1-2+deb10u2) buster-security; urgency=high

  [ Salvatore Bonaccorso ]
  * new upstream point release (see RelNotes/2.20.3.txt).
    * Addresses the security issue CVE-2020-5260.

      With a crafted URL that contains a newline, the credential
      helper machinery can be fooled to supply credential information
      for the wrong host.  The attack has been made impossible by
      forbidding a newline character in any value passed via the
      credential protocol.

      Thanks to Felix Wilhelm of Google Project Zero for finding
      this vulnerability and Jeff King for fixing it.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 12 Apr 2020 00:24:43 -0700

git (1:2.20.1-2+deb10u1) buster-security; urgency=high

  * new upstream point release (see RelNotes/2.20.2.txt).
    * Addresses the security issues CVE-2019-1348, CVE-2019-1349,
      CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353,
      CVE-2019-1354, and CVE-2019-1387.

      Credit for finding these vulnerabilities goes to Microsoft
      Security Response Center, in particular to Nicolas Joly. Fixes
      were provided by Jeff King and Johannes Schindelin with help
      from Garima Singh.

    * Addresses CVE-2019-19604, arbitrary code execution via the
      "update" field in .gitmodules.

      Credit for finding this vulnerability goes to Joern
      Schneeweisz from GitLab.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 08 Dec 2019 22:56:16 -0800

git (1:2.20.1-2) unstable; urgency=low

  * package git-gui: actually Suggests: meld for mergetool support;
    describe what meld is used for in package description (thx Jens
    Reyer; closes: #707790).
  * package gitweb: Depends: libhttp-date-perl | libtime-parsedate-perl
    instead of ... | libtime-modules-perl (thx gregor herrmann; closes:
    #879165).
  * debian/control: use https in Vcs-Browser URL.
  * debian/rules: build and test quietly if DEB_BUILD_OPTIONS=terse.
  * debian/control: Standards-Version: 4.3.0.1.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 21 Jan 2019 22:32:28 -0800

git (1:2.20.1-1) unstable; urgency=medium

  * new upstream point release (see RelNotes/2.20.1.txt).
  * package git-gui: Suggests: meld for mergetool support (thx Jens
    Reyer; closes: #707790).

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 16 Dec 2018 16:53:30 -0800

git (1:2.20.0-1) unstable; urgency=medium

  * new upstream release (see RelNotes/2.20.0.txt).
  * package git: Recommends: ca-certificates for https support (thx HJ;
    closes: #915644).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Dec 2018 11:07:26 -0800

git (1:2.20.0~rc2-1) unstable; urgency=low

  * new upstream release candidate.
    * rebase: specify 'rebase -i' in reflog for interactive rebase
      (closes: #914695).

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 02 Dec 2018 12:11:19 -0800

git (1:2.20.0~rc1-1) unstable; urgency=low

  * new upstream release candidate (see RelNotes/2.20.0.txt).
  * debian/rules: target clean: don't remove t/t4256/1/mailinfo.c.orig.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 25 Nov 2018 11:47:53 -0800

git (1:2.19.2-1) unstable; urgency=high

  * new upstream point release (see RelNotes/2.19.2.txt).
    * run-command: do not fall back to cwd when command is not in $PATH.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 22 Nov 2018 14:48:49 -0800

git (1:2.19.1-1) unstable; urgency=high

  * new upstream point release (see RelNotes/2.19.1.txt,
    CVE-2018-17456).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 05 Oct 2018 10:10:45 -0700

git (1:2.19.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.19.0.txt).
  * debian/patches/0001-*, 0002-*: remove; applied upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Sep 2018 13:33:45 -0700

git (1:2.19.0~rc2-2) unstable; urgency=low

  * debian/patches:
    * 0001-http-backend-allow-empty-CONTENT_LENGTH: new from
      upstream: http-backend: treat empty CONTENT_LENGTH as absent
      (closes: #907587).
    * 0002-Revert-Merge-branch-sb-submodule-core-worktree.diff: new
      from upstream: stop setting and unsetting core.worktree in
      submodules, since the code to do so does not handle submodules
      with an embedded .git directory (thx Allan Sandfeld Jensen).

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 09 Sep 2018 19:08:55 -0700

git (1:2.19.0~rc2-1) unstable; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 04 Sep 2018 15:47:54 -0700

git (1:2.19.0~rc1-1) unstable; urgency=low

  * new upstream release candidate (see RelNotes/2.19.0.txt).
  * debian/control: Standards-Version: 4.1.5.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 28 Aug 2018 13:48:50 -0700

git (1:2.18.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.18.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 21 Jun 2018 15:25:50 -0700

git (1:2.18.0~rc2-2) unstable; urgency=low

  * debian/control: Breaks: dgit (<< 5.1~) that lacks support
    for working-tree-encoding attribute (thx Ian Jackson;
    closes: #901897).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 20 Jun 2018 10:22:51 -0700

git (1:2.18.0~rc2-1) unstable; urgency=low

  * new upstream release candidate.
  * debian/README.emacs: describe removed emacs support.
  * debian/control: package git-el: describe transitional
    modules; Recommends: elpa-magit.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Jun 2018 09:19:59 -0700

git (1:2.17.1-1) unstable; urgency=high

  * new upstream point release to fix CVE-2018-11235, arbitary code
    execution via submodule names in .gitmodules (see RelNotes/2.17.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 28 May 2018 17:37:54 -0700

git (1:2.17.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.17.0.txt).
  * debian/rules: add NO_USE_CPAN_FALLBACKS=1 to OPTS to avoid
    installing bundled copies of perl modules.
  * debian/control: Build-Depends: libmailtools-perl, liberror-perl;
    git-email: Depends: libmailtools-perl for Mail::Address.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 02 Apr 2018 12:58:14 -0700

git (1:2.16.3-1) unstable; urgency=low

  * new upstream point release (see RelNotes/2.16.3.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 23 Mar 2018 09:56:37 -0700

git (1:2.16.2-1) unstable; urgency=low

  * new upstream point release (see RelNotes/2.16.2.txt).
  * debian/control: correct spelling of openssh-client in Breaks
    relation.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 23 Feb 2018 13:53:02 -0800

git (1:2.16.1-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.16.txt, RelNotes/2.16.1.txt).
  * debian/control: Breaks: openssh-client (<< 1:6.8) since the latter
    lacks support for the "-G" option (thx Bryan Turner; see
    https://crbug.com/git/7).
  * debian/patches/git-gui-Sort-entries-in-optimized-tclIndex.diff:
    remove; applied upstream.
  * debian/rules: do not install contrib/**/.gitattributes to
    /usr/share/doc (thx Paul Wise and Bastien Roucaries for suggesting
    it through lintian).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 05 Feb 2018 12:27:37 -0800

git (1:2.15.1-3) unstable; urgency=low

  * debian/rules: remove remnants of git-core package that prevented
    building twice in a row (thx Andreas Beckmann; closes: #884890).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 22 Dec 2017 17:13:42 -0800

git (1:2.15.1-2) unstable; urgency=low

  * gitweb: Recommends: 'apache2 (>= 2.4.6-4~) | lynx | httpd' instead
    of ... | lynx-cur | ... (thx Łukasz Zemczak; see #490265).
  * debian/control: Standards-Version: 4.1.2.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Dec 2017 09:45:31 -0800

git (1:2.15.1-1) unstable; urgency=low

  * new upstream point release (see RelNotes/2.15.1.txt).
  * debian/control: Build-Depends-Indep: asciidoc (>= 8.6.10).
  * debian/control: Standards-Version: 4.1.1.1.
  * debian/patches:
    * Normalize-generated-asciidoc-timestamps-...diff: remove; no
      longer needed (thx Anders Kaseorg; see #782294).
    * git-gui-Sort-entries-in-optimized-tclIndex.diff: update to
      upstream version.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 29 Nov 2017 13:49:38 -0800

git (1:2.15.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.15.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 30 Oct 2017 10:56:56 -0700

git (1:2.15.0~rc2-1) unstable; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 23 Oct 2017 10:15:45 -0700

git (1:2.15.0~rc1-1) unstable; urgency=low

  * new upstream release candidate.
  * remove transitional git-core package (thx Holger Levsen;
    closes: #878189).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Oct 2017 09:29:08 -0700

git (1:2.15.0~rc0-1) unstable; urgency=low

  * new upstream release candidate (see RelNotes/2.15.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 09 Oct 2017 10:13:35 -0700

git (1:2.14.2-1) unstable; urgency=high

  * new upstream point release (see RelNotes/2.14.1.txt).  Among other
    changes, this fixes a remote shell command execution vulnerability
    via CVS protocol:
    - git-shell: drop cvsserver support by default
    - git-cvsserver: harden backtick captures against user input

  Thanks to joernchen of Phenoelit for discovering, reporting, and
  fixing this vulnerability, and to Junio C Hamano and Jeff King for
  the fixes to related issues.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Sep 2017 18:23:18 -0700

git (1:2.14.1-3) unstable; urgency=low

  * git.README.Debian: remove obsolete instructions about setting up a
    server to handle rsync:// protocol.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 28 Aug 2017 10:08:04 -0700

git (1:2.14.1-2) unstable; urgency=low

  * debian/control: git-daemon-sysvinit: Priority: optional.
  * debian/control: clarify how to decide between git-daemon-run and
    git-daemon-sysvinit in package descriptions.
  * debian/control: Standards-Version: 4.0.1.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 14 Aug 2017 12:14:32 -0700

git (1:2.14.1-1) unstable; urgency=high

  * new upstream point release to fix CVE-2017-1000117, arbitrary
    code execution issues via URLs (see RelNotes/2.14.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 10 Aug 2017 09:16:20 -0700

git (1:2.14.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.14.0.txt).
  * debian/patches/0001-pre-rebase-hook-capture-documentation-...diff:
    remove; applied upstream.
  * build against PCRE v2 if available at build time (thx to Ævar
    Arnfjörð Bjarmason for the suggestion).  Build-Depends:
    libpcre2-dev | libpcre3-dev.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 07 Aug 2017 11:31:25 -0700

git (1:2.13.3-1) unstable; urgency=low

  * new upstream point release (see RelNotes/2.13.3.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 17 Jul 2017 12:16:44 -0700

git (1:2.13.2-3) unstable; urgency=low

  * remove git-arch package.  It depended on GNU Arch, which has not
    been maintained upstream for more than 10 years (thx Adrian
    Bunk; closes: #866059).
  * debian/rules: do not allow flaky git-svn tests t9128.4 or t9167.3
    to cause the build to fail, either (closes: #865789).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 30 Jun 2017 16:11:06 -0700

git (1:2.13.2-2) unstable; urgency=low

  * git-email: use perl in dependency instead of perl-modules (thx
    Damyan Ivanov for suggesting it through lintian).
  * debian/rules: do not allow flaky git-svn test t9128.3 to cause
    the build to fail (closes: #865789).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Jun 2017 15:17:48 -0700

git (1:2.13.2-1) unstable; urgency=low

  * new upstream point release (see RelNotes/2.13.2.txt).
  * git-email: Depends: perl-modules (>> 5.21.5) | libnet-smtp-ssl-perl
    for starttls support instead of unconditionally requiring
    Net::SMTP::SSL (thx Dennis Kaarsemaker).
  * debian/rules: skip HTML documentation generation when
    DEB_BUILD_OPTIONS=nodoc.
  * debian/copyright: use https form of Format URL.
  * debian/control: Standards-Version: 4.0.0.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Jun 2017 11:47:14 -0700

git (1:2.13.1-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.12.0.txt, RelNotes/2.13.0.txt).
  * debian/patches/xdiff-Do-not-enable-XDF_FAST_HASH-by-default.diff,
    shell-disallow-repo-names-beginning-with-dash.patch: remove; applied
    upstream.
  * update debian/copyright
  * debian/rules: run tests once and always produce verbose output.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 21 Jun 2017 15:42:17 -0700

git (1:2.11.0-4) unstable; urgency=low

  [ Alan Jenkins ]
  * git: remove Recommends: rsync (closes #862435).
  * git-arch: Depends: rsync.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 15 May 2017 12:13:38 -0700

git (1:2.11.0-3) unstable; urgency=high

  * Do not allow git helpers run via git-shell to launch a pager
    (CVE-2017-8386).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 09 May 2017 16:23:17 -0700

git (1:2.11.0-2) unstable; urgency=medium

  * gitweb: Depends: libcgi-pm-perl; Build-Depends: libcgi-pm-perl
    (thx Mikko Rasa; closes: #847961).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 27 Dec 2016 15:17:12 -0800

git (1:2.11.0-1) unstable; urgency=medium

  * New upstream release (see RelNotes/2.11.0.txt).
  * debian/patches/git-sh-setup-Restore-sourcability-from-outside-script.diff:
    remove; applied upstream.
  * Replace
    debian/patches/Documentation-omit-asciidoc-footer-on-generated-input.diff
    with the more upstreamable
    debian/patches/Normalize-generated-asciidoc-timestamps-with-SOURCE_D.diff.
  * debian/patches/git-gui-Sort-entries-in-optimized-tclIndex.diff,
    debian/patches/xdiff-Do-not-enable-XDL_FAST_HASH-by-default.diff:
    Further improvements to build reproducibility.

 -- Anders Kaseorg <andersk@mit.edu>  Wed, 30 Nov 2016 23:34:59 -0500

git (1:2.10.2-3) unstable; urgency=medium

  * debian/rules: Split override_dh_installdocs into -arch and -indep
    parts.  (Closes: #843393)

 -- Anders Kaseorg <andersk@mit.edu>  Wed, 16 Nov 2016 16:12:02 -0500

git (1:2.10.2-2) unstable; urgency=medium

  * Add missing upstream changelog entries from v2.10.2.
  * gitweb: Add version to Breaks: apache2.2-common (<< 2.3~).
  * git-mediawiki: Shorten description.
  * Link extra license files to common-licenses.
  * Invoke dpkg-maintscript-helper dir_to_symlink correctly.
    (Closes: #843011)
  * debian/patches/Documentation-omit-asciidoc-footer-on-generated-input.diff:
    Omit the “last updated” footer when processing asciidoc inputs that
    are generated at build time.  (Closes: #813912)

 -- Anders Kaseorg <andersk@mit.edu>  Sat, 05 Nov 2016 07:20:14 -0400

git (1:2.10.2-1) unstable; urgency=medium

  * New upstream point release (see RelNotes/2.10.2.txt).
    - imap-send: Tell cURL to use imap:// or imaps:// (Closes: #648329)
  * Run asciidoc in TZ=UTC to improve the reproducibility of documentation
    footer timestamps.
  * debian/patches/git-sh-setup-Restore-sourcability-from-outside-script.diff:
    Restore sourcability of git-sh-setup from outside scripts.
    (Closes: #842477)

 -- Anders Kaseorg <andersk@mit.edu>  Sat, 29 Oct 2016 22:44:37 -0400

git (1:2.10.1-1) unstable; urgency=medium

  * New upstream release (see RelNotes/2.10.0.txt, RelNotes/2.10.1.txt).
    (Closes: #840800)
  * debian/rules: Fix clean target to remove GIT-VERSION-FILE and
    contrib/subtree build products.  (Closes: #834870)
  * Fix a missing reference in /usr/share/doc-base/everyday-git.
    (Closes: #836516)
  * Migrate patches to 3.0 (quilt) format.  (Closes: #834566)
  * Migrate packaging to Debhelper.  (Closes: #834886)
  * Replace perl-modules dependency with perl.
  * git-daemon-sysvinit: Depend lsb-base (>= 3.0-6) for
    /lib/lsb/init-functions.

 -- Anders Kaseorg <andersk@mit.edu>  Fri, 14 Oct 2016 21:47:15 -0400

git (1:2.9.3-1) unstable; urgency=medium

  * New upstream release (see RelNotes/2.8.2.txt, RelNotes/2.8.3.txt,
    RelNotes/2.9.0.txt, RelNotes/2.9.1.txt, RelNotes/2.9.2.txt,
    RelNotes/2.9.3.txt).

 -- Anders Kaseorg <andersk@mit.edu>  Tue, 16 Aug 2016 16:32:47 -0400

git (1:2.8.1-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0003-0007-srv-be-more-tolerant-of-broken-DNS-replies.diff:
    remove.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Apr 2016 17:23:33 -0700

git (1:2.8.0~rc3-1) unstable; urgency=medium

  * new upstream release candidate (see RelNotes/2.8.0.txt).
    * harden against on-stack and on-heap buffer overflows (CVE-2016-2324,
      CVE-2016-2315; closes: #818318).
  * debian/git.docs: update for README -> README.md renaming.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 16 Mar 2016 18:28:12 -0700

git (1:2.7.0-1) unstable; urgency=low

  * new upstream release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 19 Jan 2016 11:04:08 -0800

git (1:2.7.0~rc3-1) unstable; urgency=low

  * new upstream release candidate (see RelNotes/2.7.0.txt).
  * debian/control: Standards-Version: 3.9.6.0.
  * debian/control: use HTTPS for Homepage URL.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 04 Jan 2016 12:25:50 -0800

git (1:2.6.4-1) unstable; urgency=medium

  * new upstream point release (see RelNotes/2.6.4.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 10 Dec 2015 16:07:19 -0800

git (1:2.6.3-1) unstable; urgency=medium

  * new upstream point release (see RelNotes/2.6.3.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 08 Dec 2015 12:02:26 -0800

git (1:2.6.2-1) unstable; urgency=low

  * new upstream point release (see RelNotes/2.6.2.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 23 Oct 2015 11:52:44 -0700

git (1:2.6.1-1) unstable; urgency=high

  * new upstream point release (see RelNotes/2.6.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 05 Oct 2015 11:16:05 -0700

git (1:2.6.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.6.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 29 Sep 2015 12:55:19 -0700

git (1:2.5.3-1) unstable; urgency=medium

  * new upstream point release (see RelNotes/2.5.2.txt, 2.5.3.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 18 Sep 2015 12:36:49 -0700

git (1:2.5.1-1) unstable; urgency=medium

  * new upstream point release (see RelNotes/2.5.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 28 Aug 2015 14:27:25 -0700

git (1:2.5.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.5.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 28 Jul 2015 10:47:13 -0700

git (1:2.4.6-1) unstable; urgency=medium

  * new upstream release (see RelNotes/2.[234].*.txt).
  * debian/rules: use install-html target for git-subtree docs
    (see #768795).
  * gitweb: Pre-Depends: dpkg 1.16.1 for -noawait support.
  * gitweb.apache2.conf: make configuration conditional on MIME
    support (thx Uwe Storbeck; closes: #775236).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 21 Jul 2015 12:08:09 -0700

git (1:2.1.4-2.1) unstable; urgency=medium

  * Non-maintainer upload.
  * Use interest-noawait triggers for gitweb to avoid a
    trigger cycle.  (Closes: #774607)

 -- Niels Thykier <niels@thykier.net>  Mon, 02 Feb 2015 19:42:37 +0100

git (1:2.1.4-2) unstable; urgency=medium

  * update gitweb configuration for Apache 2.4:
    * apache2.conf:
      * make configuration conditional on CGI and alias support.
      * put explicit '+' before FollowSymLinks option.
    * README.Debian: update with new configuration file path.
      Mention CGI support requirement.
    * prerm: fix typo in last line (it should be "fi", not "then").
    * update version number in conffile handling code to handle
      upgrades within testing.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 19 Dec 2014 17:52:50 -0800

git (1:2.1.4-1) unstable; urgency=medium

  * new upstream point release (CVE-2014-9390).
    * checkout: tighten exit code handling on errors.
    * avoid writing filenames to the work tree that some filesystems
      do not distinguish from ".git".
      * reject ".gIt" and other path components that case-fold
        to ".git" in "git checkout", "git add", and "git fsck".
      * new '[core] protectHFS' setting to reject path components
        such as ".Git\u200f" that HFS+ folds to ".git" in
        "git checkout" and "git add".  Always reject such paths
        in "git fsck".  (U+200F is the Unicode right-to-left
        mark.)
      * new '[core] protectNTFS' setting to reject path components
        such as ".Git " that NTFS folds to ".git" in "git checkout"
        and "git add".  Always reject such paths in "git fsck".
  * gitweb: use apache 2.4-compatible configuration (thx Jean-Michel
    Nirgal Vourgère for advice; closes: #669292).
    * rules, conffiles: Apache configuration goes in
      /etc/apache2/conf-available, not conf.d.
    * preinst, postinst, postrm: use dpkg-maintscript-helper to
      rename the conffile and preserve local changes.
    * postinst, prerm, postrm: use apache2-maintscript-helper if
      present to load and unload gitweb configuration.
    * implicit: check for debian/$pkg.triggers.
    * triggers: re-run postinst when apache2-maintscript-helper is
      installed.
    * control:
      * Pre-Depends: dpkg 1.15.8 for dpkg-maintscript-helper.
      * Breaks: apache2.2-common because the Apache configuration
        requires version 2.4.
  * debian/diff/0009-git-svn-use-SVN-Ra-get_dir2-when-possible.diff:
    new from upstream: git svn: use get_dir2 instead of get_dir when
    possible (thx Eric Wong; works around: #767530).
  * debian/diff/0010-gitweb-hack-around-CGI-s-list-context-...diff:
    new from upstream: gitweb: be explicit about use of param() in list
    context, avoiding log noiose with libcgi-pm-perl >= 4.08 and a test
    failure in t9500-gitweb-standalone-no-errors.sh (thx Reiner
    Herrmann; closes: #770655).
  * correct spelling of Roland Mas's name in the 1:2.1.3-1 changelog
    entry.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 19 Dec 2014 15:55:34 -0800

git (1:2.1.3-1) unstable; urgency=low

  * new upstream point release.
    * config --add: avoid segfault when key already has an empty value.
    * remote-http: avoid failure due to command line length limits when
      pushing many refs.
    * fast-import: avoid segfault when trying to clear root tree.
    * index-pack: reliably detect and error out when encountering
      duplicate delta base.
    * gc: do not prune objects only reachable from HEAD .
    * fsck: be more consistent about exiting nonzero for corruption.
    * am: tighten check for mbox 'From ' line.
    * daemon: fix error message when bind() fails.
    * mergetool: fix --output handling in meld >= 3.12 (see GNOME
      bug 737869).
    * gitweb: use start_form instead of startform for compatibility
      with CGI.pm 4.04 and newer (thx Roland Mas; closes: #765525).
    * pack-objects: do not write invalid bitmaps when hitting pack
      size limit.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 04 Nov 2014 13:20:39 -0800

git (1:2.1.1-1) unstable; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 22 Sep 2014 17:56:49 -0700

git (1:2.1.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.1.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 15 Aug 2014 16:09:26 -0700

git (1:2.1.0~rc1-1) unstable; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 05 Aug 2014 13:59:00 -0700

git (1:2.0.1-1) unstable; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 25 Jun 2014 15:09:25 -0700

git (1:2.0.0-2) unstable; urgency=low

  * debian/rules: drop obsolete THREADED_DELTA_SEARCH setting.
  * debian/rules: add SANE_TOOL_PATH= INSTALL=install TAR=tar to
    OPTS to fix the Dyson build (thx Игорь Пашев; closes:
    #734097).
  * debian/rules: remove NO_PYTHON=1 now that the git_remote_helpers
    library has been removed.
  * debian/rules: remove git-p4 and its documentation from the git,
    git-man, and git-doc packages.  It depends on Perforce, which is
    not part of Debian.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 17 Jun 2014 16:17:46 -0700

git (1:2.0.0-1) unstable; urgency=low

  * new upstream release (see RelNotes/2.0.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 28 May 2014 16:06:41 -0700

git (1:2.0.0~rc4-1) unstable; urgency=low

  * new upstream release candidate.
  * remove source-highlight build dependency since the markup
    requiring it was removed upstream (thx Anders Kaserog;
    LP: #1316810).
  * remove git-bzr package to make room for a package built from
    https://github.com/felipec/git-remote-bzr.
    * debian/control: remove references to git-bzr package.
    * debian/control: remove Build-Depends: bzr, python-bzrlib.
    * debian/rules: remove rules to build, install, and clean
      git-remote-bzr.
    * debian/git-doc.docs: do not install git-remote-bzr.html.
    * debian/git-remote-bzr.txt, debian/git-bzr.postinst,
      debian/git-bzr.prerm, debian/git-bzr.README.Debian: remove.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 21 May 2014 11:34:56 -0700

git (1:2.0.0~rc2-1) unstable; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 05 May 2014 17:25:50 -0700

git (1:2.0.0~rc0-2) unstable; urgency=low

  [ Anders Kaseorg ]
  * add source-highlight build dependency (closes: #745591).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 23 Apr 2014 11:09:25 -0700

git (1:2.0.0~rc0-1) unstable; urgency=low

  * new upstream release candidate.
  * debian/diff/0009-contrib-subtree-unset-prefix-before-....diff:
    remove; applied upstream.
  * update debian/copyright.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 18 Apr 2014 17:01:04 -0700

git (1:1.9.2-1) unstable; urgency=low

  * new upstream point release.
    * wt-status: subject full label string to l10n (thx Raphaël
      Hertzog; closes: #725777).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 09 Apr 2014 15:15:18 -0700

git (1:1.9.1-1) unstable; urgency=low

  * new upstream point release.

  [ Jonathan Nieder ]
  * git-email: Recommends: libio-socket-ssl-perl (>= 1.951) since
    earlier versions do not use OpenSSL's defaults when ca_path
    and ca_file are unset.

  [ Gilles Filippini ]
  * install git-subtree from contrib (closes: #704652).
  * debian/diff/0009-contrib-subtree-unset-prefix-before-proceeding.diff:
    new; unset the 'prefix' environment variable before proceeding.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 18 Mar 2014 15:58:46 -0700

git (1:1.9.0-1) unstable; urgency=low

  * new upstream release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 18 Feb 2014 08:31:49 -0800

git (1:1.9.0~rc3-1) unstable; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 07 Feb 2014 15:53:52 -0800

git (1:1.9~rc1-1) unstable; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Jan 2014 14:07:56 -0800

git (1:1.9~rc0-1) unstable; urgency=low

  * new upstream release candidate.
  * debian/diff:
    * 0001-remove-interpreter-line-from-shell-libraries.diff:
      remove; applied upstream.
    * 0002...0009: rename to 0001-*, ..., 0008-*.
    * 0010-git-remote-mediawiki-do-not-remove-installed-...diff:
      remove; applied upstream.
  * debian/rules install: no more need to include DESTDIR in
    mw-to-git INSTLIBDIR.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Jan 2014 13:05:17 -0800

git (1:1.8.5.3-1) unstable; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 16 Jan 2014 16:18:25 -0800

git (1:1.8.5.2-2) unstable; urgency=low

  * /etc/bash_completion.d/git-prompt: check for git-sh-prompt
    and do not source it if git is removed but not purged (thx
    Craig Small; closes: #726669).
  * debian/control: package git Breaks: git-buildpackage versions
    that rely on output from 'git status' without the --porcelain
    flag (closes: #734223).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 09 Jan 2014 14:46:23 -0800

git (1:1.8.5.2-1) unstable; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 17 Dec 2013 16:31:01 -0800

git (1:1.8.5.1-1) unstable; urgency=medium

  * new upstream point release.
    * submodule: do not copy unknown update mode from .gitmodules.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 03 Dec 2013 14:12:55 -0800

git (1:1.8.5-1) unstable; urgency=low

  * new upstream release.
  * merge branch debian-experimental.
  * git-daemon-sysvinit: advertise GIT_DAEMON_BASE_PATH in
    /etc/default/git-daemon (thx Alexander Dahl and Antonio
    Ospite; closes: #704985).

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 30 Nov 2013 11:28:02 -0800

git (1:1.8.5~rc3-1) experimental; urgency=low

  * new upstream release candidate.

  [ Anders Kaseorg ]
  * debian/rules: pass $(OPTS) to contrib/mw-to-git/Makefile
    (closes: #729763).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 21 Nov 2013 16:35:29 -0800

git (1:1.8.5~rc2-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.

  [ Thorsten Glaser ]
  * package mw-to-git (closes: #718395).
    * debian/control: new package git-mediawiki; Depends:
      libmediawiki-api-perl (>= 0.39), liblwp-protocol-https-perl,
      libdatetime-format-iso8601-perl; package git now Suggests
      and git-all Depends: git-mediawiki.
    * debian/rules: build and install Git::Mediawiki perl module,
      mediawiki remote helper, and 'git mw' command in
      git-mediawiki package.
    * debian/diff/0010-git-remote-mediawiki-do-not-remove-...diff:
      new from upstream: mw-to-git: do not remove installed files
      in "clean" target.
    * debian/git-mediawiki.docs: install git-remote-mediawiki.txt.

  [ Anders Kaseorg ]
  * debian/diff/0003-transport-expose-git_tcp_connect-...diff:
    include tcp.h before using tcp functions (closes: #728508).

  [ Jonathan Nieder ]
  * debian/diff/0012-cvsserver-Determinize-output-to-...diff:
    remove; applied upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 13 Nov 2013 16:12:29 -0800


git (1:1.8.4.4-1) unstable; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 21 Nov 2013 17:51:36 -0800

git (1:1.8.4.3-1) unstable; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 11 Nov 2013 15:51:10 -0800

git (1:1.8.5~rc0-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff:
    * 0001-hooks-post-receive-email-set-encoding-to-utf-8.diff,
      0002-post-receive-email-defend-against-non-utf8-...diff:
      remove; applied upstream.
    * 0003...0012: rename to 0001-*, ..., 0010-*.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 30 Oct 2013 16:01:15 -0700

git (1:1.8.4.2-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0012-cvsserver-Determinize-output-to-...diff:
    new from upstream: sort cvsserver output to combat Perl 5.18
    hash randomization (thx Anders Kaseorg; closes: #727226).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 30 Oct 2013 16:00:07 -0700

git (1:1.8.4.1-1) unstable; urgency=low

  * merge branch debian-experimental.
  * new upstream point release.
  * debian/control: Build-Depends tcl instead of tcl8.5
    (closes: #725961).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 21 Oct 2013 11:46:45 -0700

git (1:1.8.4-1) experimental; urgency=low

  * new upstream release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 24 Aug 2013 14:50:38 -0700

git (1:1.8.4~rc4-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0012-*, 0013-*: remove; applied upstream.
  * debian/rules: define .NOTPARALLEL to avoid races between
    "make" child processes (thx Anders Kaseorg; closes: #720274).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 19 Aug 2013 22:41:08 -0700

git (1:1.8.4~rc3-1) unstable; urgency=low

  * new upstream release candidate.
    * switch de translation from pure German to German+English.
  * debian/diff/:
    * 0012-Revert-git-stash-avoid-data-loss-when-....diff: new
      from upstream: stash: omit too-slow check for files
      replaced by directories before stashing.
    * 0013-Revert-Add-new-shortcut-for-HEAD.diff: new from
      upstream: treat "@" and names like "refs/heads/@/foo" as
      ordinary refnames again.
  * debian/control: Vcs-Git: https://repo.or.cz/r/git/debian.git/
    (thx brian m. carlson; closes: #719932).
  * debian/git.README.source: suggest developing against
    https://repo.or.cz/r/git/debian.git/.
  * debian/watch: use xz-compressed tars from kernel.org again.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 18 Aug 2013 03:41:49 -0700

git (1:1.8.4~rc2-1) unstable; urgency=low

  * new upstream release candidate.
    * cat-file: do not split --batch input lines on whitespace
      (thx Joey Hess; closes: #718517).

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 10 Aug 2013 12:25:45 -0700

git (1:1.8.4~rc1-1) unstable; urgency=low

  * new upstream release candidate.
  * debian/watch: point to code.google.com again.
  * debian/git.preinst:
    * check that targets in /var/cache/git/* exist when
      creating symlinks from /var/lib/git/ (thx Steve Cotton and
      Christoph Anton Mitterer; closes: #718411).
    * remove spurious '/var/lib/git/*' symlink from the upgrade
      to 1:1.8.4~rc0-1.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 01 Aug 2013 23:14:58 -0700

git (1:1.8.4~rc0-1) unstable; urgency=low

  * new upstream release candidate.
  * use /var/lib/git instead of /var/cache/git as default git
    project root to comply with the Filesystem Hierarchy Standard
    (thx Julian Gilbey; closes: #483788):
    * git-daemon.default, git-daemon.in, git-daemon/run: use
      base path of /var/lib and projectroot of /var/lib/git.
    * gitweb.conf: $projectroot = "/var/lib/git".
    * rules: package git: install empty /var/lib/git directory
      instead of /var/cache/git.
    * git.README.Debian, git-daemon-run.README.Debian,
      git-daemon-sysvinit.README.Debian, gitweb.README.Debian:
      update for the new project root.
    * git.preinst: install symlinks /var/lib/git/* ->
      ../../cache/git/*.
    * git.NEWS.Debian: advertise the change and explain how to
      adapt to it.
  * update debian/copyright.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 30 Jul 2013 19:11:14 -0700

git (1:1.8.3.2-1) unstable; urgency=low

  * new upstream point release (see RelNotes/1.8.3.2.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 01 Jul 2013 19:20:03 -0700

git (1:1.8.3.1-1) unstable; urgency=low

  * merge branch debian-experimental
  * new upstream point release (see RelNotes/1.8.3.1.txt).
  * debian/watch: use xz-compressed tarballs from kernel.org.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 12 Jun 2013 07:50:53 -0700

git (1:1.8.3-1) experimental; urgency=low

  * new upstream release (see RelNotes/1.8.3.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 29 May 2013 22:32:40 -0700

git (1:1.8.3~rc3-1) experimental; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 19 May 2013 11:49:16 -0700

git (1:1.8.3~rc2-1) experimental; urgency=low

  * new upstream release candidate.
    * gitk: "grep diff" pickaxe variant (closes: #589283).
  * debian/rules: install perl modules with correct permissions
    (thx Christian Schwartz for suggesting it through lintian).
  * move "git svn" perl helpers to the git-svn package.
    * debian/rules: install Git::SVN and Git::SVN::* to the
      git-svn package, not git.
    * debian/control: git-svn: Breaks: and Replaces: old git.
  * debian/rules: install perl module manpages to git-man and
    git-svn packages, as appropriate.
  * debian/rules: mark hooks in /usr/share/git-core/contrib/hooks/
    as executable (thx Olivier Berger; closes: #687391).
  * debian/control: drop Depends: and Build-Depends: libc6.1
    (>= 2.10.2-6) [ia64] workaround for #563882, since that bug did
    not affect any stable release.
  * debian/control: drop dependencies on pre-Debian 5.0 (lenny)
    packages.
    * do not accept libcurl3-gnutls-dev as a substitute for
      libcurl4-gnutls-dev.
    * do not accept libsvn-core-perl as a substitute for
      libsvn-perl.
    * make asciidoc, docbook-xsl, runit, and tk dependencies
      unversioned.
    * git, git-man, git-cvs, git-svn, git-email, gitk: drop Breaks
      and Replaces against cogito (<< 0.16rc2-0).
    * git: drop Breaks against old qgit and git-buildpackage.
    * git: drop Conflicts against git-core (<< 1:1.5.2~rc3-2.).
    * git-gui: no longer Replaces git-core (<< 1:1.5.2.2-3).
  * Use source format 3.0 (quilt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 15 May 2013 00:20:06 -0700

git (1:1.8.3~rc1-1) experimental; urgency=low

  * new upstream release candidate.
    * log --pretty: avoid undefined behavior in %>, %<, %><'s
      truncation support (closes: #706400).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 03 May 2013 23:28:04 -0700

git (1:1.8.3~rc0-1) experimental; urgency=low

  * new upstream release candidate.
    * remote-bzr: respect bzr "author" field in import (closes:
      #705245).
    * remote-bzr: allow re-add of a deleted file in the same commit
      (closes: #704913, #704959).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Apr 2013 00:29:14 -0700

git (1:1.8.2.1-1) experimental; urgency=low

  * new upstream point release (see RelNotes/1.8.2.1.txt).
  * debian/implicit:
    * check for debian/changelog.upstream.
    * %.deb-DEBIAN-md5sums depends on /usr/share/doc/$pkg/doc/,
      doc-base/, and lintian/ directories.
    * do not remove files named after implicit targets.
  * debian/rules:
    * respect <num> in DEB_BUILD_OPTIONS=parallel=<num>.
    * do not create ./changelog symlink (avoiding a race).
    * override implicit git-core.deb-docs target, since git-core does
      not have its own doc/ directory.
  * debian/README.source: point to git.README.source (thx Helmut
    Grohne; closes: #704580)
  * debian/git.NEWS.Debian: add leading spaces before tab for
    changelog parsers (thx Russ Allbery for suggesting it through
    lintian).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 08 Apr 2013 00:46:02 -0700

git (1:1.8.2-1) experimental; urgency=low

  * new upstream release (see RelNotes/1.8.2.txt).
  * package the bzr remote helper (closes: #702697).
    * debian/control: new package git-bzr; Priority: extra; Provides:
      git-remote-bzr; Depends: python, python-bzrlib; Conflicts:
      bzr-git; Build-Depends: bzr, python, python-bzrlib for tests;
      package git now Suggests and git-all Recommends: git-bzr.
    * debian/git-remote-bzr.txt: new; explain usage.
    * debian/rules: build git-remote-bzr documentation, munge script
      shebang line, and install manpage (git-remote-bzr--git.1.gz)
      and script (/usr/lib/git-core/git-remote-bzr--git) in git-bzr
      package.
    * debian/git-doc.docs: install git-remote-bzr.html.
    * debian/git-bzr.postinst, debian/git-bzr.prerm: new; provide
      /usr/bin/git-remote-bzr through the alternatives system.
    * debian/git-bzr.README.Debian: new; explain how to get started.
  * debian/control: Standards-Version: 3.9.4.0.
  * debian/rules: define %.install depending on install-arch or
    install-indep as appropriate for each package.
  * debian/implicit: depend on %.install instead of both install-arch
    and install-indep so "debian/rules binary-arch" does not try to
    build documentation.
  * debian/rules build-indep, install-indep: build documentation even
    if asciidoc is not installed.  Build-Depends: dpkg-dev (>= 1.16.2).
  * debian/rules: handle DEB_BUILD_OPTIONS=parallel=<num>.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 31 Mar 2013 22:06:58 -0700

git (1:1.8.2~rc3-1) experimental; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 09 Mar 2013 00:50:39 -0800

git (1:1.8.2~rc2-1) experimental; urgency=low

  * new upstream release candidate.
    * skip readlink() of entries in GIT_CEILING_DIRECTORIES after an
      empty entry (thx Anders Kaseorg and Michael Haggerty).
  * update debian/copyright.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 03 Mar 2013 15:22:27 -0800

git (1:1.8.2~rc1-1) experimental; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 02 Mar 2013 13:27:28 -0800

git (1:1.8.2~rc0-1) experimental; urgency=low

  * new upstream release candidate.
    * push: require force for refs under refs/tags/.
    * push: require force for annotated tags.
  * debian/git.NEWS.Debian: advertise upcoming change to default
    behavior of argumentless "git push [<remote>]".
  * git-svn: no longer Depends: libwww-perl (thx RjY; closes:
    #699536).
  * update debian/copyright (closes: #699930).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Feb 2013 16:52:57 -0800

git (1:1.8.1.3-1) experimental; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 07 Feb 2013 23:08:48 -0800

git (1:1.8.1.2-1) experimental; urgency=low

  * new upstream point release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 03 Feb 2013 23:01:24 -0800

git (1:1.8.1.1-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * debian/git.NEWS.Debian: bash completion script moved to
    /usr/share/bash-completion/completions/ (thx Philipp Marek;
    closes: #698055).

  [ Gerrit Pape ]
  * new upstream release.

 -- Gerrit Pape <pape@smarden.org>  Wed, 16 Jan 2013 08:17:53 +0000

git (1:1.8.1-1) experimental; urgency=low

  * new upstream release (see RelNotes/1.8.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 31 Dec 2012 18:40:24 -0800

git (1:1.8.1~rc3-1) experimental; urgency=low

  * new upstream release candidate.
  * grep: enable perl regex (-P) support (thx Guido Günther; closes:
    #669376).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 25 Dec 2012 23:40:08 -0800

git (1:1.8.1~rc0-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/control: mark all binary packages Multi-Arch: foreign (thx
    Colin Watson; closes: #694651).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 06 Dec 2012 15:10:21 -0800

git (1:1.8.0-1) experimental; urgency=low

  * new upstream release (see RelNotes/1.7.11.txt, RelNotes/1.7.12.txt,
    RelNotes/1.8.0.txt)
    * git-svn: ignore SIGPIPE so serf can recover from HTTP timeouts
      (closes: #526989).
    * git-svn: use platform specific auth providers.
    * git-svn: handle errors and concurrent commits in dcommit
      (closes: #676904).
    * am: support --include option.
    * grep: add a grep.patternType configuration setting.
    * daemon: --access-hook for authentication logging and policy.
    * merge-base: expose --is-ancestor helper for scripts.
    * branch: support --set-upstream-to with simpler syntax than
      --set-upstream.
    * format-patch: do not use bogus email addresses in message ids.
    * http: trim trailing newline from /etc/mailname.
    * do not ignore port in ssh URLs with ipv6 literals
      (closes: #646178).
    * look in ~/.config/git/config (XDG_CONFIG_HOME can override this)
      before ~/.gitconfig for configuration.
    * [core] excludesfile and attributes file default to
      ~/.config/git/ignore and ~/.config/git/attributes.
    * var doc: advertise current DEFAULT_PAGER and DEFAULT_EDITOR
      settings (closes: #666250).
    * git-blame.el: address elisp warnings from emacs:
      * use mapc instead of mapchar (closes: #611931).
      * do not use goto-line in lisp code (closes: #611933).
      * use with-current-buffer where appropriate (closes: #611932).
    * cli: add Italian and Vietnamese translations.
    * push: introduce new push.default mode "simple".  It will be the
      default in the next major release.

  [ Jonathan Nieder ]
  * debian/diff:
    * 0013...0031: remove; applied upstream.
    * 0012-Makefile-add-a-knob-to-turn-off-...diff: remove; fixed
      upstream.
  * debian/rules:
    * install German translation.
    * use NO_INSTALL_HARDLINKS=1 instead of NO_HARDLINKS=1 in OPTS
      (thx Tomáš Myšík and Anders Kaseorg; see #683568).
    * install-arch: sanity-check that built-ins still do not approach
      btrfs hardlink limit (see #642603).
    * git: install git-prompt.sh from contrib/completion to
      /usr/lib/git-core/git-sh-prompt.
    * git: install completion script to
      /usr/share/bash-completion/completions/{git,gitk} instead of
      /etc/bash_completion.d.  This allows bash-completion 2.0 to load
      it on the fly when completing arguments to git commands.
  * debian/control: Breaks: bash-completion (<< 1:1.90-1).
  * debian/git.preinst, debian/git.postinst, debian/git.postrm:
    remove /etc/bash_completion.d/git on upgrade if unmodified.
  * debian/rules, debian/git.conffiles, debian/git-prompt.completion:
    /etc/bash_completion.d/git-prompt: new; source
    /usr/lib/git-core/git-sh-prompt so .bashrc files that rely on the
    completion lib defining __git_ps1 can continue to work (thx Danny
    Yates and Anders Kaseorg).
  * debian/git.conffiles: remove /etc/bash_completion.d/git.
  * update debian/copyright.
  * debian/control: gitweb: Recommends: libhttp-date-perl or
    libtime-module-perl for If-Modified-Since support; Build-Depends:
    same to support test suite.
  * debian/implicit: use order-only dependencies so "debian/rules
    binary-arch" does not try to build documentation.

  [ Gerrit Pape ]
  * new upstream release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 31 Oct 2012 17:58:10 -0700

git (1:1.7.10.4-2) unstable; urgency=low

  * debian/diff:
    * 0013...0030: new from the upstream 'master' branch: git svn:
      adapt to svn 1.7 changes:
      * normalize paths and URLs passed to Subversion (thx Michael G.
        Schwern; closes: #678137)
      * use correct "svn cp" syntax when checking git svn's mangling
        of @-signs in branch names (svn became stricter).
      * commit filetype changes between a regular file and symlink as
        replacement (deletion followed by addition) instead of
        modification of files.  Otherwise, clients pulling the change
        with "svn update" hit an assertion failure (svn issue 4091).
    * 0031-git-svn-use-YAML-format-...diff: new from 1.7.11: git svn:
      use YAML format for mergeinfo cache when possible.
  * debian/control: git-svn: Depends: libyaml-perl for platform- and
    version-independent .git/svn/.caches format; Build-Depends:
    libyaml-perl for tests (thx Tim Retout for the analysis; closes:
    #587650).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 12 Oct 2012 13:27:36 -0700

git (1:1.7.10.4-1) unstable; urgency=low

  * new upstream point release (thx Jonathan Nieder).

 -- Gerrit Pape <pape@smarden.org>  Fri, 08 Jun 2012 00:04:11 +0000

git (1:1.7.10.2-1) unstable; urgency=low

  * new upstream point release.
    * merge-recursive: don't detect renames of empty files.
    * fast-import: tighten parsing of datarefs.
    * diff -c -U0: fix segfault showing start of file.
  * debian/rules: do not install preliminary German translation.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 11 May 2012 20:20:15 -0500

git (1:1.7.10-1) unstable; urgency=low

  * new upstream release.
    * merge: use editor by default in interactive sessions
    * submodules: use relative paths to git dir and worktree.
    * fast-import: reject "ls" of path with empty components.
    * cli: add Chinese, Dutch, Portuguese, and Swedish translations.
    * am: officially deprecate -b/--binary option.
  * debian/diff:
    * 0005-gitk-use-symbolic-font-names-sans-and-monospace-when-.diff,
      0006-gitk-Skip-over-AUTHOR-COMMIT_DATE-when-searching-all-.diff:
      remove; applied upstream.
    * 0007...0014: rename to 0005-*, ... 0012-*.
  * debian/git.README.Debian: make paths in inetd(8) hint
    consistent with git-daemon-run and git-daemon-sysvinit setup.
  * debian/control: package git: Suggests: gettext-base for translated
    output in shell scripts.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 06 Apr 2012 22:28:18 -0500

git (1:1.7.9.5-1) unstable; urgency=low

  * new upstream point release.
  * debian/control: git-daemon-sysvinit: Priority: extra (thx Jonathan
    Nieder; closes: #661317).

 -- Gerrit Pape <pape@smarden.org>  Wed, 28 Mar 2012 12:30:35 +0000

git (1:1.7.9.4-1) unstable; urgency=low

  * new upstream point release.
    * commit: skip intent-to-add entries instead of erroring out.
    * grep -I: let diff attribute override binary file detection.
    * clone, daemon, http-backend, transport: look for .../foo before
      .../foo.git in response to requests for .../foo.
    * rev-list: enable or disable --verify-objects behavior based on
      the command line instead of uninitialized memory.
    * checkout -b: allow switching out of an unborn branch (closes:
      #506480).
  * debian/diff: clean up patches for upstream.
    * 0001-hooks-post-receive-email-set-encoding-to-utf-8.diff:
      hooks/post-receive-email: set content-transfer-encoding as well.
    * 0002-post-receive-email-defend-against-non-utf8-...diff: new;
      hooks/post-receive-email: avoid mixed-encoding messages when
      i18n.logoutputencoding is not utf8 (thx Alexey Shumkin).
    * 0002-remove-shebang-...diff: rename to 0003-remove-...diff;
      remove #! line from sh-i18n and rebase--* shell libraries, too
      (lintian); fix tests' --valgrind support to detect shell
      libraries without the #! line (thx Jeff King).
    * 0003-pre-rebase-hook-capture-...diff: simplify (thx Junio C
      Hamano); rename to 0004-*.
    * 0004-gitk-use-symbolic-font-names-...diff: rename to 0005-*; use
      non-symbolic font names on platforms like Mac OS X, Windows, and
      tk <= 8.4 that lack fontconfig support.
    * 0005...0008, 0010: rename to 0006-*, ..., 0009-*, 0011-*;
      clarify descriptions.
    * 0009-tcp-unify-ipv4-and-ipv6-code-paths.diff, 0011-*: combine;
      rename to 0010-*.
    * 0012-transport-optionally-honor-DNS-SRV-records.diff, 0013-*:
      combine; rename to 0011-*.
    * 0014, 0015: rename to 0013-*, 0014-*.
  * debian/git-daemon.init: respect GIT_DAEMON_ENABLE in restart and
    reload actions (thx Jonathan McCrohan; closes: #663522).
  * debian/control: git-gui: point to aspell for spell checking support
    in the package description; Suggests: aspell (thx Jonathan Ballet,
    closes: #656061).
  * debian/control: add Vcs-Browser: http://repo.or.cz/w/git/debian.git
    (thx Jonathan McCrohan; closes: #663451).
  * debian/control: Standards-Version: 3.9.3.1.
  * debian/copyright: adopt copyright-format 1.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 14 Mar 2012 02:40:00 -0500

git (1:1.7.9.1-1) unstable; urgency=low

  * new upstream point release.
    * merge: do not launch an editor on "--no-edit $tag" (thx Guido
      Günther; closes: #659255).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 14 Feb 2012 15:32:48 -0600

git (1:1.7.9-1) unstable; urgency=low

  * merge branch debian-experimental.
  * new upstream release (closes: #657262).
  * debian/diff/0016-unix-socket-handle-long-socket-...diff: remove;
    applied upstream.
  * debian/changelog: add missing parenthesis to 1:1.7.9~rc1-1 entry.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 27 Jan 2012 21:23:27 -0600

git (1:1.7.9~rc1-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff:
    * 0014-Makefile-add-a-knob-to-...diff: rename to 0015-*.
    * 0014-srv-be-more-tolerant-of-broken-DNS-replies.diff: new; srv:
      convert some error conditions to warnings (closes: #649781).
    * 0016-unix-socket-handle-long-socket-pathnames.diff: new from
      upstream; credential-cache: handle long socket pathnames (closes:
      #655288).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 13 Jan 2012 16:10:44 -0600

git (1:1.7.9~rc0-1) experimental; urgency=low

  * new upstream release candidate.
  * update debian/copyright.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 06 Jan 2012 17:06:55 -0600

git (1:1.7.8.3-1) unstable; urgency=medium

  * new upstream point release.
  * debian/git.preinst: on upgrade from git <= 1:1.7.7-1, replace
    /usr/lib/git-core/git with a copy of itself.  This prevents "are the
    same file" errors when replacing hard links to the old copy with
    symlinks using "mv" (thx Jon Dowland and Anders Kaseorg; closes:
    #654596).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 06 Jan 2012 16:45:46 -0600

git (1:1.7.8.2-1) unstable; urgency=low

  * merge branch debian-experimental.
  * new upstream release.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 29 Dec 2011 01:30:43 -0600

git (1:1.7.8~rc3-1) experimental; urgency=low

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 18 Nov 2011 04:09:51 -0600

git (1:1.7.8~rc2-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * new upstream release candidate.
  * merge branch debian-sid.
  * update debian/copyright.
  * debian/git.preinst: replace hard links to /usr/lib/git-core/git with
    symlinks before upgrading from git <= 1:1.7.7-1 (thx Antti Kultanen;
    closes: #645009).

  [ Gerrit Pape ]
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Wed, 16 Nov 2011 09:55:47 +0000

git (1:1.7.7.3-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 14 Nov 2011 10:22:34 +0000

git (1:1.7.7.2-1) unstable; urgency=low

  * new upstream point release.
  * debian/rules: add separate build-arch and build-indep targets
    (thx Roger Leigh for suggesting it through lintian).
  * debian/rules: drop CFLAGS=-O0 workaround for ancient hppa code
    generation bug (see #426302).
  * debian/rules: use dpkg-buildflags to retrieve compiler flags
    (including hardening options).  Build-Depends: dpkg-dev (>= 1.15.7).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 01 Nov 2011 23:41:55 -0500

git (1:1.7.8~rc0-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.
    * debian/diff/0001-...diff, 0002-...diff, 0003-...diff: remove;
      applied upstream (thx Jonathan Nieder).

 -- Gerrit Pape <pape@smarden.org>  Mon, 31 Oct 2011 09:45:53 +0000

git (1:1.7.7.1-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0003-Makefile-do-not-set-setgid-bit-on-dir...diff:
    remove; applied upstream.

 -- Gerrit Pape <pape@smarden.org>  Mon, 24 Oct 2011 20:27:20 +0000

git (1:1.7.7-2) unstable; urgency=low

  [ Jonathan Nieder ]
  * debian/git.postinst: check if /usr/share/doc/git/contrib/hooks is a
    symlink before changing it to one (thx Євгеній Мещеряков; closes:
    #645005).
  * debian/diff:
    * 0001-ident-check-etc-mailname-if-author-email-is-unknown.diff,
      0007-Makefile-do-not-use-setgid-bit-on-...diff: remove; obsolete.
    * 0002...0006, 0008...0015: rename to 0005-*, ..., 0017-*.
    * 0001...0004: new from the upstream 'master' branch:
      * ident: check /etc/mailname if email is unknown
      * ident: do not retrieve default ident when unnecessary
      * init --shared: do not set setgid bit on directories on
        GNU/kFreeBSD
      * Makefile: fix permissions of mergetools/ when building from
        source extracted with permissive umask
    * 0018-Makefile-add-a-knob-to-turn-off-hardlinks-...diff: new;
      Makefile: add a knob to disable hardlinks within bindir and
      gitexecdir.
  * debian/rules: add NO_HARDLINKS=1 to OPTS (thx Bastian Blank;
    closes: #642603).
  * debian/rules: do not rely on umask to set contrib permissions.
  * update debian/copyright.
  * debian/watch, debian/copyright: point to code.google.com for now.
    The upstream tarballs haven't been added back to kernel.org yet.
  * debian/changelog.upstream, debian/versions.upstream: include
    v1.7.6.4.

  [ Simon Chopin ]
  * debian/git.postinst: fix fresh install contrib/hooks cleaning
    (#645005).

 -- Gerrit Pape <pape@smarden.org>  Thu, 13 Oct 2011 00:04:49 +0000

git (1:1.7.7-1) unstable; urgency=low

  * new upstream release.
  * merge branch debian-experimental.
  * debian/rules, debian/git.postinst: move contrib hooks from
    /usr/share/doc/git-core/ into /usr/share/git-core/; provide symlink
    for backward compatibility (closes: #640949).

 -- Gerrit Pape <pape@smarden.org>  Sun, 09 Oct 2011 21:00:07 +0000

git (1:1.7.7~rc1-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.
  * debian/rules: git: skip directories in /usr/lib/git-core/ and
    /usr/bin/ when stripping programs.

 -- Gerrit Pape <pape@smarden.org>  Wed, 14 Sep 2011 14:23:10 +0000

git (1:1.7.6.3-1) unstable; urgency=low

  * merge branch debian-experimental.
  * new upstream point release.
  * debian/diff:
    * 0007-...diff, ..., 0014-...diff: slightly rework as 0008...0015-*
      to provide better error reporting (thx Jonathan Nieder).
    * 0015-Makefile-do-not-use-setgid-bit-on-...diff: rename to 0007-*.

 -- Gerrit Pape <pape@smarden.org>  Wed, 14 Sep 2011 11:33:23 +0000

git (1:1.7.6-1) experimental; urgency=low

  * new upstream release.
  * debian/diff:
    * 0012-daemon-check-for-errors...diff: clarify patch description.
    * 0013-transport-learn-to-honor-DNS-SRV...diff: rename to 0014-*.
    * 0013-tcp-make-dns_resolve-return-an-error-code.diff: new; make
      dns_resolve() pass on return value from getaddrinfo.
    * 0014-transport-honor-DNS-SRV-records.diff: fix two regressions
      introduced by this patch when it was added in 1:1.7.6~rc1-1.
      * use descriptive messages like "Unable to look up
        git.example.com: Out of memory" to report errors from the
        resolver, instead of "unable to connect to a socket (success)".
      * tolerate alias (CNAME) records in the DNS reply for
        _git._tcp.<host>, instead of confusing them for invalid SRV
        records and erroring out.
    * 0015-Makefile-do-not-use-setgid...diff: new; Makefile: set
      DIR_HAS_BSD_GROUP_SEMANTICS on GNU/kFreeBSD.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 28 Jun 2011 12:54:58 -0500

git (1:1.7.6~rc2-1) experimental; urgency=low

  * new upstream release candidate.

  [ Daniel Baumann ]
  * add an init.d script for git-daemon (closes: #422139).
    * debian/control, debian/rules: new package git-daemon-sysvinit;
      Depends: adduser; Conflicts: git-daemon-run; package git now
      Suggests and git-all Recommends: git-daemon-run |
      git-daemon-sysvinit.
    * debian/git-daemon.init: new; script to start or stop git-daemon.
    * debian/git-daemon.default: new; provide some default settings and
      disable the daemon by default on first installation.
    * debian/git-daemon-sysvinit.README.Debian: new; explain how to get
      started.
    * debian/git-daemon-sysvinit.conffiles: new; treat
      /etc/default/git-daemon, /etc/init.d/git-daemon as conffiles.
    * debian/git-daemon-sysvinit.postinst: new; add gitdaemon system
      user; register and invoke init script to start git-daemon.
    * debian/git-daemon-sysvinit.prerm: new; stops git-daemon.
    * debian/git-daemon-sysvinit.postrm: new; unregisters init script.

  [ Jonathan Nieder ]
  * debian/diff/:
    * 0009-daemon-move-...diff, 0011-tcp-...diff: move fallback
      definition of HOST_NAME_MAX to new use sites (fixes FTBFS on
      kfreebsd).
    * 0012-transport-learn-to-honor...diff: rename to 0013-*.
    * 0012-daemon-check-for-errors-retrieving-canonical-IP-addre.diff:
      new; daemon: check for errors when retrieving IP address for use
      by the --interpolated-path feature.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 17 Jun 2011 15:56:12 -0500

git (1:1.7.6~rc1-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0007-...diff, ..., 0012-transport-learn...diff: new;
    teach the git client to pay attention to SRV records (thx Julien
    Cristau; closes: #627839).
  * debian/rules: add USE_SRV_RR=1 to OPTS.
  * debian/rules: add htmldir=/usr/share/doc/git/html to OPTS and
    DOC_OPTS.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 09 Jun 2011 19:05:55 -0500

git (1:1.7.5.4-1) unstable; urgency=low

  * new upstream point release.

  [ Gerrit Pape ]
  * debian/changelog.upstream, debian/versions.upstream: update upstream
    changelog.

  [ Jonathan Nieder ]
  * debian/changelog.upstream.sh: use set -e.
  * debian/git-daemon/run: use SO_REUSEADDR when binding the listening
    socket so the server can restart without waiting for old connections
    to time out (thx Daniel Kahn Gillmor; closes: #609405).
  * debian/git-daemon-run.postrm purge: terminate the git-daemon/log
    service, even if there is an active connection using it, before
    deleting logs and the gitlog user (thx Daniel Kahn Gillmor; closes:
    #627314).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 07 Jun 2011 13:23:58 -0500

git (1:1.7.5.3-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0007-...diff, 0008-...diff, 0009-...diff, 0010-...diff:
    remove; included upstream.
  * debian/control: Package: git-cvs: make cvs dependency unversioned;
    Package: git-gui: make tk dependency unversioned (thx Jonathan
    Nieder).

 -- Gerrit Pape <pape@smarden.org>  Fri, 27 May 2011 13:00:05 +0000

git (1:1.7.5.1-1) unstable; urgency=low

  * new upstream point release.
  * merge branch debian-experimental.
  * debian/diff/:
    - 0009-upload-pack-start-pack-objects-before-async-rev-...diff:
      remove; applied upstream.
    - 0007, 0008 (the add -p split-and-edit fix): rename to 0009-*,
      0010-*.
    - 0007-add-p-q-should-really-quit.diff, 0008-t3701-...diff: new
      from upstream; tests: check that the add -p split-and-edit bug
      has not resurfaced.
  * debian/control: package git: no longer Conflicts: but Breaks:
    git-core from Debian 5.0 (lenny) to simplify the upgrade path
    (thx Russ Allbery for suggesting it through lintian).
  * debian/control: package git: Conflicts: git-core from
    Debian 4.0 (etch) which provided /usr/bin/git through the
    alternatives system.
  * debian/control: Standards-Version: 3.9.2.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 05 May 2011 03:41:36 -0500

git (1:1.7.5-1) experimental; urgency=low

  * new upstream release.
  * 0009-upload-pack-start-pack-objects-before-async-rev-list.diff:
    new from upstream; upload-pack: start pack-objects which reads
    pack_pipe before writing to it to avoid deadlock (closes:
    #607346).
  * debian/changelog.upstream, debian/versions.upstream: do not skip
    versions not packaged for Debian (thx Gerrit Pape).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 26 Apr 2011 21:49:48 -0500

git (1:1.7.5~rc3-1) experimental; urgency=low

  * new upstream release candidate.
  * merge branch debian-sid.
  * 0007-gitk-Take-only-numeric-version-components-when-comput.diff:
    remove; applied upstream.

 -- Gerrit Pape <pape@smarden.org>  Wed, 20 Apr 2011 07:46:58 +0000

git (1:1.7.4.4-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0008...0064: remove; applied upstream.
  * debian/diff/0008-add...diff, 0009-add-p-work...diff: new from
    upstream; add -p: do not error out for attempts to stage hunks
    after splitting and editing them.  This fixes a regression
    introduced by v1.7.4.3~10^2 (apply: do not patch lines that were
    already patched, 2011-03-04).
  * debian/git-doc.doc-base.git-index-format: new; catalog
    .git/index file format document.
  * debian/git.preinst, debian/git.postinst, debian/git.postrm:
    don't use dpkg-maintscript-helper, avoiding a dependency on
    recent dpkg (thx Anders Kaseorg and Marc Haber; closes: #618708).
  * debian/git-daemon-run.postrm: terminate the git-daemon/log
    service before deleting the gitlog user (closes: #610099).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 15 Apr 2011 00:00:03 -0500

git (1:1.7.4.1-5) unstable; urgency=low

  * merge branch debian-experimental.
  * debian/diff/0008...0064: new from the upstream 'maint' branch:
    (see RelNotes/1.7.4.2.txt for details)
    * revert "core.abbrevguard: Ensure short object names stay
      unique a bit longer"
    * parse_tag_buffer(): do not prefixcmp() out of range
    * pull: do not display fetch usage on --help-all
    * gitweb: address warnings from perl 5.13
    * gitweb: replace tabs with spaces when highlighting syntax
    * merge: honor prepare-commit-msg hook
    * diff: handle diffstat of rewritten binary files
    * config: add "[push] default = upstream" synonym for
      "[push] default = tracking"
    * diffcore: properly honor the difference between -M and -C
    * diffcore: improve similarity heuristics for rename detection
    * patch-id: do not trip over "no newline" marker
    * various documentation, usage string, and code clarity
      improvements

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 16 Mar 2011 21:01:53 -0500

git (1:1.7.4.1-4) experimental; urgency=low

  * git-el.postinst: check if /usr/share/doc/git/contrib/emacs is a
    symlink before changing it to one (closes: #617631).
  * git-el.postinst: remove spurious .../contrib/emacs.old and
    /usr/share/git-core/emacs/emacs symlinks.
  * package git: do not run emacs-package-remove on upgrade (it's not
    needed).
    - git.postinst: do not run "emacs-package-remove git".
    - debian/control: git no longer Depends: emacsen-common (closes:
      #617784).
  * git-el.emacsen-install, git-el.emacsen-remove:
    - use printf instead of echo.
    - only remove the lisp (.el) and bytecode (.elc) files that we
      install.
    - make output less noisy --- for example, do not say "+ set +x".

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 13 Mar 2011 05:03:44 -0500

git (1:1.7.4.1-3) unstable; urgency=low

  [ Anders Kaseorg ]
  * Loosen versioned replaces/conflicts on git-core, to fix upgrades from
    lucid.

  [ Jonathan Nieder ]
  * README.emacs: git-blame.el does not print a summary in the echo
    area (documents: #611935).
  * Move emacs support files to a separate git-el package.
  * Make git depend on emacsen-support, so it can reliably clean up
    the old emacs support files on upgrade (closes: #614578)
  * git-el.emacsen-install: Overwrite .el symlinks if they already
    exist (closes: #614659).
  * git-el.emacsen-remove: Do not complain if the site-lisp
    directory is nonempty or is already missing.
  * debian/control: git-man: Section: doc.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 04 Mar 2011 18:26:27 -0600

git (1:1.7.4.1-1) unstable; urgency=low

  * new upstream release (closes: #600566, #575917, #578752, #583693,
    #583699, #588103, #507476, #540001, #524309, #581691, #600785,
    #577471, #607044, #606975, #610423, #610481).

  [ Anders Kaseorg ]
  * debian/git.docs, debian/rules: deal with RelNotes subdirectory.
  * debian/diff/0007-gitk-Take-only-numeric-...diff: new; gitk: do
    not error out when git version number contains "-rc".

  [ Jonathan Nieder ]
  * add myself as uploader.
  * debian/diff/0003, 0007, 0010-0034: remove, applied upstream.
  * debian/rules: accept patches with .patch suffix, too (thx Anders
    Kaseorg).
  * debian/rules: use patch -N -r- so patch application is idempotent.
  * update debian/copyright.
  * debian/diff/0001-ident-check-etc-mailname...diff: avoid calls to
    gethostbyname when mailname is not an fqdn (closes: #611608).
  * debian/diff/0005-gitk-use-...diff: new; gitk: use standard desktop
    fonts by default.  The appearance for users that already have a
    generated ~/.gitk file is not affected (closes: #466471).
  * debian/diff/0006-gitk-...diff: new; gitk: avoid spurious matches
    in "All fields" search (thx Frédéric Brière, closes: #465776).
  * debian/control: git-cvs: recommend cvs2git for one-time conversions
    (closes: #585725).
  * debian/control: git-core: explain that it still may be needed (thx
    Denis Laxalde).
  * debian/control: gitweb: allow lynx-cur to satisfy dependency on a
    CGI implementation (thx Ivan Shmakov).
  * debian/control, debian/rules: new architecture-independent package
    git-man: manual pages that were previously in the main git package.
  * debian/rules: do not build documentation on autobuilders (closes:
    #499002).
  * debian/control: Build-Depends-Indep: asciidoc, xmlto, docbook-xsl.
  * debian/rules: git-gui: install git-gui--askpass helper to
    /usr/lib/git-core (closes: #598245).
  * debian/rules: git-doc: install symlink to html documentation in
    /usr/share/doc/git (thx Ian Jackson).
  * debian/watch: new; point to upstream sources.
  * debian/implicit: create DEBIAN/md5sums with correct permissions.
  * debian/diff/0003-remove-shebang...diff: new; do not start shell
    libraries with #!/bin/sh.
  * debian/rules: do not try to strip scripts even if they begin
    with "# " in place of "#!".
  * debian/diff/0004-pre-rebase-hook-capture...diff: new;
    hooks/pre-rebase: use a <<HERE document to prevent syntax checkers
    from treating documentation as code.
  * debian/implicit: check for debian/$pkg.doc-base.$docid.
  * debian/git-doc.doc-base.*: new; catalog provided documentation.
  * debian/implicit: check for debian/$pkg.lintian-overrides.
  * debian/git.lintian-overrides: new; document some deviations from
    lintian guidelines.
  * debian/control: Standards-Version: 3.9.1.0.

  * debian/git.README.Debian: server logs go in /var/log/apache2.
  * debian/diff/0002-Revert-Merge-branch-jn-gitweb...diff: remove.
  * debian/diff/0006, 0008, 0009-instaweb...diff: remove, no longer
    needed.
  * debian/rules, debian/control: move gitweb script to the main git
    package for use by instaweb; make gitweb into a configuration
    package.
  * debian/gitweb.NEWS.Debian, debian/git.README.Debian,
    debian/gitweb.conf: static files moved to /usr/share/gitweb/static.
  * debian/gitweb.conf: disable rename patches (@diff_opts = ()).
  * debian/diff/0001-Revert-gitweb-...diff: remove; no longer needed.
  * debian/rules: gitweb: move gitweb.cgi script to /usr/share;
    add a symlink at /usr/lib/cgi-bin/gitweb.cgi for compatibility.

  * debian/git.emacsen-install, debian/rules, debian/git.postinst,
    debian/git.prerm: put emacs support files in /usr/share/git-core
    instead of /usr/share/doc/git/contrib.
  * debian/implicit: check for arbitrary debian/$pkg.README.*, not just
    README.source and README.Debian.
  * debian/git.README.emacs: new; introduction to the emacs support
    (text taken from contrib/emacs/README).

  [ Kevin Ryde ]
  * debian/rules, debian/git.emacsen-*, debian/git.postinst,
    debian/git.prerm: Make M-x git-status and git-blame modes available
    with emacs23 (closes: #576887).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 15 Feb 2011 19:27:38 -0600

git (1:1.7.2.3-2.2) unstable; urgency=medium

  * Non-maintainer upload.
  * debian/diff/0034-gitweb-Introduce-esc_attr...diff: new from
    upstream: gitweb: do not parrot filenames or other arguments given
    in a request without proper quoting (closes: #607248,
    CVE-2010-3906).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 16 Dec 2010 01:00:30 -0600

git (1:1.7.2.3-2.1) unstable; urgency=low

  * Non-maintainer upload.
  * debian/diff/0010...0033: new from the upstream 'maint' branch:
    * cache_tree_free: Fix small memory leak.
    * diff.c: call regfree to free memory allocated by regcomp.
    * gitweb: allow configurations that change with each request
      (fixes a regression from v1.7.2-rc2 in some gitolite setups).
    * Documentation: 19 formatting fixes (thx Frédéric Brière,
      closes: #540001, #600422).
    * setup: make sure git dir path is in a permanent buffer.
    * do not depend on signed integer overflow.
  * debian/control: gitweb: weaken dependencies to allow configurations
    using mod_perl or fastcgi rather than CGI; explain dependencies in
    the package description (thx Servilio Afre Puentes,
    closes: #600413).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 18 Nov 2010 19:04:09 -0600

git (1:1.7.2.3-2) unstable; urgency=low

  * merge branch debian-experimental.
  * debian/gitweb.NEWS.Debian: typo (thx Jonathan Nieder).

 -- Gerrit Pape <pape@smarden.org>  Sun, 17 Oct 2010 20:07:22 +0000

git (1:1.7.2.3-1) experimental; urgency=low

  * new upstream release.
    * post-receive-email: document command-line mode (closes: #428413).
    * add-interactive: Clarify “remaining hunks in the file”
      (closes: #526014).
    * rebase -i -p: document shortcomings (closes: #532775).
    * GIT-VERSION-GEN: restrict tags used (closes: #473604).
    * git svn: avoid unnecessary '/' in paths for SVN (thx Jon Dowland,
      closes: #546733, #572847).
    * git svn: avoid uninitialized var in 'reset' (thx Jens Seidel,
      closes: #578908).
  * debian/diff/0003-git-submodule.sh-properly-initialize-shell-...diff,
    debian/diff/0004-Check-size-of-path-buffer-before-...diff: remove;
    applied upstream.
  * debian/diff/0001-Revert-gitweb-Use-diff_opts-while...diff: new;
    prevent gitweb from serving rename patches that GNU patch 2.6.1
    cannot apply.
  * debian/diff/0002-Revert-Merge-branch-jn-gitweb-plackup.diff: new;
    install gitweb.css et al in /usr/share/gitweb, not a new static/
    subdirectory.
  * debian/diff/0003-Do-not-unquote-into-in-URLs.diff: new from
    upstream; do not unquote + into space character in URLs.
  * debian/diff/0001-bug-448655-check-etc-mailname-...diff: rename to
    debian/diff/0004-bug-448655-check-etc-mailname-if-author...diff.
  * debian/diff/0002-bug-506445-hooks-post-receive-...diff: rename to
    debian/diff/0005-bug-506445-hooks-post-receive-...diff; adapt.
  * debian/diff/0006-instaweb-ignore-GITWEB_CONFIG_SYSTEM.diff: new;
    instaweb: ignore /etc/gitweb.conf;
    debian/diff/0007-gitweb-skip-logo-in-atom-feed-when...diff, ...,
    debian/diff/0009-instaweb-disable-logo-and-favicon...diff: new;
    instaweb: avoid 404 errors due to nonexistent image files (thx Uwe
    Kleine-König, closes: #592733).
  * update debian/copyright.
  * debian/rules, debian/git.README.Debian, debian/gitweb.conf:
    install gitweb.js, add an Alias for it to the VirtualHost example,
    and configure gitweb to look for it in the right place (closes:
    #555047).
  * debian/gitweb.NEWS.Debian: mention the new gitweb.js file.
  * debian/control: gitweb: Depends: apache2 | httpd-cgi (closes:
    #559890).
  * debian/gitweb.conf: use relative links for gitweb.css et al
    (thx Alban Browaeys, closes: #568343).
  * debian/control: package git: no longer Conflicts: git
    (<< 4.3.20-11).
  * debian/control: package git: Breaks: packages from Debian 5.0
    (lenny) relying on removed features such as dashed-form commands in
    $PATH (thx Adrian Bunk, closes: #561701); no longer Conflicts: but
    Breaks: ancient qgit for the same reason.
  * debian/gitweb.README.Debian: copy-edit.
  * debian/git.README.Debian: retitle to "Git for Debian" (thx
    Christoph Anton Mitterer, closes: #590129).
  * debian/control: Homepage: http://git-scm.com/ (closes: #553220).
  * debian/control: package git no longer Depends: libdigest-sha1-perl
    (thx Ansgar Burchardt, closes: #591039).
  * debian/control: Build-Depends: libio-pty-perl for better test
    coverage.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 03 Sep 2010 22:34:30 -0500

git (1:1.7.1-1.1) unstable; urgency=high

  * Non-maintainer upload.
  * debian/diff/0004-Check-size-of-path-buffer-before-writing-...diff:
    new, cherry-picked from 3c9d041: setup: Check size of path buffer
    before writing into it (closes: #590026, CVE-2010-2542).

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 25 Jul 2010 18:01:15 -0500

git (1:1.7.1-1) unstable; urgency=low

  * debian/diff/0003-t-t7400-submodule-basic.sh-debug-output-...diff:
    remove; obsolete.
  * debian/diff/0003-git-submodule.sh-properly-initialize-shell-...diff:
    new; git-submodule.sh: properly initialize shell variables (closes:
    #569594).
  * debian/rules: no longer set ARCH='$(ARCH)' in environment for make
    test.
  * new upstream release.
  * merge branch debian-experimental.

 -- Gerrit Pape <pape@smarden.org>  Sun, 25 Apr 2010 23:35:50 +0000

git (1:1.7.0.5-2~dbg0) unstable; urgency=low

  * debian/diff/0003-t7400-submodule-basic.sh-alpha-s390-skip-...diff:
    remove; more archs are affected (additionally hppa, armel).
  * debian/diff/0003-t-t7400-submodule-basic.sh-debug-output-...diff:
    new; t/t7400-submodule-basic.sh: debug output for t7400.24 'update
    --init'.

 -- Gerrit Pape <pape@smarden.org>  Fri, 23 Apr 2010 12:15:18 +0000

git (1:1.7.0.5-1) unstable; urgency=low

  * debian/git-core.postinst: new; replace /usr/share/doc/git-core with
    symlink /usr/share/doc/git-core -> git on upgrade from <= 1.7.0.4-2
    (closes: #578298).
  * debian/diff/0003-t7400-submodule-basic.sh-alpha-s390-skip-...diff:
    new; t7400-submodule-basic.sh: alpha, s390: skip 'update --init'
    test (workaround: #569594).
  * debian/control: no longer Replaces, Conflicts: git-completion (thx
    Jonathan Nieder, closes: #577730).
  * new upstream point release.
  * debian/rules: set ARCH='$(ARCH)' in environment for make test.

 -- Gerrit Pape <pape@smarden.org>  Tue, 20 Apr 2010 23:41:04 +0000

git (1:1.7.1~rc1-1.1) experimental; urgency=low

  * debian/control: typo (thx Jonathan Nieder).
  * debian/git-daemon-run.postinst: remove fixup for #522348.

 -- Gerrit Pape <pape@smarden.org>  Sun, 11 Apr 2010 23:22:46 +0000

git (1:1.7.1~rc1-1) experimental; urgency=low

  * new upstream release candidate.
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Sun, 11 Apr 2010 15:28:28 +0000

git (1:1.7.0.4-2) unstable; urgency=low

  * debian/rules: package git: no longer install /usr/share/doc/git-core
    -> git symlink; git-core: no longer install /usr/lib/git-core -> git
    symlink (closes: #576906).
  * debian/control: package git: Replaces:, Conflicts: git-core (<=
    1:1.7.0.4-1).
  * debian/rules: make /usr/share/gitweb/index.cgi ->
    ../../lib/cgi-bin/gitweb.cgi symlink relative (lintian).
  * debian/control: package git-core: minor update to the long
    description.
  * debian/git.README.source: add note about the <debian-package-git>
    mailing list.
  * debian/rules: target binary-indep: add missing dependency to
    git-core.deb-DEBIAN.
  * debian/implicit: no longer create DEBIAN/md5sums.
  * debian/rules: revert the /usr/lib/git-core -> /usr/lib/git rename
    (keeping upstream's default).

 -- Gerrit Pape <pape@smarden.org>  Sat, 10 Apr 2010 23:16:54 +0000

git (1:1.7.0.4-2~exp0) experimental; urgency=low

  [ Gerrit Pape ]
  * debian/control, debian/rules, debian/git-core.*: change source and
    binary package name from git-core to git; keep now obsolete empty
    git-core package that depends on git for upgrade (see
    http://lists.debian.org/debian-devel/2009/09/thrd2.html#00661).
  * debian/control: package git: Replaces: git-core, Conflicts: git-core
    (<= 1:1.7.0.3-1), Provides: git-core.
  * debian/git.NEWS.Debian: talk about the package name change, and the
    possible hazzle when upgrading with GNU Interactive Tools installed
    since etch and no git-core installed.
  * debian/control, debian/rules: new package git-all: dummy package
    which brings in all subpackages (following upstream's RPMs).

  [ Jonathan Nieder ]
  * debian/git.README.source: adjust for the package name change.
  * debian/rules: install symbolic link git -> git-core in /usr/lib
    to simplify upgrades.
  * debian/git-daemon/run: use $(git --exec-path) instead of hard-coding
    the path to the git-daemon binary.

 -- Gerrit Pape <pape@smarden.org>  Sat, 03 Apr 2010 15:07:19 -0500

git-core (1:1.7.0.4-1) unstable; urgency=low

  * debian/git-daemon-run.postrm: purge: don't warn if the git-daemon
    service is already removed; use -f option to userdel, on fast-purge
    the log service daemon might still run for a short time (closes:
    #575434).
  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Thu, 01 Apr 2010 20:42:19 +0000

git-core (1:1.7.0.3-1) unstable; urgency=low

  * debian/control: Standards-Version: 3.8.4.0.
  * debian/changelog: note fixes from Jonathan Nieder in 1.7.0.2-1.
  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 22 Mar 2010 09:19:06 +0000

git-core (1:1.7.0.2-1) unstable; urgency=low

  * new upstream point release.

    [ Jonathan Nieder ]
    * am: remove rebase-apply directory before gc (thx Mark Brown,
      closes: #570966).
    * git-imap-send: Convert LF to CRLF before storing patch to draft box
      (closes: #572598).
    * sha1_file: be paranoid when creating loose objects (closes:
      #569505).

 -- Gerrit Pape <pape@smarden.org>  Thu, 18 Mar 2010 20:44:12 +0000

git-core (1:1.7.0-1) unstable; urgency=low

  * debian/git-core.README.source: typos.
  * new upstream release.
    * Documentation: Update git core tutorial clarifying reference to
      scripts (closes: ##560795).
  * merge branch debian-experimental.

 -- Gerrit Pape <pape@smarden.org>  Tue, 16 Feb 2010 08:51:32 +0000

git-core (1:1.7.0~rc2-1) experimental; urgency=low

  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Fri, 12 Feb 2010 14:30:12 +0000

git-core (1:1.7.0~rc1-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0003-git-cvsserver-allow-regex-metacharacters...diff:
    remove; applied upstream.
  * debian/rules: NO_PYTHON=1.  Packaging the git_remote_helpers
    Python module will require more work.
  * update debian/copyright (closes: #557065).
  * debian/rules: set prefix=/usr when building man pages (closes:
    #567404).

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 30 Jan 2010 17:46:04 -0600

git-core (1:1.6.6.2-1) unstable; urgency=medium

  * new upstream point release.
  * debian/diff/0003-git-cvsserver-allow-regex-metacharacters...diff:
    remove; applied upstream.
  * debian/rules: stop ignoring test suite failures on ia64, since
    #563882 has been fixed.  Build-Depends: and Depends:
    libc6.1 (>= 2.10.2-6) [ia64] for the fix (closes: #568915).
  * update debian/copyright (closes: #557065).
  * debian/rules: set prefix=/usr when building man pages (closes:
    #567404).

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 11 Feb 2010 21:48:55 -0600

git-core (1:1.6.6.1-1) unstable; urgency=low

  [ Gerrit Pape ]
  * new upstream point release.
    * Document git-blame triple -C option (thx Ramkumar Ramachandra,
      closes: #476604).
  * debian/diff/0003-git-cvsserver-allow-regex-metacharacters...diff:
    new; git-cvsserver: allow regex metacharacters in CVSROOT (fixes
    build/selftest failure if the build directory pathname contains a +).
  * debian/gitweb.apache2.conf, debian/gitweb.postinst: new; make gitweb
    work out of the box with Apache (thx Charles Plessy).
  * debian/gitweb.README.Debian, debian/gitweb.conf, debian/rules: make
    gitweb work out of the box with Apache (thx Charles Plessy, closes:
    #497809).
  * debian/gitweb.conffiles: add /etc/apache2/conf.d/gitweb.

  [ Jonathan Nieder ]
  * debian/rules: ignore test suite failures on ia64 (workaround:
    #563882).

 -- Gerrit Pape <pape@smarden.org>  Wed, 27 Jan 2010 13:30:29 +0000

git-core (1:1.6.6-1) unstable; urgency=low

  * new upstream release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 04 Jan 2010 16:01:36 +0000

git-core (1:1.6.6~rc2-1) experimental; urgency=low

  * new upstream release candidate.
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Thu, 17 Dec 2009 10:13:09 +0000

git-core (1:1.6.5.7-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Thu, 17 Dec 2009 09:39:55 +0000

git-core (1:1.6.6~rc1-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Fri, 04 Dec 2009 00:17:27 +0000

git-core (1:1.6.5.4-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Thu, 03 Dec 2009 22:48:57 +0000

git-core (1:1.6.6~rc0-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0001-bug-369742-pager.c-fallback-to-pager-...diff,
    debian/diff/0002-bug-438793-494505-fallback-to-editor-...diff,
    debian/diff/0004-bug-477337-git-svn.perl-fallback-to...diff:
    remove; obsolete.
  * debian/rules: add DEFAULT_PAGER=pager, DEFAULT_EDITOR=editor to
    OPTS.

 -- Gerrit Pape <pape@smarden.org>  Thu, 26 Nov 2009 00:17:59 +0000

git-core (1:1.6.5.3-1) unstable; urgency=low

  [ Tanguy Ortolo ]
  * debian/git-core.README.Debian, debian/control: git-daemon-run:
    document that git-daemon is not provided by this package; add hint
    on how to enable git-daemon through inetd(8) (closes: #554215).

  [ Jonathan Nieder ]
  * debian/rules: drop misleading PPC_SHA1, ARM_SHA1 settings (closes:
    #555039).
  * debian/rules: log $(CC) version, not gcc (closes: #555040).
  * debian/rules: allow clean as non-root (closes: #555041).
  * debian/rules: drop obsolete WITH_P4IMPORT setting (closes:
    #555051).
  * debian/rules: TCLTK_PATH=wish (closes: #555027).

  [ Gerrit Pape ]
  * new upstream point release.
    * ls-files: unbreak "ls-files -i" (closes: #553296).
    * Require a struct remote in transport_get(); Allow curl helper to
      work without a local repository (closes: #553507).
    * help -a: do not unnecessarily look for a repository (closes:
      #539273).
    * thx Jonathan Nieder.

 -- Gerrit Pape <pape@smarden.org>  Tue, 17 Nov 2009 21:01:46 +0000

git-core (1:1.6.5.2-1) unstable; urgency=low

  * restore temporary lost changes from version 1:1.6.3.3-2 (closes:
    #530693).
  * new upstream point release.
    * grep: do not segfault when -f is used (closes: 551071).

 -- Gerrit Pape <pape@smarden.org>  Mon, 26 Oct 2009 12:05:18 +0000

git-core (1:1.6.5-1) unstable; urgency=low

  * new upstream release.
    * git-doc: html no longer uses "{plus}" where it should be "+"
      (closes: #529255).
  * debian/git-core.README.source: new; document how to use the
    Debian package source.
  * debian/implicit: update to revision 60d9070.

 -- Gerrit Pape <pape@smarden.org>  Tue, 13 Oct 2009 00:23:00 +0000

git-core (1:1.6.4.3-1) unstable; urgency=low

  * new upstream release (closes: #546709).
    * git-cvsserver: no longer use deprecated 'git-subcommand' commands
      (closes: #536067).
  * branch debian-sid: git cherry-pick 098082f, 318b847, 1f9b620 (thx
    Anders Kaseorg; closes: #546499).

 -- Gerrit Pape <pape@smarden.org>  Wed, 16 Sep 2009 11:03:45 +0000

git-core (1:1.6.3.3-2) unstable; urgency=low

  [ Anders Kaseorg ]
  * Fix manpage formatting: set ASCIIDOC_NO_ROFF instead of
    DOCBOOK_XSL_173 (based on the instructions in Documentation/Makefile)
    and don’t override the internal Makefile variable ASCIIDOC_EXTRA
    (closes: #530693, #521954, #533320).

  [ Gerrit Pape ]
  * debian/control: Standards-Version: 3.8.2.0.

 -- Gerrit Pape <pape@smarden.org>  Mon, 29 Jun 2009 00:06:59 +0000

git-core (1:1.6.3.3-1) unstable; urgency=high

  * new upstream point release.
    * daemon: Strictly parse the "extra arg" part of the command
      (closes: #532935; CVE-2009-2108).
  * debian/rules: add NO_CROSS_DIRECTORY_HARDLINKS=1 to OPTS.
  * debian/diff/0006-bug-520116-Makefile-do-not-install-cross...diff:
    remove; obsolete.

 -- Gerrit Pape <pape@smarden.org>  Tue, 23 Jun 2009 08:49:17 +0000

git-core (1:1.6.3.1-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Thu, 14 May 2009 21:35:01 +0000

git-core (1:1.6.3-1) unstable; urgency=low

  * new upstream release.
  * merge branch debian-experimental.

 -- Gerrit Pape <pape@smarden.org>  Fri, 08 May 2009 07:57:39 +0000

git-core (1:1.6.3~rc3-1) experimental; urgency=low

  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Wed, 29 Apr 2009 21:58:10 +0000

git-core (1:1.6.3~rc1-1) experimental; urgency=low

  * new upstream release candidate.
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Mon, 20 Apr 2009 21:44:09 +0000

git-core (1:1.6.2.4-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 20 Apr 2009 20:22:02 +0000

git-core (1:1.6.3~rc0-1) experimental; urgency=low

  * new upstream release candidate.
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Tue, 14 Apr 2009 23:06:38 +0000

git-core (1:1.6.2.3-1) unstable; urgency=low

  * new upstream point release.
  * debian/control: Standards-Version: 3.8.1.0.
  * debian/control: change subversion to Subversion in description.
  * debian/control: Section: vcs (except for git-doc).

 -- Gerrit Pape <pape@smarden.org>  Tue, 14 Apr 2009 22:46:43 +0000

git-core (1:1.6.2.2-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0006-bug-520116-Makefile-do-not-install-cross...diff:
    new; Makefile: do not install cross-directory hardlink (thx Jonathan
    Nieder, closes: #520116).
  * debian/git-daemon/run: run /usr/lib/git-core/git-daemon instead of
    'git daemon' (closes: #522348).
  * debian/git-daemon-run.postinst: on upgrade from >> 1:1.6.0, fixup
    #522348.
  * debian/git-core.emacsen-startup: remove the line
    '(add-to-list 'vc-handled-backends 'git)' (closes: #519728).

 -- Gerrit Pape <pape@smarden.org>  Sun, 05 Apr 2009 20:49:25 +0000

git-core (1:1.6.2.1-1) unstable; urgency=low

  * new upstream point release.
  * debian/git-core.emacsen-startup: no longer refer to vc-git.el
    (closes: #519728).

 -- Gerrit Pape <pape@smarden.org>  Mon, 16 Mar 2009 22:18:05 +0000

git-core (1:1.6.2-1) unstable; urgency=medium

  * new upstream release.
  * merge branch debian-experimental.
  * debian/diff/0006-Install-builtins-with-the-user-and-group-of...diff,
    debian/diff/0007-git-quiltimport-preserve-standard-input-to...diff:
    remove; applied upstream.

 -- Gerrit Pape <pape@smarden.org>  Wed, 04 Mar 2009 22:44:43 +0000

git-core (1:1.6.2~rc2-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Thu, 26 Feb 2009 22:15:13 +0000

git-core (1:1.6.1.3-2) unstable; urgency=high

  * debian/diff/0006-Install-builtins-with-the-user-and-group-of...diff:
    new from upstream git: Install builtins with the user and group of
    the installing personality.
  * debian/diff/0007-git-quiltimport-preserve-standard-input-to...diff:
    new from upstream git: git-quiltimport: preserve standard input to
    be able to read user input (closes: #515910).

 -- Gerrit Pape <pape@smarden.org>  Thu, 26 Feb 2009 22:01:37 +0000

git-core (1:1.6.2~rc1-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/git-core.docs, debian/git-doc.docs, debian/rules: move
    Documentation/RelNotes* from git-doc to the git-core package
    (closes: #514866).

 -- Gerrit Pape <pape@smarden.org>  Tue, 17 Feb 2009 20:20:03 +0000

git-core (1:1.6.2~rc0-1) experimental; urgency=low

  * new upstream release candidate.
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Tue, 10 Feb 2009 00:06:02 +0000

git-core (1:1.6.1.3-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 09 Feb 2009 21:31:39 +0000

git-core (1:1.6.1.2-1) experimental; urgency=low

  * new upstream release.
    * don't fail to clone over http if connection is rate limited
      (closes: #512795).
    * git svn info no longer fails (closes: #499243).
  * debian/rules: ASCIIDOC_EXTRA='-a asciidoc7compatible -a docbook-xsl-172'
    and DOCBOOK_XSL_173=Yes when building documentation (thx Niko Tyni
    for the patch, closes: #497883).
  * merge branch debian-lenny.
  * debian/diff/0005-gitweb-do-not-run-git-diff-that-is-Porcelain.diff:
    remove; fixed upstream.

 -- Gerrit Pape <pape@smarden.org>  Mon, 02 Feb 2009 23:26:45 +0000

git-core (1:1.5.6.5-3) unstable; urgency=high

  * debian/rules: no longer install symlink /etc/init.d/git-daemon ->
    /usr/bin/sv (closes: #511687).
  * debian/git-daemon-run.README.Debian: document how to create the
    symlink manually to have an LSB compatible /etc/init.d/git-daemon
    interface to control the service.

 -- Gerrit Pape <pape@smarden.org>  Mon, 02 Feb 2009 20:56:15 +0000

git-core (1:1.6.0.6-1) experimental; urgency=low

  * debian/control: git-email: Recommends: libnet-smtp-ssl-perl,
    libauthen-sasl-perl (thx Kees Cook, closes: #505636).
  * debian/diff/0005-bug-506445-hooks-post-receive-email-set-...diff:
    new; hooks/post-receive-email: set encoding to utf-8 (thx Alexander
    Gerasiov, closes: #506445).
  * new upstream point release (closes: #504641).
    * gitweb: do not run "git diff" that is Porcelain.

 -- Gerrit Pape <pape@smarden.org>  Sat, 20 Dec 2008 11:03:49 +0000

git-core (1:1.5.6.5-2) unstable; urgency=high

  * debian/diff/0005-gitweb-do-not-run-git-diff-that-is-Porcelain.diff:
    new; fix possible gitweb vulnerability: calling "git diff": Jakub
    says that legacy-style URI to view two blob differences are never
    generated since 1.4.3.  This codepath runs "git diff" Porcelain from
    the gitweb, which is a no-no.  It can trigger diff.external command
    that is specified in the configuration file of the repository being
    viewed.

 -- Gerrit Pape <pape@smarden.org>  Wed, 17 Dec 2008 09:27:01 +0000

git-core (1:1.6.0.4-1) experimental; urgency=low

  * new upstream point release.
  * debian/control: git-email: minor update to the long description
    (thx Gerfried Fuchs, closes: #501559).
  * debian/rules: TCLTK_PATH=/usr/bin/wish instead of wish8.5 in OPTS.
  * debian/control: git-gui, gitk: Depends: tk (>= 8.4) instead of
    tk8.5 (thx Adeodato Simó, closes: #503113).
  * debian/rules: move the /usr/bin/git-cvsserver program into the
    git-cvs package.

 -- Gerrit Pape <pape@smarden.org>  Tue, 11 Nov 2008 22:36:05 +0000

git-core (1:1.6.0.3-1) experimental; urgency=low

  * debian/control: minor update to long descriptions (thx Reuben
    Thomas, closes: #499065).
  * debian/git-core.emacsen-startup: new; emacsen-startup configuration
    file (thx Jari Aalto, closes: #472197).
  * debian/rules: install emacsen-startup configuration file into the
    git-core package (thx Eddy Mulyono, closes: #446027).
  * new upstream point release.
  * debian/git-core.conffiles: add /etc/emacs/site-start.d/50git-core.el

 -- Gerrit Pape <pape@smarden.org>  Tue, 04 Nov 2008 20:26:56 +0000

git-core (1:1.6.0.2-1) experimental; urgency=low

  * new upstream point release.
  * debian/git-core.NEWS.Debian: new; mention that most of the programs
    now are installed outside the default $PATH; the "git-xyzzy" form
    in scripts and on the command line is no longer supported in 1.6.0.
  * debian/git-core.README.Debian: fix paths in config example (thx
    Michael Biebl for the patch, closes: #498741).
  * debian/git-core.README.Debian: typo (thx Vincent Bernat for the
    patch, closes: #496834).

 -- Gerrit Pape <pape@smarden.org>  Wed, 24 Sep 2008 20:55:26 +0000

git-core (1:1.6.0.1-1) experimental; urgency=low

  * new upstream point release (closes: #496155).
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Wed, 27 Aug 2008 07:53:36 +0000

git-core (1:1.6.0-1) experimental; urgency=low

  * new upstream release.
    * svnimport: newer libsvn wants us to ask for the root with "",
      not "/" (closes: #492522, #490400).
    * Keep some git-* programs in $(bindir); Move all dashed-form
      commands to libexecdir (closes: #461212).
    * bash: Add more option completions for 'git log' (closes:
      #490220).
    * Fix buffer overflow in prepare_attr_stack; Fix buffer overflow
      in git diff; Fix buffer overflow in git-grep (closes: #494097).
  * 0002-bug-438793-git-sh-setup.sh-builtin-tag.c-fallback.diff: redo
    as 0002-bug-438793-494505-fallback-to-editor-not-vi.diff (thx
    Jonathan Nieder for the patch, closes: #494505).
  * debian/rules: add gitexecdir=/usr/lib/git-core to OPTS; adapt
    several paths (thx Jonathan Nieder for a patch, closes: #480396).
  * debian/gitweb.NEWS.Debian: new; talk about files moved from
    /var/www/ to /usr/share/gitweb/ (see #479479; closes: #494467).
  * debian/git-daemon/run: run git daemon instead of git-daemon
    (dash-less form).
  * debian/git-daemon-run.postinst: add gitdaemon system user.
  * debian/git-daemon/run: utilize chpst to run git daemon as user
    gitdaemon (thx Daniel Kahn Gillmor, closes: #494991).

 -- Gerrit Pape <pape@smarden.org>  Sun, 24 Aug 2008 22:31:44 +0000

git-core (1:1.5.6.5-1) unstable; urgency=high

  * new upstream point release.
    * Fix buffer overflow in prepare_attr_stack; Fix buffer overflow
      in git diff; Fix buffer overflow in git-grep (CVE-2008-3546;
      closes: #494097).
  * debian/diff/0005-bug-494097-CVE-2008-3546.diff: remove; obsolete.

 -- Gerrit Pape <pape@smarden.org>  Sun, 24 Aug 2008 19:22:02 +0000

git-core (1:1.5.6.3-1.1) unstable; urgency=high

  * Non-maintainer upload by the Security Team.
  * Fix various stack-based buffer overflows when processing overly long
    repository pathnames which can be exploited to execute arbitrary code if
    a victim is tricked into using git-grep or git-diff on a crafted
    repository (CVE-2008-3546; Closes: #494097).

 -- Nico Golde <nion@debian.org>  Sat, 09 Aug 2008 13:53:13 +0200

git-core (1:1.5.6.3-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0005-git-svn.perl-workaround-assertions-in-svn...diff:
    remove; applied upstream (opens: #490400).
  * debian/control: Standards-Version: 3.8.0.1.

 -- Gerrit Pape <pape@smarden.org>  Thu, 17 Jul 2008 07:40:08 +0000

git-core (1:1.5.6.2-1) unstable; urgency=low

  * new upstream point release (closes: #489431).
  * debian/copyright: apply patch from Ansgar Burchardt: adopt proposed
    machine-readable format; clarify some license information (thx,
    closes: #488351).
  * debian/rules: package gitweb: install gitweb.css, git-favicon.png,
    git-logo.png into /usr/share/gitweb/ instead of /var/www/ (closes:
    #479479).
  * debian/control: package git-arch: no longer Suggests: bazaar
    (closes: #486726).
  * debian/diff/0005-git-svn.perl-workaround-assertions-in-svn...diff:
    new; git-svn.perl: workaround assertions in svn library 1.5.0
    (closes: #489108).

 -- Gerrit Pape <pape@smarden.org>  Sun, 06 Jul 2008 18:35:27 +0000

git-core (1:1.5.6-1) unstable; urgency=low

  * new upstream release.
  * merge branch debian-experimental.

 -- Gerrit Pape <pape@smarden.org>  Thu, 19 Jun 2008 07:38:31 +0000

git-core (1:1.5.6~rc3-1) experimental; urgency=low

  * debian/git-daemon-run.postrm: remove log files on purge.
  * new upstream release candidate.
  * debian/control: package git-core: no longer Depends: cpio, no
    longer Recommends: curl.

 -- Gerrit Pape <pape@smarden.org>  Sun, 15 Jun 2008 11:14:49 +0000

git-core (1:1.5.6~rc2-1) experimental; urgency=low

  * new upstream release candidate.
  * merge branch debian-sid.
  * debian/rules: do not build manpages twice (thx Jonathan Nieder).

 -- Gerrit Pape <pape@smarden.org>  Mon, 09 Jun 2008 12:02:43 +0000

git-core (1:1.5.5.4-1) unstable; urgency=low

  * new upstream point release.
  * debian/rules: enable DOCBOOK_XSL_172 build variable, fixing man page
    breakage (thx Jonathan Nieder, closes: #476634).
  * debian/control: Build-Depends: docbook-xsl (>> 1.72) (thx Jonathan
    Nieder).

 -- Gerrit Pape <pape@smarden.org>  Mon, 09 Jun 2008 11:51:19 +0000

git-core (1:1.5.6~rc1-1) experimental; urgency=low

  * new upstream release candidate.
    * git-svn fails in prop_walk if $self->{path} is not empty (closes:
      477393).
    * gitweb: Fix "next" link on bottom of page (closes: #481902).
  * merge branch debian-sid.
  * debian/rules: add THREADED_DELTA_SEARCH=1 to OPTS (closes: #483534).

 -- Gerrit Pape <pape@smarden.org>  Thu, 05 Jun 2008 10:14:14 +0000

git-core (1:1.5.5.3-1) unstable; urgency=low

  * new upstream point release.
    * commit --interactive: properly update the index before commiting
      (closes: #480429).
  * debian/diff/0005-git-bisect.sh-don-t-accidentally-override...diff:
    remove; applied upstream.
  * debian/diff/0005-bug-477337-git-svn.perl-fallback-to-pager...diff:
    new; git-svn.perl: fallback to 'pager' not 'less' if PAGER is unset
    (closes: #477337).

 -- Gerrit Pape <pape@smarden.org>  Wed, 28 May 2008 19:32:57 +0000

git-core (1:1.5.6~rc0-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.
  * debian/diff/0004-gitweb-fallback-to-system-wide-config-file...diff:
    remove; fixed upstream.
  * debian/diff/0005-git-bisect.sh-don-t-accidentally-override...diff:
    remove; applied upstream.

 -- Gerrit Pape <pape@smarden.org>  Mon, 26 May 2008 16:53:38 +0000

git-core (1:1.5.5.2-1) unstable; urgency=low

  * new upstream point release.
    * diff-options.txt: document the new "--dirstat" option (closes:
      #476437).
  * debian/diff/0005-git-bisect.sh-don-t-accidentally-override...diff:
    new: git-bisect.sh: don't accidentally override existing branch
    "bisect" (closes: #478647).

 -- Gerrit Pape <pape@smarden.org>  Mon, 26 May 2008 16:41:45 +0000

git-core (1:1.5.5.1-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 21 Apr 2008 18:24:34 +0000

git-core (1:1.5.5-1) unstable; urgency=low

  * new upstream release.
    * gitk: Fix changing colors through Edit->Preferences (closes: #472615).
    * Revert "gitweb: Add 'status_str' to parse_difftree_raw_line output"
      (closes: #469083).
  * merge branch debian/experimental.

 -- Gerrit Pape <pape@smarden.org>  Tue, 08 Apr 2008 20:26:25 +0000

git-core (1:1.5.5~rc3-2) experimental; urgency=low

  * debian/diff/0004-gitweb-fallback-to-system-wide-config-file-if-defaul.diff:
    amend: properly apply GITWEB_CONFIG_SYSTEM to gitweb.cgi.

 -- Gerrit Pape <pape@smarden.org>  Fri, 04 Apr 2008 20:40:48 +0000

git-core (1:1.5.5~rc3-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0004-gitweb-fallback-to-system-wide-config-file-if-defaul.diff:
    new: gitweb: fallback to system-wide config file if default config does
    not exist (closes: #450592).
  * debian/rules: remove GITWEB_CONFIG=/etc/gitweb.conf from OPTS.

 -- Gerrit Pape <pape@smarden.org>  Thu, 03 Apr 2008 19:43:33 +0000

git-core (1:1.5.5~rc2-1) experimental; urgency=low

  * new upstream release candidate.
    * t9600-cvsimport.sh: set HOME before checking for cvsps availability
      (closes: #471969).
    * imap-send: properly error out if imap.host is not set in config
      (closes: #472632).
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Fri, 28 Mar 2008 08:53:30 +0000

git-core (1:1.5.4.5-1) unstable; urgency=low

  * new upstream point release (closes: #473071).

 -- Gerrit Pape <pape@smarden.org>  Fri, 28 Mar 2008 08:26:39 +0000

git-core (1:1.5.5~rc1-1) experimental; urgency=low

  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Sun, 23 Mar 2008 11:55:21 +0000

git-core (1:1.5.5~rc0-1) experimental; urgency=low

  * new upstream release candidate.
    * git-pull documentation: warn about the option order (closes: #463853).
    * hash-object: cleanup handling of command line options (closes:
      #464432).
  * debian/diff/0004-gitk-properly-deal-with-tag-names-containing-sl.diff:
    remove; applied upstream.

 -- Gerrit Pape <pape@smarden.org>  Wed, 19 Mar 2008 07:45:01 +0000

git-core (1:1.5.4.4-1) unstable; urgency=low

  * new upstream point release.
    * templates/Makefile: don't depend on local umask setting (closes:
      #467518).
    * Fix random crashes in http_cleanup() (closes: #468836).
    * send-email: fix In-Reply-To regression (closes: #468153).
    * git-merge.sh: better handling of combined --squash,--no-ff,--no-commit
      options (closes: #468568).

 -- Gerrit Pape <pape@smarden.org>  Mon, 10 Mar 2008 10:38:51 +0000

git-core (1:1.5.4.3-1) unstable; urgency=low

  * new upstream point release.
    * git-clone.sh: properly configure remote even if remote's head is
      dangling (closes: #466581).
  * debian/diff/0004-gitk-properly-deal-with-tag-names-containing-sl.diff:
    new: from upstream master: gitk: properly deal with tag names containing /
    (slash) (closes: #464104).
  * debian/git-daemon-run.postrm: adapt paths in /var/.

 -- Gerrit Pape <pape@smarden.org>  Sun, 24 Feb 2008 16:19:02 +0000

git-core (1:1.5.4.2-2) unstable; urgency=low

  * debian/rules: git-daemon-run: no longer include symlinks for ./supervise/
    subdirectories, update-service now takes care of this.
  * debian/git-daemon-run.postinst: remove ad re-add git-daemon service on
    upgrade from <= 1.5.4.2-1.

 -- Gerrit Pape <pape@smarden.org>  Mon, 18 Feb 2008 22:22:14 +0000

git-core (1:1.5.4.2-1) unstable; urgency=low

  * new upstream point release.
    * cvsimport: have default merge regex also match beginning of commit
      message (thx Frédéric Brière, closes: #463468).
    * builtin-commit: remove .git/SQUASH_MSG upon successful commit (closes:
      #464656).
  * debian/rules: change TCLTK_PATH to /usr/bin/wish8.5 in OPTS.
  * debian/control: Build-Depends: tcl8.5; git-gui, gitk: Depends: tk8.5
    (closes: #456423).
  * debian/git-daemon-run.postinst, debian/git-daemon-run.postrm,
    debian/git-daemon-run.prerm: use runit's update-service program to
    add/remove the git daemon service, instead of dealing with symlinks in
    /var/service/ directly.
  * debian/control: package git-daemon: Depends: runit (>= 1.8.0-2) (1st
    version that provides the update-service program).

 -- Gerrit Pape <pape@smarden.org>  Sun, 17 Feb 2008 18:48:00 +0000

git-core (1:1.5.4.1-1) unstable; urgency=medium

  * debian/control: Build-Depends: cvsps (for selftests, thx Marco Rodrigues,
    closes: #463896).
  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 11 Feb 2008 12:00:03 +0000

git-core (1:1.5.4-1) unstable; urgency=low

  * merge branch debian-experimental.
  * new upstream release.
  * debian/git-core.README.Debian: add Alias'es for git-favicon.png and
    git-logo.png to the VirtualHost example (thx Frederic Briere, closes:
    #463732).
  * debian/rules: target build-arch-stamp: re-run selftests with --verbose
    on test failures.

 -- Gerrit Pape <pape@smarden.org>  Sun, 03 Feb 2008 05:01:16 +0000

git-core (1:1.5.4~rc5-1) experimental; urgency=low

  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Mon, 28 Jan 2008 11:01:08 +0000

git-core (1:1.5.4~rc4-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0003-bug-448655-check-etc-mailname-if-author-email-is-un.diff:
    adapt; don't warn if /etc/mailname does not exist (closes: #461844).
  * debian/rules: install /usr/share/gitk/ into the gitk package, not
    git-core.

 -- Gerrit Pape <pape@smarden.org>  Mon, 21 Jan 2008 21:15:21 +0000

git-core (1:1.5.4~rc3-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.
    * "git pull --tags": error out with a better message (closes: #456035).
    * gitk: use user-configured background in view definition dialog
      (closes: #457124).
  * debian/control: Build-Depends: cvs, libdbd-sqlite3-perl (for selftests).

 -- Gerrit Pape <pape@smarden.org>  Sat, 12 Jan 2008 15:09:23 +0000

git-core (1:1.5.3.8-1) unstable; urgency=low

  * debian/control: for all packages: Suggests: git-doc instead of
    Recommends: (thx Andrew Moise, closes: #455369).
  * debian/control: add Vcs-Git: http://smarden.org/git/git.git/.
  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Tue, 08 Jan 2008 21:01:35 +0000

git-core (1:1.5.4~rc2-1) experimental; urgency=low

  * new upstream release candidate.
    * shortlog manpage documentation: work around asciidoc markup issues
      (closes: #447911).
    * Fix $EDITOR regression introduced by rewrite in C (closes: #446845).

 -- Gerrit Pape <pape@smarden.org>  Thu, 27 Dec 2007 08:45:01 +0000

git-core (1:1.5.4~rc1-1) experimental; urgency=low

  * new upstream release candidate.
    * gitweb: Teach "a=blob" action to be more lenient about blob/file mime
      type (closes: #435610).

 -- Gerrit Pape <pape@smarden.org>  Thu, 20 Dec 2007 09:07:10 +0000

git-core (1:1.5.4~rc0-1) experimental; urgency=low

  * new upstream release candidate.
    * build with correct version information (on amd64, closes: #454935,
      #454408).
    * git-reset: add -q option to operate quietly (closes: #444933).
    * gitk: disable colours when calling git log (closes: #454420).
    * "git svnimport" was removed in favor of "git svn" (closes: #436930,
      #447325, #447965, #451037).
    * git-commit: allow grouping of short options (closes: #407241).
  * debian/diff/0004-contrib-hooks-post-receive-email-make-subject-prefix.diff,
    debian/diff/0005-Don-t-cache-DESTDIR-in-perl-perl.mak.diff: remove;
    applied upstream.
  * debian/rules: install git-gui's lib/ directory plus subdirectory
    properly.
  * debian/control: Build-Depends: gettext.

 -- Gerrit Pape <pape@smarden.org>  Thu, 13 Dec 2007 14:08:45 +0000

git-core (1:1.5.3.7-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/0005-Don-t-cache-DESTDIR-in-perl-perl.mak.diff: new; don't
    cache DESTDIR in perl/perl.mak (#452077).
  * debian/rules: remove $(MAKE) -C perl clean to remove the perl/perl.mak
    again, this is now handled through debian/diff/0005 (thx Pierre
    Habouzit, #452077).

 -- Gerrit Pape <pape@smarden.org>  Mon,  3 Dec 2007 10:17:11 +0000

git-core (1:1.5.3.6-1.1) unstable; urgency=low

  * Non-maintainer upload: Gerrit is currently changing home, and this bug is
    preventing people from installing git, I took the initiative to fix it
    before his return.
  * debian/rules: force a $(MAKE) -C perl clean to remove the perl/perl.mak
    that remembers our DESTDIR and makes perl modules be installed in
    debian/git-core/ in the install-indep target again
    (closes: #452077, #452078, #452080, #452111, #452324).

 -- Pierre Habouzit <madcoder@debian.org>  Thu, 22 Nov 2007 00:40:08 +0100

git-core (1:1.5.3.6-1) unstable; urgency=low

  * debian/implicit: add proper dependencies to support 'parallel build'
    through make -j (thx Daniel Schepler for the patch).
  * debian/rules: support 'nocheck' in DEB_BUILD_OPTIONS to skip running
    the selftests.
  * debian/diff/0003-bug-448655-check-etc-mailname-if-author-email-is-un.diff:
    new; check /etc/mailname if author email is unknown (closes: #448655).
  * debian/gitweb.docs: new; install gitweb/README.
  * new upstream point release.
    * git-cvsimport: really convert underscores in branch names to dots with
      -u (closes: #446495).
    * git-mailsplit: with maildirs not only process cur/, but also new/
      (closes: #447396).
  * debian/diff/0004-contrib-hooks-post-receive-email-make-subject-prefix.diff:
    new; cherry-pick'ed from master: contrib/hooks/post-receive-email: make
    subject prefix configurable (closes: #428418).

 -- Gerrit Pape <pape@smarden.org>  Mon, 19 Nov 2007 12:32:11 +0000

git-core (1:1.5.3.5-1) unstable; urgency=low

  * new upstream point release.
    * git-config: handle --file option with relative pathname properly;
      git-config: print error message if the config file cannot be read;
      git-config: don't silently ignore options after --list (closes:
      #445208).

 -- Gerrit Pape <pape@smarden.org>  Thu, 01 Nov 2007 08:35:46 +0000

git-core (1:1.5.3.4-1) unstable; urgency=low

  * new upstream point release (closes: #445188).

 -- Gerrit Pape <pape@smarden.org>  Thu, 04 Oct 2007 08:27:01 +0000

git-core (1:1.5.3.3-1) unstable; urgency=low

  * new upstream point release.

 -- Gerrit Pape <pape@smarden.org>  Sun, 30 Sep 2007 09:25:06 +0000

git-core (1:1.5.3.2-1) unstable; urgency=low

  * new upstream point release.
    * git-svn: fix "Malformed network data" with svn:// servers (closes:
      #430091, #436142).
    * git-commit: Allow partial commit of file removal (closes: #437817).
    * git-gui: lib/index.tcl: handle files with % in the filename properly
      (closes: #441167).
    * git-clone: improve error message if curl program is missing or not
      executable (closes: #440976).
  * debian/git-daemon-run.postinst: use 'sv -v term git-daemon' instead of
    'sv restart git-daemon' to restart git-daemon service if it was running.
  * debian/control: git-core: no longer Suggests: cogito, which was removed.
  * debian/diff/genindex.diff: apply and remove.
  * debian/gitweb.conf: comment out $home_link, and set to gitweb.cgi's
    default (thx Ansgar Burchardt for the patch, closes: 441694).

 -- Gerrit Pape <pape@smarden.org>  Thu, 20 Sep 2007 07:28:41 +0000

git-core (1:1.5.3.1-1) unstable; urgency=low

  * new upstream point release.
  * debian/control: git-daemon-run: improve long description (closes:
    #440699).
  * debian/git-daemon-run.README.Debian: improve.
  * debian/control: git-svn: improve long description.
  * debian/control: git-cvs: improve long description.
  * debian/control: git-core: improve long description (closes: #412560).

 -- Gerrit Pape <pape@smarden.org>  Tue, 04 Sep 2007 18:18:33 +0000

git-core (1:1.5.3-1) unstable; urgency=low

  * merge branch debian-experimental.
  * new upstream release.
  * debian/control: git-email: move libemail-valid-perl from Depends: to
    Recommends: (thx Uwe Kleine-Koenig, closes: #439902).
  * debian/control: git-email: no longer Depends: libmail-sendmail-perl (thx
    Uwe Kleine-Koenig).

 -- Gerrit Pape <pape@smarden.org>  Sun, 02 Sep 2007 16:41:54 +0000

git-core (1:1.5.3~rc7-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0002-git-merge-do-up-to-date-check-also-for-all-strategie.diff:
    remove; included upstream.

 -- Gerrit Pape <pape@smarden.org>  Wed, 29 Aug 2007 12:22:16 +0000

git-core (1:1.5.3~rc6-1) experimental; urgency=low

  * new upstream release candidate.
    * git-am: initialize variable $resume on startup (closes: #435807).
  * debian/diff/0002-git-merge-do-up-to-date-check-also-for-all-strategie.diff:
    new; http://article.gmane.org/gmane.comp.version-control.git/55981.
  * debian/diff/0003-git-sh-setup.sh-fallback-to-editor-not-vi-if-VI.diff:
    new; git-sh-setup.sh: fallback to 'editor' not 'vi' if $VISUAL and $EDITOR
    are unset (thx Mike Hommey, closes: #438793).
  * merge branch debian-sid.

 -- Gerrit Pape <pape@smarden.org>  Sun, 26 Aug 2007 09:54:16 +0000

git-core (1:1.5.2.5-2) unstable; urgency=low

  * debian/git-core.conffiles: new; add /etc/bash_completion.d/git.

 -- Gerrit Pape <pape@smarden.org>  Sun, 26 Aug 2007 09:49:39 +0000

git-core (1:1.5.2.5-1) unstable; urgency=low

  * debian/control: fix typo in Build-Depends: libcurl4-gnutls-dev |
    libcurl3-gnutls-dev (thx Mikael Eriksson, closes: #433196).
  * new upstream point release.
  * debian/rules: add TCLTK_PATH=/usr/bin/wish8.4 to OPTS (closes: #438662).
  * dbian/control: git-core: Depends: cpio (closes: #438057).
  * debian/git-core.README.Debian: fix typos (closes: #438932).
  * debian/versions.upstream, debian/changelog.upstream: adapt.
  * debian/rules, debian/control: install git-completion.bash from contrib as
    /etc/bash_completion.d/git; git-core: Conflicts:, Provides:, Replaces:
    git-completion (closes: #437532, thx Sebastian Harl).

 -- Gerrit Pape <pape@smarden.org>  Sat, 25 Aug 2007 17:56:20 +0000

git-core (1:1.5.3~rc4-1) experimental; urgency=low

  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Sat, 04 Aug 2007 13:02:05 +0000

git-core (1:1.5.3~rc3-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/versions.upstream, debian/changelog.upstream: adapt.

 -- Gerrit Pape <pape@smarden.org>  Fri, 27 Jul 2007 11:13:52 +0000

git-core (1:1.5.3~rc2-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/????-Pack-objects-properly-initialize-the-depth-value.diff:
    remove; obsolete.
  * debian/control, debian/rules: remove git-p4 package again, moved into
    contrib/ upstream; see /usr/share/doc/git-core/contrib/p4import/.
  * debian/versions.upstream, debian/changelog.upstream: adapt.

 -- Gerrit Pape <pape@smarden.org>  Fri, 20 Jul 2007 08:47:45 +0000

git-core (1:1.5.3~rc1-1) experimental; urgency=low

  * new upstream release candidate.
    * git-commit: don't add multiple Signed-off-by: from the same identity
      (closes: #430851).
    * Fix core.sharedRepository = 2 (closes: #432698).
  * merge branch debian-sid.
  * debian/versions.upstream, debian/changelog.upstream: adapt.
  * debian/diff/0002-gitk-properly-resolve-ambiguity-if-argument-is-both.diff:
    remove; doesn't apply anymore.
  * debian/diff/0002-Pack-objects-properly-initialize-the-depth-value.diff:
    new; on upstream advice.

 -- Gerrit Pape <pape@smarden.org>  Sat, 14 Jul 2007 11:45:27 +0000

git-core (1:1.5.2.4-1) unstable; urgency=low

  * new upstream point release.
  * debian/rules: build documentation with ASCIIDOC8=YesPlease (closes:
    #432560).
  * debian/control: Build-Depends: asciidoc (>> 8.0.0).
  * debian/diff/????-git-gui-properly-popup-error-if-gitk-should-be-start.diff:
    remove; merged upstream.
  * debian/control: Build-Depends: libcurl4-gnutls-dev | libcurl3-gnutsl-dev
    (closes: #432812).
  * debian/versions.upstream, debian/changelog.upstream: adapt.

 -- Gerrit Pape <pape@smarden.org>  Fri, 13 Jul 2007 19:13:38 +0000

git-core (1:1.5.3~rc0-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/changelog.upstream.sh: run git shortlog with option --no-merges.
  * debian/versions.upstream, debian/changelog.upstream: update.
  * debian/diff/0003-git-svn-trailing-slash-in-prefix-is-mandatory-with.diff,
    debian/diff/0004-git-cvsimport-force-checkout-of-working-tree-after-i.diff:
    remove; applied upstream.
  * debian/diff/00*.diff: adapt.
  * debian/rules: put git-gui, git-citool man pages into package git-gui.

 -- Gerrit Pape <pape@smarden.org>  Tue, 03 Jul 2007 10:01:12 +0000

git-core (1:1.5.2.3-1) unstable; urgency=low

  * new upstream point release.
  * debian/control: package git-gui: Replaces: git-core (<< 1:1.5.2.2-3)
    (thx Frank Lichtenheld, closes: #431481).
  * debian/versions.upstream, debian/changelog.upstream: update.

 -- Gerrit Pape <pape@smarden.org>  Tue, 03 Jul 2007 08:26:11 +0000

git-core (1:1.5.2.2-3) unstable; urgency=low

  * debian/rules: move /usr/share/git-gui/ from git-core package into
    git-gui package (thx Ansgar Burchardt, closes: #430530).
  * debian/diff/0004-git-cvsimport-force-checkout-of-working-tree-after-i.diff:
    new; git-cvsimport: force checkout of working tree after initial import
    (closes: #430903).
  * debian/diff/0005-git-gui-properly-popup-error-if-gitk-should-be-start.diff:
    new; git-gui: properly popup error if gitk should be started but is not
    installed (#429810).
  * debian/control: git-gui: Recommends: gitk (closes: #429810).
  * debian/rules: workaround #427907: compile with -O0 instead of -O2 on hppa
    (#429389).

 -- Gerrit Pape <pape@smarden.org>  Fri, 29 Jun 2007 12:54:39 +0000

git-core (1:1.5.2.2-2) unstable; urgency=low

  * debian/control: all Architecture: all packages: Depends: git-core (>>
    ${source:Upstream-Version}, git-core (<< ${source:Upstream-Version}-.)
    instead of (= ${source:Version}) to support binNMUs (closes: #423041,
    #430128).

 -- Gerrit Pape <pape@smarden.org>  Sat, 23 Jun 2007 14:02:36 +0000

git-core (1:1.5.2.2-1) unstable; urgency=low

  * new upstream point release.
    * Fix typo in remote branch example in git user manual (closes: #427502).
  * debian/diff/0003-git-branch-track-fix-tracking-branch-computation.diff:
    remove; applied upstream.
  * debian/versions.upstream: new; ordered list of upstream versions,
    starting with 1.0.0.
  * debian/changelog.upstream.sh: new; create changelog.upstream from git
    shortlog using debian/versions.upstream.
  * debian/changelog.upstream: re-created through changelog.upstream.sh.
  * debian/diff/0003-git-svn-trailing-slash-in-prefix-is-mandatory-with.diff:
    new; git-svn: trailing slash in prefix is mandatory with --branches/-b
    (closes: #429443).

 -- Gerrit Pape <pape@smarden.org>  Tue, 19 Jun 2007 17:32:30 +0000

git-core (1:1.5.2.1-2) unstable; urgency=low

  * debian/diff/0003-git-branch-track-fix-tracking-branch-computation.diff:
    new; from upstream master: git-branch --track: fix tracking branch
    computation.

 -- Gerrit Pape <pape@smarden.org>  Fri,  8 Jun 2007 09:04:47 +0000

git-core (1:1.5.2.1-1) unstable; urgency=low

  * new upstream point release.
    * Create a new manpage for the gitignore format, and reference it
      elsewhere (thx Josh Triplett, closes: #427078).
  * debian/diff/0002-gitk-properly-resolve-ambiguity-if-argument-is-both.diff:
    new; properly resolve ambiguity if argument is both, revision and
    filename (closes: #425491).
  * debian/control: git-core: Conflicts: git (<< 4.3.20-11) (/usr/bin/git
    transition).
  * debian/git-daemon-run.README.Debian: new (#422139).
  * debian/control: all Architecture: all packages: Depends: git-core
    (= ${source:Version}) instead of (>= ...); this makes it no longer
    support binNMUs (closes: #425494, reopens: #423041).

 -- Gerrit Pape <pape@smarden.org>  Sun, 03 Jun 2007 10:09:53 +0000

git-core (1:1.5.2-1) unstable; urgency=low

  * merge branch debian-experimental.
  * new upstream release.
    * gitweb: choose appropriate view for file type if a= parameter missing
      (closes: #410465).
    * git fetch -q is supported (closes: #423165).
  * /usr/bin/git transition (thx Ian Beckwith!).
    * debian/git-core.preinst: new; remove /usr/bin/git alternative if
      upgrading from versions older than 1:1.5.2~rc3-2.
    * debian/git-core.prerm, debian/git-core.postinst: remove; no longer
      handle /usr/bin/git alternative through update-alternatives.
    * debian/rules: no longer install git program as git-scm.

 -- Gerrit Pape <pape@smarden.org>  Wed, 30 May 2007 12:38:45 +0000

git-core (1:1.5.2~rc3-2) experimental; urgency=low

  * debian/diff/0000-maint-branch-from-20070514.diff: remove; obsolete.
  * debian/control: package git-p4: Section: contrib/devel (closes:
    #422755).
  * debian/control: package git-p4: Depends: git-core (>= ${source:Version})
    instead of (= ${Source-Version}) (to support binNMUs).

 -- Gerrit Pape <pape@smarden.org>  Tue, 15 May 2007 21:33:06 +0000

git-core (1:1.5.1.4-2) unstable; urgency=low

  * debian/diff/0000-maint-branch-from-20070514.diff: new; snapshot upstream
    maint branch 20070514:
    * includes git-svn fixes (closes: #423599, #423226).
  * deian/rules: reverse order when applying diffs (fix typo).
  * debian/control: all Architecture: all packages: Depends: git-core (>=
    ${source:Version}) instead of (= ${Source-Version}) (to support binNMUs,
    closes: #423041).

 -- Gerrit Pape <pape@smarden.org>  Mon, 14 May 2007 13:15:50 +0000

git-core (1:1.5.2~rc3-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/0002-Optimize-directory-listing-with-pathspec-limiter.diff:
    remove; included upstream.
  * debian/control: Build-Depends: tcl8.4 (for gitgui).
  * debian/rules: add symlink /etc/init.d/git-daemon -> /usr/bin/sv to
    git-daemon-run package (#422139).

 -- Gerrit Pape <pape@smarden.org>  Mon, 14 May 2007 10:10:02 +0000

git-core (1:1.5.1.4-1) unstable; urgency=medium

  * new upstream point release.
  * debian/diff/pager-vs-less.diff: rename to
    0001-pager.c-fallback-to-pager-not-less-if-PAGER-is.diff; adapt.
  * debian/diff/0002-Optimize-directory-listing-with-pathspec-limiter.diff:
    new: Optimize directory listing with pathspec limiter (closes: #420671).
  * debian/git-daemon-run.postinst: restart git-daemon service if it was
    running.

 -- Gerrit Pape <pape@smarden.org>  Wed, 09 May 2007 08:48:50 +0000

git-core (1:1.5.2~rc2-1) experimental; urgency=low

  * new upstream release candidate.

 -- Gerrit Pape <pape@smarden.org>  Mon, 07 May 2007 18:02:53 +0000

git-core (1:1.5.2~rc1-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/control, debian/rules: new package git-p4: tools for importing
    development history from perforce repositories.
  * debian/rules: add WITH_P4IMPORT=1 to OPTS; no longer install
    git-p4import.py into /usr/share/doc/git-core/contrib/; add OPTS to
    make clean in target clean:; add PYTHON_PATH=/usr/bin/python to OPTS.

 -- Gerrit Pape <pape@smarden.org>  Tue, 01 May 2007 12:28:15 +0000

git-core (1:1.5.1.3-1) unstable; urgency=low

  * new upstream point release.
    * git-add tried to optimize by finding common leading directories
      across its arguments but botched, causing very confused behaviour
      (closes: #420671).
    * Documentation/git-reset.txt: suggest git commit --amend in example
      (closes: #420112).
    * unofficial rpm.spec file shipped with git was letting ETC_GITCONFIG
      set to /usr/etc/gitconfig.  Tweak the official Makefile to make it
      harder for distro people to make the same mistake, by setting the
      variable to /etc/gitconfig if prefix is set to /usr (closes:
      #420675).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcement.

 -- Gerrit Pape <pape@smarden.org>  Tue, 01 May 2007 08:59:06 +0000

git-core (1:1.5.1.2-1) unstable; urgency=low

  * new upstream point release.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcement.

 -- Gerrit Pape <pape@smarden.org>  Sun, 22 Apr 2007 13:31:05 +0000

git-core (1:1.5.1.1-1) unstable; urgency=low

  * new upstream point release.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcement.
  * debian/diff/0010-rename-contrib-hooks-post-receieve-email-to-contrib.diff:
    remove; applied upstream.

 -- Gerrit Pape <pape@smarden.org>  Thu, 12 Apr 2007 09:05:44 +0000

git-core (1:1.5.1-1) unstable; urgency=low

  * new upstream release.
    * git-svn got almost a rewrite (closes: #416372).
  * debian/diff/git-cvsserver-update-hook.diff: remove; included upstream.
  * debian/diff/Documentation-git-svnimport.txt-fix-typo.diff,
    debian/diff/http-fetch-don-t-use-double-slash-as-directory-sepa.diff,
    debian/diff/Documentation-git-rev-parse.txt-fix-example-in-SPEC.diff:
    remove; applied upstream.
  * debian/diff/GNU-Hurd.diff: remove; obsolete.
  * debian/git-daemon-run.postrm: check for deluser being available, if
    not, print warning and don't remove system user (closes: #416755).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcement, and git shortlog.
  * debian/diff/0010-rename-contrib-hooks-post-receieve-email-to-contrib.diff:
    new; rename contrib/hooks/post-receieve-email to contrib/hooks/post-
    receive-email.

 -- Gerrit Pape <pape@smarden.org>  Wed,  4 Apr 2007 11:56:18 +0000

git-core (1:1.5.0.6-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/http-fetch-don-t-use-double-slash-as-directory-sepa.diff:
    new, cherry-pick'ed from upstream master: http-fetch: don't use
    double-slash as directory separator in URLs (closes: #409887).
  * debian/diff/Documentation-git-svnimport.txt-fix-typo.diff: new:
    Documentation/git-svnimport.txt: fix typo.
  * debian/diff/Documentation-git-rev-parse.txt-fix-example-in-SPEC.diff:
    new Documentation/git-rev-parse.txt: fix example in SPECIFYING RANGES
    (closes: #404795).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.

 -- Gerrit Pape <pape@smarden.org>  Thu, 29 Mar 2007 10:51:00 +0000

git-core (1:1.5.0.5-1) unstable; urgency=low

  * new upstream point release.
  * debian/rules: make sure subdirectories of /usr/share/doc/git-core/ are
    mode 0755 (closes: #415328); remove .gitignore file(s) from
    /usr/share/doc/git-core/ (closes: #413913).
  * debian/control: git-svn: Depends: libterm-readkey-perl (thx Pierre
    Habouzit, closes: #415475).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.

 -- Gerrit Pape <pape@smarden.org>  Wed, 21 Mar 2007 17:02:27 +0000

git-core (1:1.5.0.3-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/cvsexportcommit-.msg.diff: remove; applied upstream.
  * debian/git-core.docs, debian/git-doc.docs: add RelNotes.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.

 -- Gerrit Pape <pape@smarden.org>  Mon,  5 Mar 2007 19:44:05 +0000

git-core (1:1.5.0.2-1) unstable; urgency=low

  * new upstream point release.
  * debian/control: git-core: Conflicts: qgit (<< 1.5.5) (closes: #412452).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.
  * debian/diff/cvsexportcommit-.msg.diff: new; don't cleanup .msg if not
    yet committed to cvs (closes: #412732).

 -- Gerrit Pape <pape@smarden.org>  Wed, 28 Feb 2007 15:50:53 +0000

git-core (1:1.5.0.1-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/git-cvsserver-update-hook.diff: new from upstream pu branch:
    Have git-cvsserver call hooks/update before really altering the ref.
  * debian/control: git-cvs: Depends: libdbd-sqlite3-perl (git-cvsserver).

 -- Gerrit Pape <pape@smarden.org>  Sun, 25 Feb 2007 11:38:34 +0000

git-core (1:1.5.0-1) experimental; urgency=low

  * new upstream release.
  * debian/diff/archimport-empty-dir.diff: remove; applied upstream.
  * debian/diff/pager-vs-less.diff, debian/diff/Add-install-lib-target.diff:
    adapt.
  * debian/control: new package git-gui, the git graphical user interface;
    git-core: no longer Depends:, Build-Depends: rcs; git-core: Suggests:
    git-gui.
  * debian/rules: new package git-gui.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements and git shortlog.
  * debian/git-daemon/run: don't limit git-daemon's memory resources.
  * debian/control, debian/rules: remove git-core-dev package again,
    libgit.a is not a publically usable/useful library at this moment, as
    its internal API is not cast in stone yet.
  * debian/diff/Add-install-lib-target.diff: remove; there's no git-core-dev
    package.

 -- Gerrit Pape <pape@smarden.org>  Fri, 16 Feb 2007 07:18:44 +0000

git-core (1:1.5.0~rc3-1) experimental; urgency=low

  * new upstream release candidate.
  * debian/diff/Add-install-lib-target.diff: new; add install-lib target to
    install libgit.a library plus header files (thx Luca Falavigna).
  * debian/rules: new package git-core-dev; remove obsolete
    WITH_SEND_EMAIL=1, OPTIMIZE="..." from $(OPTS); remove
    WITH_OWN_SUBPROCESS_PY=1 from $(OPTS), it's no longer necessary (thx
    Luca Falavigna; closes: #403731); make git-p4import.pl available through
    /usr/share/doc/git-core/contrib/ (closes: #403387); minor cleanup.
  * debian/control: new package git-core-dev (thx Luca Falavigna; closes:
    #407722); no longer Build-Depends: python; git-core: no longer Recommends:
    python, Suggests: git-core-dev; update short and long descriptions
    (closes: #406323); git-arch: Depends: tla, instead of Suggests:.
  * debian/diff/GNU-Hurd.diff: adapt.
  * debian/diff/archimport-empty-dir.diff: new; git-archimport: initial import
    needs empty directory (closes: #400508).
  * debian/gitweb.README.Debian: typo.

 -- Gerrit Pape <pape@smarden.org>  Sat,  3 Feb 2007 09:32:48 +0000

git-core (1:1.4.4.4-1) unstable; urgency=low

  * new upstream release, important fixes:
    * pack-check.c::verify_packfile(): don't run SHA-1 update on huge data.
    * Fix infinite loop when deleting multiple packed refs.
    * diff --check: fix off by one error.
  * debian/diff/0001-spurious-.sp-in-manpages.diff: remove; included in
    upstream version.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcement.

 -- Gerrit Pape <pape@smarden.org>  Tue,  9 Jan 2007 19:43:56 +0000

git-core (1:1.4.4.3-1) unstable; urgency=medium

  * new upstream release (closes: #404796); important fixes:
    * Make sure the empty tree exists when needed in merge-recursive; the
      error message may make the user think that their database is corrupt
      when its actually not.
    * Don't use memcpy when source and dest. buffers may overlap.
    * cvsserver: Avoid miscounting bytes in Perl v5.8.x; this breaks the
      counting of bytes for the CVS protocol, resulting in the client
      expecting less data than we actually send, and storing truncated files.
  * debian/diff/0001-spurious-.sp-in-manpages.diff: new from upstream git;
    work around spurious .sp in manpages (closes: #388370).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcement.

 -- Gerrit Pape <pape@smarden.org>  Fri, 29 Dec 2006 07:38:15 +0000

git-core (1:1.4.4.2-1) unstable; urgency=low

  * new upstream release.
    * fixes FTBFS on m68k (thx Roman Zippel, closes: #402022).
  * 0001-archive-zip-don-t-use-sizeof-struct.diff,
    0002-git-svn-error-out-from-dcommit-on-a-parent-less-commit.diff,
    0003-git-svn-correctly-handle-revision-0-in-SVN-repositories.diff,
    0004-git-svn-preserve-uncommitted-changes-after-dcommit.diff,
    0005-Increase-length-of-function-name-buffer.diff: remove; obsolete.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements and git log | git shortlog.

 -- Gerrit Pape <pape@smarden.org>  Fri,  8 Dec 2006 19:13:49 +0000

git-core (1:1.4.4.1-1) unstable; urgency=low

  * new upstream release (closes: #400191).
  * 0001-archive-zip-don-t-use-sizeof-struct.diff: new from upstream git;
    replaces debian/diff/not-packed-structs.diff.
  * 0002-git-svn-error-out-from-dcommit-on-a-parent-less-commit.diff,
    0003-git-svn-correctly-handle-revision-0-in-SVN-repositories.diff,
    0004-git-svn-preserve-uncommitted-changes-after-dcommit.diff,
    0005-Increase-length-of-function-name-buffer.diff: new from upstream
    git.
  * debian/diff/genindex.diff: new; support subdirs in gitweb example index
    generator (thx David Nusinow; closes: #400284).
  * debian/diff/GNU-Hurd.diff, debian/diff/pager-vs-less.diff: adapt.

 -- Gerrit Pape <pape@smarden.org>  Sun, 26 Nov 2006 14:31:39 +0000

git-core (1:1.4.4-2) unstable; urgency=low

  * debian/diff/not-packed-structs.diff: new; don't use sizeof(struct ...),
    size doesn't match on arm (fixes selftests failure on arm).

 -- Gerrit Pape <pape@smarden.org>  Wed, 22 Nov 2006 23:31:11 +0000

git-core (1:1.4.4-1) unstable; urgency=low

  * new upstream release (closes: #399575).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.
  * debian/control: Build-Depends: unzip (for selftests).

 -- Gerrit Pape <pape@smarden.org>  Tue, 21 Nov 2006 09:43:37 +0000

git-core (1:1.4.3.5-1) unstable; urgency=low

  * new upstream release.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.

 -- Gerrit Pape <pape@smarden.org>  Mon, 13 Nov 2006 17:46:50 +0000

git-core (1:1.4.3.3-2) unstable; urgency=medium

  * debian/git-daemon-run.postinst: don't make the log service system user
    gitlog member of group adm, but nogroup; gitlog's home directory is
    /nonexistent (thx Florian Weimer, closes: #396687).
  * debian/git-daemon/log/run: make /var/log/git-daemon log directory mode
    2750, owner gitlog:adm.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.

 -- Gerrit Pape <pape@smarden.org>  Mon,  6 Nov 2006 20:12:08 +0000

git-core (1:1.4.3.3-1) unstable; urgency=low

  * new upstream release.
  * debian/diff/0001-Set-HOME-for-selftests.diff: remove; applied upstream.
  * debian/control: git-core: Depends: libdigest-sha1-perl (closes: #395304,
    thx Ichthyostega).

 -- Gerrit Pape <pape@smarden.org>  Tue, 31 Oct 2006 07:31:21 +0000

git-core (1:1.4.3.2-1) unstable; urgency=low

  * new upstream release.
  * debian/diff/gitweb.conf.diff: remove; obsolete.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.
  * debian/rules: add 'GITWEB_CONFIG=/etc/gitweb.conf mandir=/usr/share/man
    OPTIMIZE="-O2 -g -Wall" INSTALLDIRS=vendor' to build OPTS, adapt paths;
    git-arch: don't include git-archive, git-upload-archive; gitweb: install
    git-logo.png, git-favicon.png; git-core: properly install new Git.pm
    plus man page.
  * debian/diff/0001-Set-HOME-for-selftests.diff: new; set $HOME for
    selftests (fixes build/selftest failures).
  * debian/control: git-core: Depends: liberror-perl.

 -- Gerrit Pape <pape@smarden.org>  Tue, 24 Oct 2006 16:32:35 +0000

git-core (1:1.4.2.3-2) unstable; urgency=low

  * debian/control: new package git-daemon-run: provide a git-daemon
    service; git-core: no longer Suggests: runit, Depends: adduser, the
    git-daemon-run package now Depends: runit, adduser.
  * debian/debian/git-core.postinst, debian/git-daemon-run.postrm,
    debian/git-daemon-run.prerm: new; manage gitlog user and git-daemon
    service (closes: #388144).
  * debian/git-core.postinst: no longer adduser gitlog, git-daemon-run
    package does now.
  * debian/git-core.postrm: remove; obsolete.
  * debian/rules: install git-daemon service directory in the new
    git-daemon-run package instead of the git-core package.
  * debian/git-core.conffiles: rename to debian/git-daemon-run.conffiles.
  * debian/git-core.README.Debian: adapt.
  * debian/control: git-core: Suggests: git-daemon-run.

 -- Gerrit Pape <pape@smarden.org>  Sun,  8 Oct 2006 09:29:50 +0000

git-core (1:1.4.2.3-1) unstable; urgency=medium

  * new upstream release.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.
  * debian/diff/t3403-skip-3-7.diff: remove; git-am is fixed upstream.
  * debian/gitweb.conf: add $stylesheet = "/gitweb.css" (thx Christian
    Kujau, closes: #383065).

 -- Gerrit Pape <pape@smarden.org>  Sun,  8 Oct 2006 07:31:03 +0000

git-core (1:1.4.2.1-1) unstable; urgency=low

  * new upstream release (closes: #386820, #387405).
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcements.
  * debian/diff/GNU-Hurd.diff: new; make the build process detect and
    support the Debian GNU/Hurd architecture (thx Cyril Brulebois, closes:
    #379841).
  * debian/diff/GNU-kFreeBSD.diff: remove; applied upstream.
  * debian/rules: gitweb: install gitweb.css into /var/www/ instead of
    /usr/share/doc/gitweb/ (thx Matthijs Melchior, closes: #383065).
  * debian/gitweb.docs: remove; obsolete.
  * debian/examples/index.aux-generation: example script to generate an
    optional index.aux file for the use with gitweb (thx Matthew Wilcox,
    #383219).
  * debian/gitweb.examples: new; install debian/examples/index.aux-generation
    (#383219).
  * debian/git-core.README.Debian: new; hints on how to set up a
    git.example.org server providing git://, rsync://, http:// access to
    repositories from Matthew Wilcox (thx!, closes: #383219).
  * debian/gitweb.README.Debian: cleanup; refer to git-core.README.Debian.
  * debian/control: git-svn: Depends: libsvn-perl | libsvn-core-perl (thx
    Peter Samuelson); git-core, git-doc: Suggests: gitweb; gitweb:
    Recommends: git-doc.
  * debian/diff/pager-vs-less.diff, debian/diff/gitweb.conf.diff: adapt.
  * debian/git-daemon/: new; git-daemon service directory for the use with
    runit.
  * debian/control: Build-Depends: subversion, libsvn-perl | libsvn-core-perl
    (for git-svn selftests); git-core: Suggests: runit, Depends: adduser.
  * debian/diff/t3403-skip-3-7.diff: new; skip selftests 3,7 in t3403 as
    they fail without a terminal connected.
  * debian/git-core.conffiles: new; add /etc/sv/git-daemon/run,
    /etc/sv/git-daemon/log/run.

 -- Gerrit Pape <pape@smarden.org>  Fri, 15 Sep 2006 12:46:58 +0000

git-core (1:1.4.1.1-1) unstable; urgency=low

  * new upstream release.
  * debian/diff/GNU-kFreeBSD.diff: new; make the build process detect and
    support the Debian GNU/kFreeBSD architecture (thx Petr Salinger, closes:
    #380209).

 -- Gerrit Pape <pape@smarden.org>  Sat, 29 Jul 2006 15:31:04 +0000

git-core (1:1.4.1-2) unstable; urgency=low

  * adopt package gitweb, now included in git-core upstream source (thx
    Andres Salomon):
    * debian/control, debian/rules: build gitweb package.
    * debian/copyright: adapt.
    * debian/gitweb.README.Debian, debian/gitweb.conf, debian/gitweb.docs:
      new; taken from Andres' gitweb package.
    * debian/diff/gitweb.conf.diff: new; adapt Andres' gitweb.conf.patch.
    * debian/gitweb.conffiles: new; /etc/gitweb.conf.
  * debian/changelog: use epoch 1 to supersede gitweb-264 package version.
  * debian/rules: set DESTDIR in environment, not build flags.

 -- Gerrit Pape <pape@smarden.org>  Thu, 27 Jul 2006 21:44:06 +0000

git-core (1.4.1-1) unstable; urgency=low

  * new upstream release.
  * debian/changelog.upstream: upstream changes taken from mailing list
    announcement.
  * debian/rules: user same build flags and prefix to $(MAKE) in build
    and install target to prevent rebuild in install target.

 -- Gerrit Pape <pape@smarden.org>  Tue, 11 Jul 2006 21:38:33 +0000

git-core (1.4.0-1) unstable; urgency=low

  * new upstream release.
  * debian/changelog.upstream: new; upstream changes taken from mailing
    list announcement.
  * debian/rules: install debian/changelog.upstream as upstream changelog.
  * debian/diff/pager-vs-less.diff: adapt.
  * debian/control: Standards-Version: 3.7.2.0.

 -- Gerrit Pape <pape@smarden.org>  Wed, 14 Jun 2006 17:04:56 +0000

git-core (1.3.3-2) unstable; urgency=medium

  * debian/control: git-core: Depends: perl-modules (closes: #369737).
  * debian/diff/pager-vs-less.diff: new; fallback to `pager` not `less`
    if $PAGER is unset (closes: #369742).

 -- Gerrit Pape <pape@smarden.org>  Sat, 10 Jun 2006 11:18:48 +0000

git-core (1.3.3-1) unstable; urgency=low

  * new upstream release.

 -- Gerrit Pape <pape@smarden.org>  Thu, 25 May 2006 10:46:00 +0000

git-core (1.3.2-1) unstable; urgency=low

  * new upstream release.

 -- Gerrit Pape <pape@smarden.org>  Wed, 10 May 2006 20:41:39 +0000

git-core (1.3.1-1) unstable; urgency=low

  * new upstream release (closes: #364678).
  * debian/rules: install contrib/ directory into /usr/share/doc/git-core/.

 -- Gerrit Pape <pape@smarden.org>  Mon,  1 May 2006 13:01:42 +0000

git-core (1.2.6-1) unstable; urgency=low

  * new upstream release.
  * debian/control: git-cvs: Depends: cvsps (>> 2.1-0).

 -- Gerrit Pape <pape@smarden.org>  Sun, 16 Apr 2006 14:37:53 +0000

git-core (1.2.4-1) unstable; urgency=low

  * new upstream release (closes: #354563).

 -- Gerrit Pape <pape@smarden.org>  Fri,  3 Mar 2006 21:33:58 +0000

git-core (1.2.1-1) unstable; urgency=low

  * new upstream release (closes: #353041).
  * debian/control: git-core: Recommends: ssh-client instead of
    openssh-client (closes: #350708).

 -- Gerrit Pape <pape@smarden.org>  Thu, 16 Feb 2006 09:33:42 +0000

git-core (1.1.5-1) unstable; urgency=high

  * new upstream release.
    * checkout: do not make a temporary copy of symlink target.
      If the index records an insanely long symbolic link, copying
      into the temporary would overflow the buffer (noticed by Mark
      Wooding). (closes: #350274).

 -- Gerrit Pape <pape@smarden.org>  Sat, 28 Jan 2006 20:16:44 +0000

git-core (1.1.3-1) unstable; urgency=low

  * new upstream release.

 -- Gerrit Pape <pape@smarden.org>  Mon, 16 Jan 2006 10:19:37 +0000

git-core (1.0.8-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/t6001-rev-lisge-order.sh.diff: remove; applied upstream.
  * debian/control: Build-Depends: libcurl3-gnutls-dev | libcurl3-dev,
    python, asciidoc (>> 7.0.2-3) (ease backport to sarge, thx Norbert
    Tretkowski, closes: #344929).

 -- Gerrit Pape <pape@smarden.org>  Mon,  9 Jan 2006 19:19:36 +0000

git-core (1.0.6-1) unstable; urgency=low

  * new upstream point release.
  * debian/diff/t6001-rev-list-merge-order.sh.diff: new: fix skipping
    merge-order test with NO_OPENSSL=1.
  * debian/rules: re-enable git-rev-list --merge-order selftests.
  * debian/control: git-svn: Depends: libwww-perl (closes: #345045).

 -- Gerrit Pape <pape@smarden.org>  Mon,  2 Jan 2006 20:25:57 +0000

git-core (1.0.5-1) unstable; urgency=low

  * new upstream point release.
  * debian/rules: don't take upstream changelog from upstream
    debian/changelog.
  * debian/changelog.upstream: remove again.

 -- Gerrit Pape <pape@smarden.org>  Tue, 27 Dec 2005 13:25:53 +0000

git-core (1.0.3-1) unstable; urgency=low

  * new upstream point release.
  * debian/changelog.upstream: new: upstream changelog taken from upstream
    debian/changelog.
  * debian/rules: install debian/changelog.upstream as upstream changelog;
    remove obsolete VERSION variable.

 -- Gerrit Pape <pape@smarden.org>  Fri, 23 Dec 2005 14:58:14 +0000

git-core (1.0.0-1) unstable; urgency=medium

  * new upstream release: GIT 1.0.0.

 -- Gerrit Pape <pape@smarden.org>  Wed, 21 Dec 2005 16:17:18 +0000

git-core (0.99.9n-1) unstable; urgency=low

  * new upstream version: GIT 0.99.9n aka 1.0rc6.
  * debian/rules: rename git program in git-core package to git-scm,
    handle /usr/bin/git program through update-alternatives (as suggested
    by Ian Beckwith, see #342363).
  * debian/control: git-core: Conflicts: git (<< 4.3.20-8) (closes:
    #342363).
  * debian/git-core.postinst, debian/git-core.prerm: new: run
    update-alternatives --install /usr/bin/git git /usr/bin/git-scm with
    priority 70 on configure, and --remove on remove respectively.

 -- Gerrit Pape <pape@smarden.org>  Thu, 15 Dec 2005 11:24:51 +0000

git-core (0.99.9m-1) unstable; urgency=low

  * new upstream version: GIT 0.99.9m aka 1.0rc5.
    * sets PYTHONPATH for selftests (fixes autobuild test failures).
  * switch from tarball-in-tarball approach to original upstream tarball.
  * debian/changelog: add changelog history, Junio C Hamano, Ryan Anderson,
    Eric Biederman previously were maintaining this package unofficially.
  * debian/control: Build-Depends: rcs (for selftests); git-core:
    Recommends: patch, less, Suggests: cogito; git-arch: Suggests: tla,
    bazzar; git-cvs: Depends: cvsps, Suggests: cvs; git-svn: Depends:
    libsvn-core-perl (closes:#342617), Suggests: subversion; git-email:
    Depends: libmail-sendmail-perl, libemail-valod-perl; update short
    description (lots taken from upstream unofficial package, thx).
  * debian/git-core.docs, debian/git-doc.docs: adapt.
  * debian/rules: adapt; remove target unpack; add target patch; adapt
    target clean.

 -- Gerrit Pape <pape@smarden.org>  Wed, 14 Dec 2005 19:48:41 +0000

git-core (0.99.9l-1) unstable; urgency=low

  * new upstream version.
  * debian/rules: apply diffs with patch -p1.
  * debian/control, debian/rules: split off git-arch, git-cvs, git-svn,
    git-email packages, as suggested by upstream:
    http://article.gmane.org/gmane.comp.version-control.git/13185
  * debian/git-doc.docs: get docs from temporary install directory;
    include *.txt docs.
  * debian/control: git-doc: Section: doc; Suggests: git-core, git-arch,
    git-cvs, git-svn, git-email, gitk; git-core: Suggests: git-arch,
    git-cvs, git-svn, git-email, gitk.

 -- Gerrit Pape <pape@smarden.org>  Mon,  5 Dec 2005 18:04:37 +0000

git-core (0.99.9k-1) unstable; urgency=low

  * new upstream version.
  * debian/implicit: update to revision 1.11.
  * debian/git-doc.docs: add git/Documentation/howto,
    git/Documentation/technical (closes: #341178).

 -- Gerrit Pape <pape@smarden.org>  Tue, 29 Nov 2005 21:45:53 +0000

git-core (0.99.9j-1) unstable; urgency=low

  * initial version.
  * debian/control: git-core: Replaces: cogito (<< 0.16rc2-0); cogito >=
    0.16rc2-0 no longer includes the git core components, but depends on
    the git-core package (see #338789).

 -- Gerrit Pape <pape@smarden.org>  Fri, 18 Nov 2005 22:26:36 +0000

git-core (0.99.9j-0) unstable; urgency=low

  * GIT 0.99.9j aka 1.0rc3

 -- Junio C Hamano <junkio@cox.net>  Wed, 16 Nov 2005 20:39:55 -0800

git-core (0.99.9i-0) unstable; urgency=low

  * GIT 0.99.9i aka 1.0rc2

 -- Junio C Hamano <junkio@cox.net>  Mon, 14 Nov 2005 18:38:27 -0800

git-core (0.99.9h-0) unstable; urgency=low

  * GIT 0.99.9h

 -- Junio C Hamano <junkio@cox.net>  Fri, 11 Nov 2005 22:33:18 -0800

git-core (0.99.9g-0) unstable; urgency=low

  * GIT 0.99.9g

 -- Junio C Hamano <junkio@cox.net>  Wed,  9 Nov 2005 21:01:55 -0800

git-core (0.99.9f-0) unstable; urgency=low

  * GIT 0.99.9f

 -- Junio C Hamano <junkio@cox.net>  Tue,  8 Nov 2005 01:21:52 -0800

git-core (0.99.9e-0) unstable; urgency=low

  * GIT 0.99.9e

 -- Junio C Hamano <junkio@cox.net>  Sun,  6 Nov 2005 18:37:18 -0800

git-core (0.99.9d-0) unstable; urgency=low

  * GIT 0.99.9d

 -- Junio C Hamano <junkio@cox.net>  Sat,  5 Nov 2005 11:46:37 -0800

git-core (0.99.9c-0) unstable; urgency=low

  * GIT 0.99.9c

 -- Junio C Hamano <junkio@cox.net>  Thu,  3 Nov 2005 15:44:54 -0800

git-core (0.99.9b-0) unstable; urgency=low

  * GIT 0.99.9b

 -- Junio C Hamano <junkio@cox.net>  Tue,  1 Nov 2005 21:39:39 -0800

git-core (0.99.9a-0) unstable; urgency=low

  * GIT 0.99.9a

 -- Junio C Hamano <junkio@cox.net>  Sun, 30 Oct 2005 15:03:32 -0800

git-core (0.99.9.GIT-2) unstable; urgency=low

  * Build Dependency did not include libexpat-dev.

 -- Junio C Hamano <junkio@cox.net>  Sun, 13 Nov 2005 01:55:34 -0800

git-core (0.99.9.GIT-1) unstable; urgency=low

  * Do not scatter txt and html documentation into feature
    subpackages.  Do place man pages into them.
  * Capture more cvs stuff into git-cvs package.

 -- Junio C Hamano <junkio@cox.net>  Tue,  8 Nov 2005 01:19:06 -0800

git-core (0.99.9.GIT-0) unstable; urgency=low

  * Test Build.

 -- Junio C Hamano <junkio@cox.net>  Sat,  5 Nov 2005 11:18:13 -0800

git-core (0.99.9-1) unstable; urgency=low

  * Split the git-core binary package into core, doc, and foreign SCM
    interoperability modules.

 -- Junio C Hamano <junkio@cox.net>  Sat,  5 Nov 2005 11:18:13 -0800

git-core (0.99.9-0) unstable; urgency=low

  * GIT 0.99.9

 -- Junio C Hamano <junkio@cox.net>  Sat, 29 Oct 2005 14:34:30 -0700

git-core (0.99.8-0) unstable; urgency=low

  * GIT 0.99.8

 -- Junio C Hamano <junkio@cox.net>  Sun,  2 Oct 2005 12:54:26 -0700

git-core (0.99.7-0) unstable; urgency=low

  * GIT 0.99.7

 -- Junio C Hamano <junkio@cox.net>  Sat, 10 Sep 2005 18:36:39 -0700

git-core (0.99.6-0) unstable; urgency=low

  * GIT 0.99.6

 -- Junio C Hamano <junkio@cox.net>  Wed, 24 Aug 2005 23:09:35 -0700

git-core (0.99.5-1) unstable; urgency=low

  * Enable git-send-email on Debian.  There is no reason to shy
    away from it, since we have the necessary Perl modules available.

 -- Junio C Hamano <junkio@cox.net>  Thu, 25 Aug 2005 14:16:59 -0700

git-core (0.99.5-0) unstable; urgency=low

  * GIT 0.99.5

 -- Junio C Hamano <junkio@cox.net>  Wed, 10 Aug 2005 22:05:00 -0700

git-core (0.99.4-4) unstable; urgency=low

  * Mark git-tk as architecture neutral.

 -- Junio C Hamano <junkio@cox.net>  Fri, 12 Aug 2005 13:25:00 -0700

git-core (0.99.4-3) unstable; urgency=low

  * Split off gitk.
  * Do not depend on diff which is an essential package.
  * Use dh_movefiles, not dh_install, to stage two subpackages.

 -- Matthias Urlichs <smurf@debian.org>  Thu, 11 Aug 2005 01:43:24 +0200

git-core (0.99.4-2) unstable; urgency=low

  * Git 0.99.4 official release.

 -- Junio C Hamano <junkio@cox.net>  Wed, 10 Aug 2005 15:00:00 -0700

git-core (0.99.4-1) unstable; urgency=low

  * Pass prefix down to the submake when building.

 -- Junio C Hamano <junkio@cox.net>  Sat, 6 Aug 2005 13:00:00 -0700

git-core (0.99-2) unstable; urgency=low

  * Conflict with the GNU Interactive Tools package, which also installs
    /usr/bin/git.
  * Use the Mozilla SHA1 code and/or the PPC assembly in preference to
    OpenSSL.  This is only a partial fix for the license issues with OpenSSL.
  * Minor tweaks to the Depends.

 -- Ryan Anderson <ryan@michonline.com>  Sat, 23 Jul 2005 14:15:00 -0400

git-core (0.99-1) unstable; urgency=low

  * Update deb package support to build correctly. 

 -- Ryan Anderson <ryan@michonline.com>  Thu, 21 Jul 2005 02:03:32 -0400

git-core (0.99-0) unstable; urgency=low

  * Initial deb package support

 -- Eric Biederman <ebiederm@xmission.com>  Tue, 12 Jul 2005 10:57:51 -0600
