Mercurial > hg
view tests/test-repair-strip @ 12727:52971985be14
backout: provide linear backout as a default (without --merge option)
This changes backouts changeset to retain linear history, .e. it is committed
as a child of the working directory parent, not the reverted changeset
parent.
The default behavior was previously to just commit a reverted change as a
child of the backed out changeset - thus creating a new head. Most of
the time, you would use the --merge option, as it does not make sense to
keep this dangling head as is.
The previous behavior could be obtained by using 'hg update --clean .' after a
'hg backout --merge'.
The --merge option itself is not affected by this change. There is also
still an autocommit of the backout if a merge is not needed, i.e. in case
the backout is the parent of the working directory.
Previously we had (pwd = parent of the working directory):
pwd older
backout auto merge
backout --merge auto commit
With the new linear approach:
pwd older
backout auto commit
backout --merge auto commit
auto: commit done by the backout command
merge: backout also already committed but explicit merge and commit needed
commit: user need to commit the update/merge
author | Gilles Moris <gilles.moris@free.fr> |
---|---|
date | Fri, 10 Sep 2010 10:28:18 +0200 |
parents | 4bb4895e1693 |
children |
line wrap: on
line source
#!/bin/sh echo "[extensions]" >> $HGRCPATH echo "mq=">> $HGRCPATH teststrip() { hg -q up -C $1 echo % before update $1, strip $2 hg parents chmod -$3 $4 hg strip $2 2>&1 | sed 's/\(bundle\).*/\1/' | sed 's/Permission denied.*\.hg\/store\/\(.*\)/Permission denied \.hg\/store\/\1/' echo % after update $1, strip $2 chmod +$3 $4 hg verify echo % journal contents if [ -f .hg/store/journal ]; then sed -e 's/\.i[^\n]*/\.i/' .hg/store/journal else echo "(no journal)" fi ls .hg/store/journal >/dev/null 2>&1 && hg recover ls .hg/strip-backup/* >/dev/null 2>&1 && hg unbundle -q .hg/strip-backup/* rm -rf .hg/strip-backup } hg init test cd test echo a > a hg -q ci -m "a" -A echo b > b hg -q ci -m "b" -A echo b2 >> b hg -q ci -m "b2" -A echo c > c hg -q ci -m "c" -A teststrip 0 2 w .hg/store/data/b.i teststrip 0 2 r .hg/store/data/b.i teststrip 0 2 w .hg/store/00manifest.i