--- a/tests/test-evolution.t Wed Sep 14 22:29:19 2011 +0200
+++ b/tests/test-evolution.t Mon Sep 19 01:11:10 2011 +0200
@@ -4,6 +4,9 @@
> allow_push = *
> [alias]
> qlog = log --template='{rev} - {node|short} {desc} ({state})\n'
+ > [diff]
+ > git = 1
+ > unified = 0
> [extensions]
> EOF
$ echo "states=$(echo $(dirname $TESTDIR))/hgext/states.py" >> $HGRCPATH
@@ -59,3 +62,131 @@
2 - 4538525df7e2 add c (ready)
1 - 7c3bad9141dc add b (published)
0 - 1f0dee641bb7 add a (published)
+ $ cd ..
+
+##########################
+importing Parren test
+##########################
+
+ $ cat << EOF >> $HGRCPATH
+ > [ui]
+ > logtemplate = "{rev}\t{bookmarks}: {desc|firstline} - {author|user}\n"
+ > EOF
+
+Creating And Updating Changeset
+===============================
+
+Setup the Base Repo
+-------------------
+
+We start with a plain base repo::
+
+ $ hg init main; cd main
+ $ hg states ready
+ $ cat >main-file-1 <<-EOF
+ > One
+ >
+ > Two
+ >
+ > Three
+ > EOF
+ $ echo Two >main-file-2
+ $ hg add
+ adding main-file-1
+ adding main-file-2
+ $ hg commit --message base
+ $ cd ..
+
+and clone this into a new repo where we do our work::
+
+ $ hg clone main work
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd work
+ $ hg states ready
+
+
+Create First Patch
+------------------
+
+To begin with, we just do the changes that will be the initial version of the changeset::
+
+ $ echo One >file-from-A
+ $ sed -i '' -e s/One/Eins/ main-file-1
+ $ hg add file-from-A
+
+So this is what we would like our changeset to be::
+
+ $ hg diff
+ diff --git a/file-from-A b/file-from-A
+ new file mode 100644
+ --- /dev/null
+ +++ b/file-from-A
+ @@ -0,0 +1,1 @@
+ +One
+ diff --git a/main-file-1 b/main-file-1
+ --- a/main-file-1
+ +++ b/main-file-1
+ @@ -1,1 +1,1 @@
+ -One
+ +Eins
+
+To commit it we just - commit it::
+
+ $ hg commit --message "a nifty feature"
+
+and place a bookmark so we can easily refer to it again (which we could have done before the commit)::
+
+ $ hg book feature-A
+
+
+Create Second Patch
+-------------------
+
+Let's do this again for the second changeset::
+
+ $ echo Two >file-from-B
+ $ sed -i '' -e s/Two/Zwie/ main-file-1
+ $ hg add file-from-B
+
+Before committing, however, we need to switch to a new bookmark for the second
+changeset. Otherwise we would inadvertently move the bookmark for our first changeset.
+It is therefore advisable to always set the bookmark before committing::
+
+ $ hg book feature-B
+ $ hg commit --message "another feature"
+
+So here we are::
+
+ $ hg book
+ feature-A 1:568a468b60fc
+ * feature-B 2:7b36850622b2
+
+
+Fix The Second Patch
+--------------------
+
+There's a typo in feature-B. We spelled *Zwie* instead of *Zwei*::
+
+ $ hg diff --change tip | grep -F Zwie
+ +Zwie
+
+Fixing this is very easy. Just change::
+
+ $ sed -i '' -e s/Zwie/Zwei/ main-file-1
+
+and **amend**::
+
+ $ hg amend --note "fix spelling of Zwei"
+
+The `--note` is our commit message for the *update* only. So its only purpose
+is to document the evolution of the changeset. If we use `--message` with
+`amend`, it replaces the commit message of the changeset itself.
+
+This results in a new single changeset for our amended changeset, and the old
+changeset plus the updating changeset are hidden from view by default::
+
+ $ hg log
+ 4 feature-B: another feature - test
+ 1 feature-A: a nifty feature - test
+ 0 : base - test