git (1:2.43.0+next.20240104-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b435a96c.

 -- Josh Steadmon <steadmon@google.com>  Fri, 05 Jan 2024 10:07:45 -0800

git (1:2.43.0+next.20231221-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3460e3d6.

 -- Emily Shaffer <emilyshaffer@google.com>  Tue, 26 Dec 2023 07:29:41 -0800

git (1:2.43.0+next.20231215-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ebba9660.

 -- Calvin Wan <calvinwan@google.com>  Sat, 16 Dec 2023 00:01:10 +0000

git (1:2.43.0+next.20231120-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 3155946c.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 26 Nov 2023 18:00:52 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 26 Nov 2023 17:32:42 -0800

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

  * new upstream release (see RelNotes/2.41.0.txt, RelNotes/2.42.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 27 Sep 2023 09:55:42 -0700

git (1:2.40.1+next.20230427-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f1e218fc.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 28 Apr 2023 15:23:37 -0700

git (1:2.40.1+next.20230424-1) experimental; urgency=medium

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit c816e09b.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 25 Apr 2023 10:23:47 -0700

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

  * new upstream point release (see RelNotes/2.40.1.txt; addresses
    CVE-2023-25652, CVE-2023-25815 CVE-2023-29007).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 25 Apr 2023 10:16:34 -0700

git (1:2.40.0+next.20230319-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 86825d00.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Mar 2023 18:25:55 -0700

git (1:2.40.0+next.20230313-1) experimental; urgency=low

  [ Jonathan Tan ]
  * new snapshot, taken from upstream commit f938b093.

  [ Jonathan Nieder ]
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Mar 2023 16:59:19 -0700

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

  * new upstream release (see RelNotes/2.40.0.txt).
  * debian/git-doc.doc-base.{git-index-format,git-pack-format,git-protocol}:
    remove from documentation index, as the main git(1) reference
    manual is the main entry point to find these.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Mar 2023 16:50:00 -0700

git (1:2.39.2-1.1) unstable; urgency=medium

  * Non-maintainer upload (only changes to git-doc).
  * Correct paths in git-doc doc-base control files (Closes: #1023255)

 -- Matthew Vernon <matthew@debian.org>  Tue, 28 Feb 2023 09:25:32 +0000

git (1:2.39.2+next.20230215-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 279f198d.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 15 Feb 2023 17:26:32 -0800

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

  * new upstream point release (see RelNotes/2.39.2.txt).  Addresses
    CVE-2023-22490 and CVE-2023-23946.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 15 Feb 2023 17:08:12 -0800

git (1:2.39.1-0.1) unstable; urgency=medium

  * Non-maintainer upload.
  * New upstream stable release (Closes: #1029114)
    Fixes CVE-2022-23521 and CVE-2022-41903.

 -- Aron Xu <aron@debian.org>  Thu, 26 Jan 2023 13:43:04 +0800

git (1:2.39.1+next.20230209-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 21b0678d.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 10 Feb 2023 12:23:46 -0800

git (1:2.39.1+next.20230203-1) experimental; urgency=low

  * new snapshot, taken from upstream commit bfd45094.

 -- Glen Choo <chooglen@google.com>  Mon, 06 Feb 2023 02:43:30 +0000

git (1:2.39.1+next.20230126-1) experimental; urgency=low

  * new snapshot, taken from upstream commit cb327c4b.

 -- Glen Choo <chooglen@google.com>  Fri, 27 Jan 2023 02:24:32 +0000

git (1:2.39.1+next.20230121-1) experimental; urgency=low

  * new snapshot, taken from upstream commit fc5497dd.

 -- Glen Choo <chooglen@google.com>  Mon, 23 Jan 2023 16:17:30 +0000

git (1:2.39.1+next.20230117-1) experimental; urgency=low

  * new snapshot, taken from upstream commit d4c25cc7.

 -- Calvin Wan <calvinwan@google.com>  Wed, 18 Jan 2023 21:46:29 +0000

git (1:2.39.0+next.20230105-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 2a6d74b5.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 06 Jan 2023 14:54:09 -0800

git (1:2.39.0+next.20221226-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 74172e4d.

 -- Emily Shaffer <emilyshaffer@google.com>  Tue, 27 Dec 2022 12:57:21 -0800

git (1:2.39.0+next.20221220-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a5737674.

 -- Calvin Wan <calvinwan@google.com>  Thu, 22 Dec 2022 22:38:54 +0000

git (1:2.39.0+next.20221216-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 31fb33b8.

 -- Glen Choo <chooglen@google.com>  Fri, 16 Dec 2022 18:32:46 +0000

git (1:2.39.0+next.20221212-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 84b9a713.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 12 Dec 2022 13:02:04 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 12 Dec 2022 12:53:44 -0800

git (1:2.38.1+next.20221115-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 9dadac03.

 -- Glen Choo <chooglen@google.com>  Thu, 17 Nov 2022 22:11:54 +0000

git (1:2.38.1+next.20221108-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0f3c55d4.

 -- Calvin Wan <calvinwan@google.com>  Fri, 11 Nov 2022 21:27:50 +0000

git (1:2.38.1+next.20221103-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 58b659f9.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 04 Nov 2022 15:52:40 -0700

git (1:2.38.1+next.20221031-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 9c842762.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 31 Oct 2022 18:49:59 -0700

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

  * new upstream release (closes: #1022046; see RelNotes/2.38.0.txt,
    RelNotes/2.38.1.txt).
    * Addresses the security issue CVE-2022-39253: cloning an
      attacker-controlled local repository could store arbitrary files
      in the ".git" directory of the destination repository.

      Thanks to Cory Snider of Mirantis for reporting this
      vulnerability and Taylor Blau for the mitigation.

    * Addresses CVE-2022-39260: a long command string passed to a `git
      shell` configured to support custom commands could overflow and
      run arbitrary code.

      Thanks to Kevin Backhouse of GitHub for reporting this
      vulnerability and Kevin Backhouse, Jeff King, and Taylor Blau
      for mitigating it.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 31 Oct 2022 18:32:00 -0700

git (1:2.37.2+next.20220812-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 9ff673ca.
  * remove separate doc-base entries for format and protocol docs
    that moved to the main reference manual.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 12 Aug 2022 19:48:49 -0700

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

  * new upstream release (closes: #1016723; see RelNotes/2.37.0.txt,
    RelNotes/2.37.1.txt, RelNotes/2.37.2.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 12 Aug 2022 19:27:24 -0700

git (1:2.36.1+next.20220505-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 7c58a9bb.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 09 May 2022 12:47:11 -0700

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

  * new upstream point release (closes: #1010720; see
    RelNotes/2.36.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 09 May 2022 12:43:15 -0700

git (1:2.36.0+next.20220504-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b0908517.

 -- Glen Choo <chooglen@google.com>  Fri, 06 May 2022 17:13:03 +0000

git (1:2.36.0+next.20220428-1) experimental; urgency=low

  * new snapshot, taken from upstream commit e40c2bad.

 -- Josh Steadmon <steadmon@google.com>  Fri, 29 Apr 2022 14:09:36 -0700

git (1:2.36.0+next.20220417-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit b9c8b46e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 22 Apr 2022 16:52:04 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 22 Apr 2022 16:43:03 -0700

git (1:2.36.0~rc2+next.20220414-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 8af0fa9b.

 -- Calvin Wan <calvinwan@google.com>  Fri, 15 Apr 2022 20:05:56 +0000

git (1:2.36.0~rc2+next.20220411-1.1) experimental; urgency=medium

  * debian/patches: update version number to reflect the last set
    of updates.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 12 Apr 2022 22:47:38 -0700

git (1:2.36.0~rc2+next.20220411-1) experimental; urgency=medium

  * merge branch debian-sid.
  * new upstream release candidate (see RelNotes/2.36.0.txt).
  * new snapshot, taken from upstream commit 64f902a3.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 12 Apr 2022 22:30:42 -0700

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

  * new upstream point release (see RelNotes/2.35.2.txt).
    * Addresses the security issue CVE-2022-24765: Git users might
      have found themselves unexpectedly in a Git worktree, e.g. when
      another user created a repository in `/tmp/.git`, in a mounted
      network drive or in a scratch space. Having a Git-aware prompt
      that runs `git status` (or `git diff`) and navigating to a
      directory which is supposedly not a Git worktree, or opening
      such a directory in an IDE with Git support such as VS Code,
      could then run commands specified by that other user.

      Thanks to 俞晨东 for discovering this vulnerability and
      Johannes Schindelin for the mitigation.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 12 Apr 2022 21:25:57 -0700

git (1:2.35.1+next.20220211-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 83b2b277.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 14 Feb 2022 10:02:19 -0800

git (1:2.35.1+next.20220128-1) experimental; urgency=low

  * merge branch debian-sid.

  [ Glen Choo ]
  * new snapshot, taken from upstream commit 69c8d714.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 14 Feb 2022 08:33:52 -0800

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

  * new upstream release (see RelNotes/2.35.0.txt, RelNotes/2.35.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 14 Feb 2022 08:24:39 -0800

git (1:2.35.0~rc2+next.20220123-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 8bbb0825.

 -- Emily Shaffer <emilyshaffer@google.com>  Mon, 24 Jan 2022 11:13:14 -0800

git (1:2.35.0~rc0+next.20220112-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 00780c9a.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 14 Jan 2022 11:33:10 -0800

git (1:2.34.1+next.20220106-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 22d0c6cc.

 -- Glen Choo <chooglen@google.com>  Fri, 07 Jan 2022 22:27:40 +0000

git (1:2.34.1+next.20211227-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 55b058a8.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 30 Dec 2021 13:55:35 -0800

git (1:2.34.1+next.20211221-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c39506ec.

 -- Josh Steadmon <steadmon@google.com>  Thu, 23 Dec 2021 09:42:08 -0800

git (1:2.34.1+next.20211215-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a2b2bfdf.

 -- Jonathan Tan <jonathantanmy@google.com>  Thu, 16 Dec 2021 13:51:01 -0800

git (1:2.34.1+next.20211208-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 9b7440fa.

 -- Glen Choo <chooglen@google.com>  Fri, 10 Dec 2021 20:33:23 +0000

git (1:2.34.1+next.20211202-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 76aa8bc2.

 -- Josh Steadmon <steadmon@google.com>  Fri, 03 Dec 2021 15:14:33 -0800

git (1:2.34.1+next.20211124-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit a245620fa.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Nov 2021 11:08:41 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Nov 2021 11:04:56 -0800

git (1:2.34.0+next.20211119-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit b44f4d0e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 20 Nov 2021 13:27:13 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 20 Nov 2021 13:14:45 -0800

git (1:2.33.1+next.20211025-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 21588131.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Oct 2021 15:23:00 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Oct 2021 15:02:19 -0700

git (1:2.33.0+next.20211006-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 6e70778d.

 -- Josh Steadmon <steadmon@google.com>  Fri, 08 Oct 2021 12:22:25 -0700

git (1:2.33.0+next.20210929-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 93a45727.

 -- Jonathan Nieder <jrn@google.com>  Mon, 04 Oct 2021 10:36:38 -0700

git (1:2.33.0+next.20210923-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4c38ced6.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 24 Sep 2021 16:16:02 -0700

git (1:2.33.0+next.20210915-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 46640cef.

 -- Josh Steadmon <steadmon@google.com>  Fri, 17 Sep 2021 10:44:23 -0700

git (1:2.33.0+next.20210908-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 1972c593.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 10 Sep 2021 11:07:23 -0700

git (1:2.33.0+next.20210901-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3052b894.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 03 Sep 2021 12:15:15 -0700

git (1:2.33.0+next.20210824-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ba50c8fa.

 -- Emily Shaffer <emilyshaffer@google.com>  Mon, 30 Aug 2021 11:55:57 -0700

git (1:2.33.0+next.20210819-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c128427f.

 -- Josh Steadmon <steadmon@google.com>  Fri, 20 Aug 2021 12:22:58 -0700

git (1:2.33.0+next.20210816-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 9b09ab0c.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Aug 2021 18:10:05 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Aug 2021 17:54:01 -0700

git (1:2.32.0+next.20210606-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 935e5933.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 06 Jun 2021 14:41:59 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 06 Jun 2021 14:34:33 -0700

git (1:2.32.0~rc2+next.20210531-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * merge branch debian-sid.

  [ Josh Steadmon ]
  * new snapshot, taken from upstream commit af103e12.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 31 May 2021 15:13:57 -0700

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

  * new upstream release candidate.
  * remove git-el package (closes: #987264, #984931).  Since version
    1:2.18.0~rc2-1, it only contained modules that error out with a
    message pointing to other Emacs packages.  Nowadays users can
    use the README.emacs file from the git package for that instead.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 31 May 2021 15:02:28 -0700

git (1:2.32.0~rc0+next.20210521-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 9fa02ecf.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 21 May 2021 10:01:15 -0700

git (1:2.32.0~rc0+next.20210520-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 928e72b8.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 20 May 2021 13:24:45 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 20 May 2021 13:20:15 -0700

git (1:2.31.1+next.20210514-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 46aad6cb.

 -- Mingyu Wu <mwu@google.com>  Fri, 14 May 2021 11:24:46 -0700

git (1:2.31.1+next.20210507-1) experimental; urgency=low

  * new snapshot, taken from upstream commit d2f1c929.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 07 May 2021 15:40:25 -0700

git (1:2.31.1+next.20210430-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 51e8a6a4.

 -- Josh Steadmon <steadmon@google.com>  Fri, 30 Apr 2021 10:13:44 -0700

git (1:2.31.1+next.20210420-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 47e6f169.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 23 Apr 2021 10:13:30 -0700

git (1:2.31.1+next.20210417-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 6c1eba8e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 19 Apr 2021 09:55:01 -0700

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

  * new upstream point release (see RelNotes/2.31.1.txt).
  * install dashed commands to /usr/lib again (thx Sven Joachim;
    closes: #985416).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 19 Apr 2021 09:23:57 -0700

git (1:2.31.0+next.20210315-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 576ba9dc.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 15 Mar 2021 19:38:52 -0700

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

  * new upstream release (see RelNotes/2.31.0.txt).
  * install dashed commands to /usr/libexec instead of /usr/lib (thx
    Chris Lamb for suggesting it through lintian).
  * remove compatibility code and NEWS.Debian entries that supported
    upgrades from versions before 1.7.9.5 (the version in Ubuntu
    12.04, which reached the end of extended security maintenance in
    April, 2019).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 15 Mar 2021 19:32:17 -0700

git (1:2.31.0~rc2+next.20210309-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 7f717746.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 09 Mar 2021 17:59:29 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 09 Mar 2021 17:45:38 -0800

git (1:2.31.0~rc2+next.20210304-1) experimental; urgency=low

  * new upstream release candidate (see RelNotes/2.31.0.txt).
  * new snapshot, taken from upstream commit cd05c9c8.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 04 Mar 2021 21:46:50 -0800

git (1:2.30.1+next.20210217-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b4fecdf3.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 19 Feb 2021 13:16:18 -0800

git (1:2.30.1+next.20210212-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 45526154.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 16 Feb 2021 22:03:16 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 16 Feb 2021 21:55:22 -0800

git (1:2.30.0+next.20210203-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 56c4b15f.

 -- Josh Steadmon <steadmon@google.com>  Fri, 05 Feb 2021 12:47:20 -0800

git (1:2.30.0+next.20210126-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 8a0d178c.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 29 Jan 2021 11:51:55 -0800

git (1:2.30.0+next.20210115-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 02bc6937.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Jan 2021 11:16:18 -0800

git (1:2.30.0+next.20210114-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5a11de01.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 15 Jan 2021 12:01:40 -0800

git (1:2.30.0+next.20210113-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a3ce2791.

 -- Emily Shaffer <emilyshaffer@google.com>  Wed, 13 Jan 2021 16:55:14 -0800

git (1:2.30.0+next.20210106-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 2bfb1c46.

 -- Josh Steadmon <steadmon@google.com>  Fri, 08 Jan 2021 11:12:16 -0800

git (1:2.30.0+next.20201227-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit d98b1dd5.
  * install dashed commands to /usr/libexec instead of /usr/lib (thx
    Chris Lamb for suggesting it through lintian).
  * remove compatibility code and NEWS.Debian entries that supported
    upgrades from versions before 1.7.9.5 (the version in Ubuntu
    12.04, which reached the end of extended security maintenance in
    April, 2019).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 28 Dec 2020 20:16:26 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 28 Dec 2020 16:22:30 -0800

git (1:2.30.0~rc2+next.20201223-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 0e31cd0e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 23 Dec 2020 15:50:14 -0800

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

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 23 Dec 2020 15:17:54 -0800

git (1:2.30.0~rc1+next.20201218-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 5298b911.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 21 Dec 2020 14:07:36 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 21 Dec 2020 13:58:04 -0800

git (1:2.30.0~rc0+next.20201215-1) experimental; urgency=low

  * new snapshot, taken from upstream commit bcca9488.

 -- Emily Shaffer <emilyshaffer@google.com>  Thu, 17 Dec 2020 10:49:52 -0800

git (1:2.29.2+next.20201208-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 45daf877.

 -- Josh Steadmon <steadmon@google.com>  Fri, 11 Dec 2020 10:44:53 -0800

git (1:2.29.2+next.20201203-1) experimental; urgency=low

  * new snapshot, taken from upstream commit fbc64c5a.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 04 Dec 2020 10:11:50 -0800

git (1:2.29.2+next.20201125-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a3fc446d.

 -- Jonathan Tan <jonathantanmy@google.com>  Mon, 30 Nov 2020 10:14:05 -0800

git (1:2.29.2+next.20201119-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 04529851.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 20 Nov 2020 10:03:14 -0800

git (1:2.29.2+next.20201112-1) experimental; urgency=low

  * new snapshot, taken from upstream commit aff20da3.

 -- Josh Steadmon <steadmon@google.com>  Fri, 13 Nov 2020 09:58:36 -0800

git (1:2.29.2+next.20201104-1) experimental; urgency=low

  * new snapshot, taken from upstream commit dc112182.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 06 Nov 2020 10:06:53 -0800

git (1:2.29.2+next.20201030-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 5d2a92d1.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 02 Nov 2020 09:40:42 -0800

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

  * new upstream point release (see RelNotes/2.29.2.txt).
  * debian/copyright: remove unused BSD-2-Clause text.  The last part
    of Git under that license was removed in v2.29.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 02 Nov 2020 09:33:37 -0800

git (1:2.29.1+next.20201023-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit e80a0c04.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Oct 2020 17:52:28 -0700

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

  * new upstream release (see RelNotes/2.29.0.txt).
  * update debian/copyright.
  * debian/control: Build-Depends: debhelper-compat (= 10)
    * debian/rules: run "dh --without autoreconf" to speed up build,
      since we don't use the autotools-generated configure script.
  * git-el: install elisp for the "emacs" flavor, too (thx Zack Weinberg;
    closes: #972871).  Breaks: emacsen-common (<< 3.0.0~) to avoid
    triggering on older systems where "emacs" was a virtual package.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Oct 2020 17:25:55 -0700

git (1:2.29.0~rc2+next.20201015-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 374f81d7.

 -- Josh Steadmon <steadmon@google.com>  Fri, 16 Oct 2020 13:44:36 -0700

git (1:2.29.0~rc1+next.20201008-1) experimental; urgency=low

  * new snapshot, taken from upstream commit fa9743e5.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 09 Oct 2020 11:32:41 -0700

git (1:2.28.0+next.20201004-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a647a899.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 04 Oct 2020 16:14:43 -0700

git (1:2.28.0+next.20200922-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 8561365e.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 25 Sep 2020 13:28:28 -0700

git (1:2.28.0+next.20200916-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b0816b6e.

 -- Josh Steadmon <steadmon@google.com>  Fri, 18 Sep 2020 15:20:06 -0700

git (1:2.28.0+next.20200910-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 6f77f65b.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 11 Sep 2020 10:09:59 -0700

git (1:2.28.0+next.20200903-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f4bc123c.

 -- Jonathan Tan <jonathantanmy@google.com>  Tue, 08 Sep 2020 10:18:43 -0700

git (1:2.28.0+next.20200827-1) experimental; urgency=low

  * new snapshot, taken from upstream commit e36021ee.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 28 Aug 2020 12:21:56 -0700

git (1:2.28.0+next.20200819-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5ffc5be6.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 21 Aug 2020 09:43:34 -0700

git (1:2.28.0+next.20200813-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 1956fa8f.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 14 Aug 2020 07:52:32 -0700

git (1:2.28.0+next.20200807-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ed08abb6.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Aug 2020 09:19:04 -0700

git (1:2.28.0+next.20200801-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b10cc799.

 -- Emily Shaffer <emilyshaffer@google.com>  Mon, 03 Aug 2020 10:04:30 -0700

git (1:2.28.0+next.20200726-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 6104cc2f.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Jul 2020 11:09:03 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Jul 2020 11:02:01 -0700

git (1:2.28.0~rc2+next.20200722-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit d0b3904b.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 22 Jul 2020 17:54:50 -0700

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

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 22 Jul 2020 17:36:57 -0700

git (1:2.28.0~rc1+next.20200716-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit e9626dbb.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 17 Jul 2020 18:54:10 -0700

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

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 17 Jul 2020 18:40:53 -0700

git (1:2.28.0~rc0+next.20200709-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * merge branch debian-sid.

  [ Josh Steadmon ]
  * new snapshot, taken from upstream commit f9edc3c8.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 13 Jul 2020 15:09:34 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 13 Jul 2020 15:03:55 -0700

git (1:2.27.0+next.20200701-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c38d7665.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 06 Jul 2020 16:30:15 -0700

git (1:2.27.0+next.20200629-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 050319c2.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Jun 2020 17:03:48 -0700

git (1:2.27.0+next.20200625-1) experimental; urgency=low

  [ Emily Shaffer ]
  * new snapshot, taken from upstream commit b9a2d1a0.

  [ Jonathan Nieder ]
  * debian/patches: contrib/subtree: adjust test to change in
    fmt-merge-msg (thx Đoàn Trần Công Danh).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Jun 2020 15:02:20 -0700

git (1:2.27.0+next.20200618-1) experimental; urgency=low

  * new snapshot, taken from upstream commit e8ba1cc9.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 19 Jun 2020 10:11:29 -0700

git (1:2.27.0+next.20200610-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c72c7da6.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 11 Jun 2020 16:54:09 -0700

git (1:2.27.0+next.20200602-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ba653c62.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 05 Jun 2020 10:43:25 -0700

git (1:2.27.0+next.20200531-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit e193c7cf.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 01 Jun 2020 10:16:03 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 01 Jun 2020 10:05:06 -0700

git (1:2.27.0~rc2+next.20200527-1) experimental; urgency=low

  * new snapshot, taken from upstream commit aada2199.

 -- Josh Steadmon <steadmon@google.com>  Fri, 29 May 2020 11:28:53 -0700

git (1:2.27.0~rc2+next.20200526-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 90737beb.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 26 May 2020 14:29:10 -0700

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

  * new upstream release candidate (closes: #757402).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 26 May 2020 14:27:25 -0700

git (1:2.27.0~rc0+next.20200515-1) experimental; urgency=low

  * merge branch debian-sid.

  [ Jonathan Tan ]
  * new snapshot, taken from upstream commit de8f92d6.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 May 2020 17:37:24 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 May 2020 16:57:41 -0700

git (1:2.26.2+next.20200508-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0e0b3e54.

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 08 May 2020 15:57:56 -0700

git (1:2.26.2+next.20200429-1) experimental; urgency=low

  * new snapshot, taken from upstream commit e9eca65c.

 -- Josh Steadmon <steadmon@google.com>  Fri, 01 May 2020 11:01:55 -0700

git (1:2.26.2+next.20200422-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 744177e7.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 24 Apr 2020 11:39:46 -0700

git (1:2.26.2+next.20200419-1.1) experimental; urgency=low

  * update version number (thx Jonathan Tan for catching it).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Apr 2020 11:36:52 -0700

git (1:2.26.2+next.20200419-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit f8c07b1a.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Apr 2020 11:11:25 -0700

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

  * new upstream point release (see RelNotes/2.26.2.txt).
    * Addresses the security issue CVE-2020-11008.

      With a crafted URL that contains a newline or empty host, or
      lacks a scheme, the credential helper machinery can be fooled
      into providing credential information that is not appropriate
      for the protocol in use and host being contacted.

      Unlike the vulnerability fixed in 2.26.1, the credentials are
      not for a host of the attacker's choosing.  Instead, they are
      for an unspecified host, based on how the configured
      credential helper handles an absent "host" parameter.

      The attack has been made impossible by refusing to work with
      underspecified credential patterns.

      Thanks to Carlo Arenas for reporting that Git was still
      vulnerable, Felix Wilhelm for providing the proof of concept
      demonstrating this issue, and Jeff King for promptly providing
      a corrected fix.

      Tested using the proof of concept at
      https://crbug.com/project-zero/2021.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Apr 2020 10:44:09 -0700

git (1:2.26.1+next.20200415-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 55bc3eb7.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 15 Apr 2020 17:19:41 -0700

git (1:2.26.1+next.20200413-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit d4255e2b.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 14 Apr 2020 13:41:43 -0700

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

  * new upstream point release (see RelNotes/2.26.1.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>  Tue, 14 Apr 2020 10:29:38 -0700

git (1:2.26.0+next.20200331-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * merge branch debian-sid.

  [ Josh Steadmon ]
  * new snapshot, taken from upstream commit 2183baf0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 14 Apr 2020 10:22:23 -0700

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

  * fixes to the (newly default) rebase --merge backend:
    * honor GIT_REFLOG_ACTION (thx Ian Jackson and Elijah Newren;
      closes: #955152).
    * avoid "nothing to do" error when fast-forwarding a branch with
      rebase.abbreviateCommands=true (thx Jan Alexander Steffens and
      Alban Gruin).
  * debian/control: downgrade Recommends by git-all on git-daemon-run
    to Suggests. The git-all package is a "batteries included" full
    installation of Git. Automatically running a daemon is not useful
    to most of its users.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 14 Apr 2020 10:09:37 -0700

git (1:2.26.0+next.20200325-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 33ef6b2f.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 27 Mar 2020 11:49:30 -0700

git (1:2.26.0+next.20200322-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * merge branch debian-sid.

  [ Jonathan Tan ]
  * new snapshot, taken from upstream commit b8618d28.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 23 Mar 2020 13:27:35 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 23 Mar 2020 13:19:36 -0700

git (1:2.26.0~rc2+next.20200316-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit e327a582.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Mar 2020 21:22:22 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Mar 2020 21:17:23 -0700

git (1:2.25.1+next.20200303-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5e7596f4.

 -- Emily Shaffer <emilyshaffer@google.com>  Mon, 09 Mar 2020 14:26:25 -0700

git (1:2.25.1+next.20200219-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 975e00fa.

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 28 Feb 2020 14:29:35 -0800

git (1:2.25.1+next.20200216-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit fbce0eb8.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 18 Feb 2020 17:33:55 -0800

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

  * new upstream point release (see RelNotes/2.25.1.txt).
  * update debian/copyright.
  * debian/control: remove Gerrit Pape from the Maintainer field,
    as requested. Thanks to Gerrit for putting together this
    package in a way that has been pleasant to maintain.
  * debian/rules: use "dpkg-architecture" instead of "uname -m" to
    retrieve host arch.  This makes the resulting "git version
    --build-options" more predictable when building for i386 on an
    amd64 machine (thx to Ceridwen for detecting this in reprotest).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 18 Feb 2020 17:26:36 -0800

git (1:2.25.0+next.20200212-1) experimental; urgency=low

  * new snapshot, taken from upstream commit cffb4d69

 -- Emily Shaffer <emilyshaffer@google.com>  Fri, 14 Feb 2020 11:52:21 -0800

git (1:2.25.0+next.20200205-1) experimental; urgency=low

  * new snapshot, taken from upstream commit bab2e86b

 -- Jonathan Tan <jonathantanmy@google.com>  Fri, 07 Feb 2020 19:40:50 +0000

git (1:2.25.0+next.20200130-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 125e21eb

 -- Jonathan Tan <jonathantanmy@google.com>  Mon, 03 Feb 2020 20:20:25 +0000

git (1:2.25.0+next.20200116-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3f081b08.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 22 Jan 2020 01:08:18 +0000

git (1:2.25.0+next.20200113-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * merge branch debian-sid.

  [ Emily Shaffer ]
  * new snapshot, taken from upstream commit 760bfbb3

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 14 Jan 2020 03:03:11 +0000

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

  * new upstream release (see RelNotes/2.25.0.txt).
  * build against Python 3 (thx Steve Langasek, closes: #948832).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 14 Jan 2020 02:58:47 +0000

git (1:2.25.0~rc2+next.20200110-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 21a285fb

 -- Josh Steadmon <steadmon@google.com>  Fri, 10 Jan 2020 15:07:58 -0800

git (1:2.25.0~rc2+next.20200108-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 32a0a45a.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 08 Jan 2020 22:12:09 -0800

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

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 08 Jan 2020 16:08:27 -0800

git (1:2.25.0~rc1+next.20200102-1) experimental; urgency=low

  [ Jonathan Nieder ]
  * merge branch debian-sid.

  [ Jonathan Tan ]
  * new snapshot, taken from upstream commit 88dfdc41

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 03 Jan 2020 15:16:40 -0800

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

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 03 Jan 2020 15:12:18 -0800

git (1:2.25.0~rc0+next.20191226-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit ca9f1ec9

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 27 Dec 2019 15:12:33 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 27 Dec 2019 15:08:51 -0800

git (1:2.24.1+next.20191209-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 99f4b37f.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 10 Dec 2019 13:24:43 -0800

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

  * update to use upstream tarball for 2.24.1.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 10 Dec 2019 13:21:59 -0800

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

  * new upstream point release (see RelNotes/2.24.1.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>  Mon, 09 Dec 2019 06:20:25 +0000

git (1:2.24.0+next.20191202-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 8f36a354.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 03 Dec 2019 18:34:14 -0800

git (1:2.24.0+next.20191125-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 34dc348e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Nov 2019 11:22:41 -0800

git (1:2.24.0+next.20191121-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a6e4e5af.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 22 Nov 2019 13:55:19 -0800

git (1:2.24.0+next.20191110-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 50b2267a.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 11 Nov 2019 08:34:37 -0800

git (1:2.24.0+next.20191104-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 9d3f5f5b.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 03 Nov 2019 22:19:25 -0800

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 03 Nov 2019 22:16:20 -0800

git (1:2.24.0~rc2+next.20191030-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 50e10028.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 30 Oct 2019 13:52:46 -0700

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

  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 30 Oct 2019 12:52:19 -0700

git (1:2.24.0~rc1+next.20191024-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit b1bccd3e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 24 Oct 2019 16:24:11 -0700

git (1:2.24.0~rc1-1) unstable; urgency=medium

  * new upstream release candidate.
    * test-tool: read --total as an int, not uint64 (thx John Paul Adrian
      Glaubitz; closes: #942674)

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 24 Oct 2019 15:44:01 -0700

git (1:2.24.0~rc0+next.20191018-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 954a8626.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 18 Oct 2019 15:18:12 -0700

git (1:2.24.0~rc0-1) unstable; urgency=medium

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 18 Oct 2019 15:15:37 -0700

git (1:2.23.0+next.20191011-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b869b98d.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 11 Oct 2019 10:51:22 -0700

git (1:2.23.0+next.20191004-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 56cf767b.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 04 Oct 2019 09:45:50 -0700

git (1:2.23.0+next.20190930-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 78d2f28e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 30 Sep 2019 10:12:37 -0700

git (1:2.23.0+next.20190918-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 18eeb5a2.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 20 Sep 2019 13:48:25 -0700

git (1:2.23.0+next.20190917-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b967887a.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 17 Sep 2019 15:37:52 -0700

git (1:2.23.0+next.20190909-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c4317032.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 13 Sep 2019 07:41:40 -0700

git (1:2.23.0+next.20190907-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c6a4ce50.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 09 Sep 2019 11:31:44 -0700

git (1:2.23.0+next.20190826-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0b9fbb37.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Aug 2019 23:49:46 -0700

git (1:2.23.0+next.20190816-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 17f5b755.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 18 Aug 2019 17:13:15 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 18 Aug 2019 16:58:15 -0700

git (1:2.23.0~rc1+next.20190807-1) experimental; urgency=low

  * new snapshot, taken from upstream commit bd704faa.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 07 Aug 2019 22:50:27 -0700

git (1:2.23.0~rc1+next.20190802-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit deed8033.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 02 Aug 2019 17:25:50 -0700

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

  * new upstream release candidate.
    * tests: sort output of hashmap iteration (closes: #933519)

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 02 Aug 2019 17:21:22 -0700

git (1:2.23.0~rc0+next.20190729-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 4dedae46.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Jul 2019 17:11:14 -0700

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

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

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Jul 2019 17:07:53 -0700

git (1:2.22.0+next.20190725-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0f2c4a37.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Jul 2019 10:32:07 -0700

git (1:2.22.0+next.20190719-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 10230214.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 22 Jul 2019 10:24:26 -0700

git (1:2.22.0+next.20190715-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 960e92d2.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 15 Jul 2019 17:12:38 -0700

git (1:2.22.0+next.20190703-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 264f2c81.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 08 Jul 2019 11:05:50 -0700

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

  * new upstream release (see RelNotes/2.21.0.txt, RelNotes/2.22.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 08 Jul 2019 10:50:51 -0700

git (1:2.22.0+next.20190701-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f4b79421.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 01 Jul 2019 15:42:19 -0700

git (1:2.22.0+next.20190617-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 172b71a6.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 19 Jun 2019 16:08:43 -0700

git (1:2.22.0+next.20190607-1) experimental; urgency=low

  * new snapshot, taken from upstream commit d8fdbe21.
  * new upstream release (see RelNotes/2.22.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Jun 2019 09:25:22 -0700

git (1:2.22.0~rc3+next.20190603-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 20b46463.
  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 04 Jun 2019 11:43:14 -0700

git (1:2.22.0~rc2+next.20190530-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f4fbbf30.
  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 03 Jun 2019 11:26:48 -0700

git (1:2.22.0~rc1+next.20190529-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5d7573a1.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 29 May 2019 13:58:03 -0700

git (1:2.22.0~rc1+next.20190519-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3120a182.
  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 May 2019 11:51:24 -0700

git (1:2.22.0~rc0+next.20190513-1) experimental; urgency=low

  * new snapshot, taken from upstream commit e745c3d2.
  * new upstream release candidate (see RelNotes/2.22.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 13 May 2019 10:49:50 -0700

git (1:2.21.0+next.20190425-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f2820cf0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 25 Apr 2019 16:10:28 -0700

git (1:2.21.0+next.20190422-1) experimental; urgency=low

  * new snapshot, taken from upstream commit bc5ef9b4.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 24 Apr 2019 19:19:32 -0700

git (1:2.21.0+next.20190410-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 511ec345.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 10 Apr 2019 08:03:32 -0700

git (1:2.21.0+next.20190320-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f8f67871.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 20 Mar 2019 14:07:40 -0700

git (1:2.21.0+next.20190311-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 810b269d.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 11 Mar 2019 11:46:45 -0700

git (1:2.21.0+next.20190305-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 471c308f.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 05 Mar 2019 11:20:56 -0800

git (1:2.21.0+next.20190224-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f09ad664.
  * new upstream release (see RelNotes/2.21.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Feb 2019 13:02:40 -0800

git (1:2.21.0~rc2+next.20190219-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a7da99ff.
  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 21 Feb 2019 11:32:14 -0800

git (1:2.21.0~rc0+next.20190208-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 878e2cd3.
  * new upstream release candidate (see RelNotes/2.21.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 11 Feb 2019 09:00:03 -0800

git (1:2.20.1+next.20190205-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b4d0f1c6.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 06 Feb 2019 10:31:47 -0800

git (1:2.20.1+next.20190129-1) experimental; urgency=low

  * new snapshot, taken from upstream commit fbb209ba.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 29 Jan 2019 14:41:58 -0800

git (1:2.20.1+next.20190118-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit aa96b0ce.
  * debian/control: specify branch in Vcs-Git field.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 21 Jan 2019 22:36:12 -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+next.20190110-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 9e740568.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 14 Jan 2019 11:09:39 -0800

git (1:2.20.1+next.20190104-1) experimental; urgency=low

  * new snapshot, taken from upstream commit d81d796e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 07 Jan 2019 10:19:58 -0800

git (1:2.20.1+next.20181228-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 81188d93.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 02 Jan 2019 11:09:53 -0800

git (1:2.20.1+next.20181215-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 653613c7.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 16 Dec 2018 16:56:12 -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+next.20181209-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit bc1bbc6f.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Dec 2018 11:13:11 -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+next.20181201-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit dbc3b298.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 02 Dec 2018 12:16:37 -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+next.20181124-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit f8505762.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 25 Nov 2018 11:51:58 -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.20.0~rc1+next.20181121-1) experimental; urgency=low

  * merge branch debian-sid.
  * new upstream release candidate.
  * new snapshot, taken from upstream commit 1dd7ef35.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 22 Nov 2018 14:56:40 -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.20.0~rc0+next.20181119-1) experimental; urgency=low

  * new upstream release candidate (see RelNotes/2.20.0.txt).
  * new snapshot, taken from upstream commit c7a69e6b.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 19 Nov 2018 10:38:44 -0800

git (1:2.19.1+next.20181107-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 8438c0b2.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 12 Nov 2018 16:55:39 -0800

git (1:2.19.1+next.20181105-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4ecb1133.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 05 Nov 2018 10:41:19 -0800

git (1:2.19.1+next.20181029-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4563a0d9.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 29 Oct 2018 14:59:57 -0700

git (1:2.19.1+next.20181026-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0250525e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 26 Oct 2018 11:58:28 -0700

git (1:2.19.1+next.20181019-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 500967bb.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 22 Oct 2018 10:47:18 -0700

git (1:2.19.1+next.20181018-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f89fd5e6.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 18 Oct 2018 09:54:16 -0700

git (1:2.19.1+next.20181012-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 152ad8e3.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 12 Oct 2018 15:45:50 -0700

git (1:2.19.1+next.20181009-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f3a00b50.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 09 Oct 2018 16:14:34 -0700

git (1:2.19.1+next.20181005-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit e82ca0e5.

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

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+next.20180924-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 76f2f5c1.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 01 Oct 2018 15:45:31 -0700

git (1:2.19.0+next.20180921-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 01d371f7.
  * debian/patches/0002-Revert-doc-Makefile-drop-doc-diff-...diff:
    remove; applied upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 24 Sep 2018 09:10:54 -0700

git (1:2.19.0+next.20180914-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 18242da7.
  * debian/patches/0002-Revert-doc-Makefile-drop-doc-diff-...diff:
    new; remove unnecessary doc-diff --clean step in "make clean"
    that requires git to already be installed.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 17 Sep 2018 11:35:59 -0700

git (1:2.19.0+next.20180910-1) experimental; urgency=low

  * new snapshot, taken from upstream commit dd90340f.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Sep 2018 13:39:24 -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+next.20180907-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit dfd0a480.
  * debian/patches:
    * 0001-http-backend-allow-empty-CONTENT_LENGTH: remove; applied
      upstream.
    * 0002-Revert-Merge-branch-sb-submodule-core-worktree.diff:
      remove; fixed upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 09 Sep 2018 21:37:19 -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+next.20180904-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5ba43deb.
  * debian/rules: target clean: don't remove t/t4256/1/mailinfo.c.orig.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 04 Sep 2018 16:47:38 -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+next.20180828-1) experimental; urgency=low

  * new snapshot, taken from upstream commit e57e33db.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 28 Aug 2018 13:52:49 -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.19.0~rc0+next.20180820-1) experimental; urgency=low

  * new upstream release candidate (see RelNotes/2.19.0.txt).
  * new snapshot, taken from upstream commit 281dcd1b.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Aug 2018 18:27:45 -0700

git (1:2.18.0+next.20180815-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a543ac7c.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 15 Aug 2018 18:13:11 -0700

git (1:2.18.0+next.20180808-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ffc8e1a3.
  * debian/patches/0002-subtree-test-*.diff, 0003-subtree-test-*.diff:
    remove; applied upstream.

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

git (1:2.18.0+next.20180724-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a71716f1.
  * debian/patches/0002-subtree-test-add-missing-to-chain.diff,
    0003-subtree-test-simplify-preparation-of-expected-results.diff:
    new from upstream: correct "git subtree" tests to pass with the
    new es/chain-lint-in-subshell checks.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 30 Jul 2018 12:25:28 -0700

git (1:2.18.0+next.20180718-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5c9ce644.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 23 Jul 2018 14:05:57 -0700

git (1:2.18.0+next.20180711-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 985f88cf.
  * debian/control: Standards-Version: 4.1.5.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Jul 2018 12:34:37 -0700

git (1:2.18.0+next.20180629-1) experimental; urgency=low

  * new snapshot, taken from upstream commit fac676df.
  * debian/control: Standards-Version: 4.1.4.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 02 Jul 2018 14:02:30 -0700

git (1:2.18.0+next.20180622-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ad0ab374.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Jun 2018 12:54:30 -0700

git (1:2.18.0+next.20180621-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3de2645b.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 21 Jun 2018 15:52:22 -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+next.20180619-1) experimental; urgency=low

  * new snapshot, taken from upstream commit d175cea4.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 20 Jun 2018 13:55:34 -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+next.20180614-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 013aa691.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Jun 2018 09:28:50 -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.18.0~rc1+next.20180611-1) experimental; urgency=low

  * new snapshot, taken from upstream commit cf134e62.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 11 Jun 2018 12:49:49 -0700

git (1:2.18.0~rc1+next.20180604-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 61856ae6.
  * new upstream release candidate (see RelNotes/2.18.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 04 Jun 2018 11:22:42 -0700

git (1:2.17.1+next.20180529-1) experimental; urgency=high

  * new snapshot, taken from upstream commit 55be9478.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 29 May 2018 10:32:30 -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+next.20180522-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f22659ad.
  * debian/README.emacs: describe removed emacs support.
  * debian/control: package git-el: describe transitional
    modules; Recommends: elpa-magit.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 22 May 2018 15:23:21 -0700

git (1:2.17.0+next.20180420-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b46fe60e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 23 Apr 2018 11:45:03 -0700

git (1:2.17.0+next.20180411-1) experimental; urgency=medium

  * new snapshot, taken from upstream commit ded63e76.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 11 Apr 2018 10:12:19 -0700

git (1:2.17.0+next.20180402-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0c872631.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 02 Apr 2018 13:00:14 -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.17.0~rc1+next.20180323-2) experimental; urgency=low

  * debian/patches: add back emacs modules that were removed from
    contrib/emacs.
  * add back git-el package to buy time to figure out a better
    migration path (thx Ami Fischman; see #893734).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 27 Mar 2018 10:16:19 -0700

git (1:2.17.0~rc1+next.20180323-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ba9d0f25.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Mar 2018 10:16:42 -0700

git (1:2.17.0~rc1+next.20180322-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4a561d2c.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 23 Mar 2018 10:00:08 -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.17~rc0+next.20180315-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 781580f0.
  * remove the git-el package since better alternatives exist
    (vc-annotate, vc-git, and magit) and the Git-provided Emacs lisp
    modules have been removed upstream.
  * README.emacs: describe alternatives to Git-provided elisp modules.
  * debian/control: git: Breaks: git-el to ensure it is cleaned up on
    upgrade; git: Suggests: elpa-magit.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 19 Mar 2018 15:47:24 -0700

git (1:2.16.2+next.20180309-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 6dcf76e1.
  * 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.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 12 Mar 2018 12:18:28 -0700

git (1:2.16.2+next.20180302-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 70988797.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 05 Mar 2018 11:07:50 -0800

git (1:2.16.2+next.20180221-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 2e18187d.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 23 Feb 2018 14:27:27 -0800

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+next.20180209-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4437f3f1.

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

git (1:2.16.1+next.20180123-1) experimental; urgency=low

  * new snapshot, taken from upstream commit de0f0111.
  * merge branch debian-sid.
  * debian/rules: stop installing bundled copy of CPAN Error and
    Mail::Address perl modules.
  * debian/control: git-email: Depends: libmailtools-perl for
    Mail::Address.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 05 Feb 2018 22:12:43 -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.16.1+next.20180121-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 94e5d3ea.
  * new upstream release (see RelNotes/2.16.0.txt).
  * new upstream point release (see RelNotes/2.16.1.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 22 Jan 2018 07:18:22 -0800

git (1:2.16.0~rc2+next.20180112-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 09355b53.
  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 16 Jan 2018 14:20:45 -0800

git (1:2.16.0~rc1+next.20180105-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 530d649a.
  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 08 Jan 2018 12:35:37 -0800

git (1:2.16.0~rc0+next.20171228-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4a4ac836.
  * new upstream release candidate (see RelNotes/2.16.0.txt).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 02 Jan 2018 14:23:08 -0800

git (1:2.15.1+next.20171219-1) experimental; urgency=low

  * new snapshot, taken from upstream commit cfbfd45e.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 22 Dec 2017 17:37: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+next.20171214-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b9897f46.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Dec 2017 10:21:55 -0800

git (1:2.15.1+next.20171208-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5279b801.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 11 Dec 2017 10:23:09 -0800

git (1:2.15.1+next.20171128-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 9478a660.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 29 Nov 2017 13:56:17 -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+next.20171127-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 2ccb3012.
  * debian/patches/0002-Documentation-allow-overriding-...diff: remove;
    no longer needed (thx Anders Kaseorg; see #782294).
  * debian/control: Build-Depends-Indep: asciidoc (>= 8.6.10).
  * debian/patches/0003-git-gui-sort-entries-in-optimized-tclIndex.diff:
    remove; applied upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Nov 2017 15:54:15 -0800

git (1:2.15.0+next.20171121-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 466bffb3.
  * debian/patches: update Normalize-generated-asciidoc-...diff,
    git-gui-Sort-entries-in-optimized-tclIndex.diff to the latest
    versions from upstream.
  * debian/control: Standards-Version: 4.1.0.0.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 21 Nov 2017 16:17:21 -0800

git (1:2.15.0+next.20171120-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 77a2e0dd.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Nov 2017 16:28:14 -0800

git (1:2.15.0+next.20171113-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0d8980c5.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 13 Nov 2017 10:46:00 -0800

git (1:2.15.0+next.20171106-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f294e3d9.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 06 Nov 2017 10:55:54 -0800

git (1:2.15.0+next.20171030-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c27cc4da.
  * merge branch debian-sid.

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

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+next.20171023-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 7e34df94.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 23 Oct 2017 10:23:48 -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+next.20171016-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 2b38de12.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Oct 2017 09:34:35 -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+next.20171009-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 36b669ed.
  * merge branch debian-sid.
  * update upstream changelog.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 09 Oct 2017 10:16:34 -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+next.20171002-1) experimental; urgency=low

  * new snapshot, taken from upstream commit cf0c6797.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 02 Oct 2017 10:31:16 -0700

git (1:2.14.2+next.20170926-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 60be5d43.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 26 Sep 2017 11:24:06 -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+next.20170925-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 2c7b836f.

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

git (1:2.14.1+next.20170914-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 8fa685d3.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Sep 2017 10:51:50 -0700

git (1:2.14.1+next.20170910-1) experimental; urgency=low

  * new snapshot, taken from upstream commit bb119729.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 11 Sep 2017 10:19:08 -0700

git (1:2.14.1+next.20170826-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f28d3303.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 28 Aug 2017 10:18:34 -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+next.20170811-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b18f417b.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 14 Aug 2017 12:30:36 -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+next.20170804-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 98096fd7.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 07 Aug 2017 11:36:48 -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.14.0~rc1+next.20170727-1) experimental; urgency=low

  * new upstream release candidate (see RelNotes/2.14.0.txt).
  * new snapshot, taken from upstream commit d1ce394f.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 31 Jul 2017 09:04:45 -0700

git (1:2.14.0~rc0+next.20170721-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 1c36432d.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 24 Jul 2017 10:44:03 -0700

git (1:2.14.0~rc0+next.20170713-1) experimental; urgency=low

  * new upstream release candidate (see RelNotes/2.14.0.txt).
  * new snapshot, taken from upstream commit d933b75a.
  * debian/patches/0001-pre-rebase-hook-capture...diff: remove;
    applied upstream.
  * merge branch debian-sid.
  * debian/.gitattributes: debian/changelog can be treated as a
    dpkg-format changelog file during merges.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 17 Jul 2017 12:21:36 -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+next.20170709-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 7449e964.
  * correct date in previous changelog entry.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Jul 2017 10:32:11 -0700

git (1:2.13.2+next.20170630-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 7f5404b1.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 30 Jun 2017 16:20:43 -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+next.20170626-1) experimental; urgency=low

  * merge branch debian-sid.
  * new snapshot, taken from upstream commit 09c95d1e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Jun 2017 15:25:13 -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+next.20170624-1) experimental; urgency=low

  * new snapshot, taken from upstream commit dfeb3b87.
  * merge branch debian-sid.
  * always build against PCRE v2 if libpcre2-dev is installed at
    build time instead of using build profiles to decide.  No longer
    Build-Depends: dpkg-dev (>= 1.17.14) or debhelper (>=
    9.20141010).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 26 Jun 2017 12:20:13 -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+next.20170621-1) experimental; urgency=low

  * new snapshot, taken from upstream commit de00cce3.
  * merge branch debian-sid.
  * build against PCRE v2 (thx to Ævar Arnfjörð Bjarmason for the
    suggestion).  The package can be built with "dpkg-buildpackage
    -Ppcre1" to use v1 again.  Build-Depends: dpkg-dev (>= 1.17.14),
    debhelper (>= 9.20141010).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 21 Jun 2017 16:24: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.13.1+next.20170615-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 7e3b11ae.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 19 Jun 2017 10:20:50 -0700

git (1:2.13.1+next.20170610-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3df88200.
  * update upstream changelog.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 12 Jun 2017 11:48:46 -0700

git (1:2.13.1+next.20170605-1) experimental; urgency=low

  * new upstream point release (see RelNotes/2.13.1.txt).
  * new snapshot, taken from upstream commit b3defc5c.
  * debian/patches/send-email-Net-SMTP-...diff: remove; applied
    upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 05 Jun 2017 09:13:22 -0700

git (1:2.13.0+next.20170530-2) experimental; urgency=low

  * debian/patches/send-email-Net-SMTP-...diff: new; git send-email:
    do not use Net::SMTP for starttls unless the module is new enough
    to support it.  Otherwise "git send-email" fails with "Can't
    locate object method "starttls"" when run with Perl versions
    before v5.21.5 (thx Eric Biggers).

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 31 May 2017 17:33:17 -0700

git (1:2.13.0+next.20170530-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 27d5fe0c.
  * debian/patches/0005-t5550-use-write_script-to-generate...diff,
    ..., 0018-usage.c-drop-set_error_handle.diff: remove; applied
    upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 30 May 2017 14:33:58 -0700

git (1:2.13.0+next.20170520-1) experimental; urgency=low

  * new snapshot, taken from upstream commit db65acc8.
  * debian/patches: apply bw/forking-and-threading series
    from upstream to avoid a deadlock when using alternative
    malloc implementations (thx Brandon Williams).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 22 May 2017 11:24:16 -0700

git (1:2.13.0+next.20170509-1) experimental; urgency=low

  * new upstream release (see RelNotes/2.13.0.txt).
  * debian/patches/shell-disallow-repo-names-beginning-with-dash.patch:
    remove; applied upstream.
  * new snapshot, taken from upstream commit 4ebf3021.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 15 May 2017 12:29:07 -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.13.0~rc2+next.20170508-2) experimental; urgency=high

  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 09 May 2017 16:38:03 -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.13.0~rc2+next.20170508-1) experimental; urgency=low

  * new upstream release candidate.
  * new snapshot, taken from upstream commit 57267f22.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 08 May 2017 11:07:45 -0700

git (1:2.13.0~rc1+next.20170430-1) experimental; urgency=low

  * new upstream release candidate.
  * new snapshot, taken from upstream commit 07d810a7.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 01 May 2017 11:33:03 -0700

git (1:2.13.0~rc0+next.20170423-1) experimental; urgency=low

  * new upstream release candidate.
  * new snapshot, taken from upstream commit 87b47781.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 24 Apr 2017 09:40:50 -0700

git (1:2.12.2+next.20170416-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 2cccc811.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 17 Apr 2017 15:40:22 -0700

git (1:2.12.2+next.20170411-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0e3151a2.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 11 Apr 2017 16:09:45 -0700

git (1:2.12.2+next.20170330-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 7642488e.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 03 Apr 2017 11:42:30 -0700

git (1:2.12.2+next.20170324-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 063fe858.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Mar 2017 10:07:46 -0700

git (1:2.12.1+next.20170322-1) experimental; urgency=low

  * new snapshot, taken from upstream commit e9c3154c.
  * debian/patches/0005-connect_work_tree_and_git_dir-...diff, ...,
    0023-builtin-read-tree-add-recurse-submodules-switch.diff: remove;
    applied upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 22 Mar 2017 18:55:20 -0700

git (1:2.12.1+next.20170320-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ab5fba24.
  * update debian/copyright.
  * debian/patches: update sb/checkout-recurse-submodules series
    from upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 20 Mar 2017 15:59:22 -0700

git (1:2.12.0+next.20170312-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 23dc2f6d.
  * debian/patches: update sb/checkout-recurse-submodules series
    from upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 13 Mar 2017 17:29:07 -0700

git (1:2.12.0+next.20170303-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a2ecc848 (closes: #857008).
  * debian/patches: update sb/checkout-recurse-submodules series
    from upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 07 Mar 2017 15:15:18 -0800

git (1:2.12.0~rc1+next.20170216-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 5b76565f.
  * update debian/copyright.
  * debian/patches/0010-remote-helpers-avoid-blind-fall-back-...diff:
    remove; applied upstream.
  * debian/patches/0003-submodule-prepare-for-recursive-...diff, ...,
    0007-Teach-checkout-to-recursively-checkout-submodules.diff:
    replace with the upstream sb/checkout-recurse-submodules series.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 17 Feb 2017 14:47:45 -0800

git (1:2.11.0+next.20170110-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 087da7b7.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 11 Jan 2017 23:04:53 -0800

git (1:2.11.0+next.20161227-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c69c2f50.
  * debian/patches/0010-remote-helpers-avoid-blind-fall-back-...diff:
    new from upstream: allow "git ls-remote" and "archive --remote"
    to run outside of any git repository again (closes: #849681).
  * debian/rules: run tests once and always produce verbose output.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 29 Dec 2016 16:38:07 -0800

git (1:2.11.0+next.20161222-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 1ede815b.
  * debian/patches/xdiff-Do-not-enable-XDL_FAST_HASH-by-default.diff:
    remove; fixed upstream.
  * merge branch debian-sid.

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

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+next.20161205-1) experimental; urgency=low

  * new snapshot, taken from upstream commit fb549caa.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 12 Dec 2016 14:01:07 -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.11.0~rc1+next.20161116-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 51e66c2f.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 16 Nov 2016 14:37:11 -0800

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.11.0~rc1+next.20161111-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 34139e25.
  * merge branch debian-sid.
  * git-sh-setup-Restore-sourcability-from-outside-script.diff:
    remove; applied upstream.

 -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 12 Nov 2016 15:20:11 -0800

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+next.20160414-1) experimental; urgency=low

  * new snapshot, taken from upstream commit eae769a9.
  * merge branch debian-sid.

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

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+next.20160316-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 39d40208.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 16 Mar 2016 20:06:28 -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+next.20160112-1) experimental; urgency=low

  * new snapshot, taken from upstream commit dc08a195.
  * merge branch debian-sid.

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

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+next.20151228-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0ac5344e.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 04 Jan 2016 12:38:25 -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.7.0~rc0+next.20151210-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4a846af9.
  * new upstream release candidate.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 10 Dec 2015 16:12:36 -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+next.20151204-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 362d2fc2.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 08 Dec 2015 12:04:36 -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+next.20151022-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b049f0a3.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 23 Oct 2015 12:03:54 -0700

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+next.20151009-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c021fdf2.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 12 Oct 2015 12:34:00 -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+next.20150928-1) experimental; urgency=low

  * new snapshot, taken from upstream commit dd505504.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 29 Sep 2015 13:01:23 -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.6.0~rc2+next.20150917-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3dd15c02.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 18 Sep 2015 12:56:24 -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.6.0~rc0+next.20150902-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f624c3db.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 02 Sep 2015 16:31:01 -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+next.20150817-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ab176083.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 19 Aug 2015 14:56:07 -0700

git (1:2.5.0+next.20150803-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f5e568e3.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Aug 2015 11:54:26 -0700

git (1:2.5.0+next.20150727-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0029c496.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 28 Jul 2015 11:02:30 -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.5.0~rc2+next.20150720-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 76e840be.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 21 Jul 2015 12:53:22 -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.4.3+next.20150611-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4eafbef7.
  * debian/diff/008-subtree-test-complete-chains.diff: new; subtree
    test: add "&&" where appropriate to avoid clobbering early
    failures with later successes (thx Jeff King for enforcing this
    in test-lib.sh).
  * update debian/copyright.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 12 Jun 2015 16:39:11 -0700

git (1:2.1.4+next.20141218-2) experimental; urgency=low

  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 19 Dec 2014 18:41:35 -0800

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+next.20141218-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 41e5f3a7.
  * merge branch debian-sid.
  * debian/diff/0009-*, 0010-*: remove; applied upstream.
  * debian/rules: use install-html target for git-subtree docs.
    This avoids installing git-subtree.html to the git-man
    package, as we have done by mistake since v2.2.0-rc0
    (closes: #768795).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 19 Dec 2014 16:28:19 -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+next.20141103-1) experimental; urgency=low

  * new snapshot, taken from upstream commit a3a616cf.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 04 Nov 2014 13:26:52 -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+next.20140919-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 7a54a76a.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 22 Sep 2014 18:03:12 -0700

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+next.20140815-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 7484e3b5.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 15 Aug 2014 16:16:14 -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~rc2+next.20140808-1) experimental; urgency=low

  * new snapshot, taken from upstream commit edb03e5a.
  * new upstream release candidate.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 08 Aug 2014 16:40:49 -0700

git (1:2.1.0~rc1+next.20140804-1) experimental; urgency=low

  * new snapshot, taken from upstream commit ae8bc8de.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 05 Aug 2014 14:31:29 -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+next.20140627-1) experimental; urgency=low

  * new snapshot, taken from upstream commit c6b07181.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 30 Jun 2014 14:46:20 -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+next.20140616-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f681aa8b.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 17 Jun 2014 16:28:45 -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+next.20140528-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 53183364.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 29 May 2014 14:11:19 -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+next.20140520-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 63647d4f.
  * merge branch debian-sid.
  * debian/rules: remove git-p4 manpage from the git-man and
    git-doc packages.  If a separate git-p4 package is created,
    it should not have to conflict with git-man or git-doc.
  * debian/rules: adjust for remote-bzr and remote-hg removal
    from git.git.
  * debian/control: no longer Build-Depends: bzr, python-bzrlib,
    locales-all.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 21 May 2014 11:37:23 -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+next.20140502-1) experimental; urgency=low

  * new snapshot, taken from upstream commit cfa251bb.
  * merge branch debian-sid.
  * debian/rules:
    * remove NO_PYTHON=1 now that the git_remote_helpers
      library has been removed.
    * remove git-p4 command from the git package.  It depends on
      Perforce, which is not part of Debian.
    * adjust for remote-bzr and remote-hg promotion from contrib.
  * debian/control: Build-Depends: python, locales-all.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 06 May 2014 11:11:19 -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+next.20140422-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4f984835.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 23 Apr 2014 11:19:16 -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+next.20140421-1) experimental; urgency=low

  * new snapshot, taken from upstream commit acc62aa9.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 22 Apr 2014 11:37:12 -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:2.0~next.20140415-1) experimental; urgency=low

  * new snapshot, taken from upstream commit eaba9156.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 16 Apr 2014 15:08:36 -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:2.0~next.20140404-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3e70902d.
  * debian/diff:
    * 0009-contrib-subtree-unset-prefix-before-proceeding.diff:
      remove; applied upstream.
    * 0010...0015: rename to 0009-*, ..., 0014-*.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 07 Apr 2014 14:52:00 -0700

git (1:2.0~next.20140318-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4596e3a5.
  * merge branch debian-sid.
  * update debian/copyright.

 -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 19 Mar 2014 16:31:37 -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:2.0~next.20140214-1) experimental; urgency=low

  * new snapshot, taken from upstream commit dc9e3eb9.
  * merge branch debian-sid.

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

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:2.0~next.20140207-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 34970086.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 07 Feb 2014 16:21:35 -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:2.0~next.20140127-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 0b1dcb53.
  * debian/diff/0015...0017: remove; applied upstream.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 28 Jan 2014 16:29:26 -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:2.0~next.20140123-1) experimental; urgency=low

  * new snapshot, taken from upstream commit f6678ce9.
  * update debian/copyright.
  * merge branch debian-sid.
  * debian/diff/0015-block-sha1-factor-out-get_be-and-...diff,
    ..., 0017-ewah-support-platforms-that-require-aligned-...diff:
    new from upstream: pack-bitmap: avoid unaligned reads on
    platforms that care (fixes build/selftest failures on sparc
    and armel).

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Jan 2014 13:09:48 -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:2.0~next.20140117-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 6fd479ea.

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 21 Jan 2014 12:49:20 -0800

git (1:2.0~next.20140113-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b139ac25.
  * update debian/copyright.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 16 Jan 2014 17:53:34 -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:2.0~next.20140107-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 4cdf8d04.
  * merge branch debian-sid.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 09 Jan 2014 15:10:22 -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:2.0~next.20131230-1) experimental; urgency=low

  * new snapshot, taken from upstream commit b83cf2e7.
  * 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).

 -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 03 Jan 2014 13:30:15 -0800

git (1:2.0~next.20131217-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 3e57c29e.
  * merge branch debian-sid.
  * debian/diff/0010-submodule-prepare-for-recursive-...diff, ...,
    0014-Teach-checkout-to-recursively-checkout-submodules.diff:
    new from the git-submod-enhancements project: recursively checkout
    submodules when requested by --recurse-submodules (thx Jens
    Lehmann; closes: #730521).

 -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 17 Dec 2013 17:13:25 -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:2.0~next.20131213-1) experimental; urgency=low

  * new snapshot, taken from upstream commit 523f7c43
    (closes: #730520).
  * debian/copyright: document where to get upstream tarball.
  * debian/diff:
    * 0001-remove-interpreter-line-from-shell-libraries.diff,
      0010-git-remote-mediawiki-do-not-remove-installed-...diff:
      remove; applied upstream.
    * 0002...0009: rename to 0001-*, ..., 0008-*.
    * 0009-record-version.diff: new; git and git-gui version
      strings computed by GIT-VERSION-GEN.
  * debian/rules install: no more need to include DESTDIR in
    mw-to-git INSTLIBDIR.

 -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Dec 2013 16:20:23 -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
