<<<<<<<
test (2.0-1) unstable; urgency=low
=======
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.
  * Line 4.
  * Line 5.

 -- 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
