test (1.2-2) unstable; urgency=low

  * This is the last entry in changelog O.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 18:18:50 +0200

test (1.2-1) unstable; urgency=low

  * This entry should not have conflicts with Algorithm::Merge installed.
  * Changelog B should a have supplementary line above this one.
  * Pi is 3.14 is true for all changelogs.
  * Changelog A should have a supplementary line
    somewhere in this sub-list
    - The weather is nice
    - Yet I'm hacking on dpkg
    - What does that mean about me?
  * This line should be shared but the next one is dropped in B only.
  * If I'm here it's because the changelog is not B (I should not appear
    in the resulting changelog).

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 18:09:07 +0200

test (1.1-1+conflict2) unstable; urgency=low

  * This entry has a conflict on the next line.
  * I'm in changelog O (old).
  * This line is the same in all 3 versions.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 18:07:40 +0200

test (1.1-1+conflict1) unstable; urgency=low

  * This entry has conflicts on the header line: A wants distribution
    experimental (instead of unstable) and B wants urgency=high (instead
    of low).
  * But it also has a conflict on the trailer line. A changed the
    timestamp to 18:05:00 and B to 18:06:00.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 18:04:18 +0200

test (1.1-1+change2) unstable; urgency=low

  * This entry is everywhere but the last line is different in A. The
    merged version should have what's in A. Furthermore the timestamp in
    B is set to 17:55:00, it should also be picked up.
  * I'm not in changelog A.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:54:52 +0200

test (1.1-1+change1) unstable; urgency=low

  * This entry is everywhere but the last line is different in B. The
    merged version should have what's in B. Furthermore the urgency in
    A is set to high, it should also be picked up.
  * I'm not in changelog B.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:50:58 +0200

test (1.1-0.1) stable; urgency=low

  * This entry is present in O only, it should not appear in the merged
    changelog.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:49:15 +0200

test (1.0-3) unstable; urgency=low

  * This entry is dropped in A only.
  * Since it's in O and B, it should not appear in the result.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:41:31 +0200

test (1.0-2) unstable; urgency=low

  * This entry is dropped in B only.
  * Since it's in O and A, it should not appear in the result.
  * Pi is 3.14.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:39:15 +0200

test (1.0-1) unstable; urgency=low

  * Initial release. (Closes: #XXXXXX)

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:37:46 +0200
