test (2.0-1) 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.
  * Line 4.
  * Line 5.

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

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
    - Really no clouds in the sky
    - 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 A.
=======
  * 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) experimental; urgency=low
=======
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:05:00 +0200
=======
 -- 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 definitely in changelog A.

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

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

  * 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+a) experimental; urgency=low

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

 -- Raphaël Hertzog <hertzog@debian.org>  Sun, 18 Apr 2010 17:44:39 +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
