test (2.0-1~exp3) unstable; urgency=low

  * Version B with 2.0-1~exp3 contains only up to line 3 while version A
    with 2.0-1 contains the 5 lines. The resulting version should have the
    5 lines without conflict with Algorithm::Merge and a conflict without.
  * Line 1.
  * Line 2.
  * Line 3.

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

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.
  * I'm the added line mentionned below (B-only).
  * 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.

 -- 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 B.
  * 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=high

  * 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:06:00 +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 definitely in changelog B.

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

test (1.0-3+b) experimental; urgency=low

  * This entry is present in B only. It's considered new and should thus
    be in the merged changelog.

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:47:38 +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-1) unstable; urgency=low

  * Initial release. (Closes: #XXXXXX)

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