$ cat >> $HGRCPATH <<EOF
> [web]
> push_ssl = false
> 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
$ echo "obsolete=$(echo $(dirname $TESTDIR))/hgext/obsolete.py" >> $HGRCPATH
$ echo "evolution=$(echo $(dirname $TESTDIR))/hgext/evolution.py" >> $HGRCPATH
$ mkcommit() {
> echo "$1" > "$1"
> hg add "$1"
> hg ci -m "add $1"
> }
various init
$ hg init local
$ cd local
$ hg states ready # XXX should be put in default config when state support it
$ mkcommit a
$ mkcommit b
$ mkcommit c
$ mkcommit d
$ hg up 1
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ mkcommit e -q
created new head
$ mkcommit f
$ hg published 1
$ hg qlog
5 - e44648563c73 add f (ready)
4 - fbb94e3a0ecf add e (ready)
3 - 47d2a3944de8 add d (ready)
2 - 4538525df7e2 add c (ready)
1 - 7c3bad9141dc add b (published)
0 - 1f0dee641bb7 add a (published)
test simple kill
$ hg kill 5
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
working directory now at fbb94e3a0ecf
$ hg qlog
4 - fbb94e3a0ecf add e (ready)
3 - 47d2a3944de8 add d (ready)
2 - 4538525df7e2 add c (ready)
1 - 7c3bad9141dc add b (published)
0 - 1f0dee641bb7 add a (published)
test multiple kill
$ hg kill 4 3
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
working directory now at 7c3bad9141dc
$ hg qlog
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