Mercurial > hg
view tests/test-eol-patch.t @ 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 | e9db6bc37659 |
children | 7439ea4146f8 |
line wrap: on
line source
Test EOL patching $ cat > $HGRCPATH <<EOF > [diff] > git = 1 > EOF Set up helpers $ seteol () { > if [ $1 = "LF" ]; then > EOL='\n' > else > EOL='\r\n' > fi > } $ makerepo () { > seteol $1 > echo > echo "# ==== setup $1 repository ====" > echo '% hg init' > hg init repo > cd repo > cat > .hgeol <<EOF > [repository] > native = $1 > [patterns] > unix.txt = LF > win.txt = CRLF > **.txt = native > EOF > printf "first\r\nsecond\r\nthird\r\n" > win.txt > printf "first\nsecond\nthird\n" > unix.txt > printf "first${EOL}second${EOL}third${EOL}" > native.txt > hg commit --addremove -m 'checkin' > cd .. > } $ dotest () { > seteol $1 > echo > echo "% hg clone repo repo-$1" > hg clone --noupdate repo repo-$1 > cd repo-$1 > cat > .hg/hgrc <<EOF > [extensions] > eol = > [eol] > native = $1 > EOF > hg update > echo '% printrepr.py native.txt' > python $TESTDIR/printrepr.py < native.txt > echo '% printrepr.py unix.txt' > python $TESTDIR/printrepr.py < unix.txt > echo '% printrepr.py win.txt' > python $TESTDIR/printrepr.py < win.txt > printf "first${EOL}third${EOL}" > native.txt > printf "first\r\nthird\r\n" > win.txt > printf "first\nthird\n" > unix.txt > echo '% hg diff' > hg diff > p > python $TESTDIR/printrepr.py < p > echo '% hg revert' > hg revert --all > echo '% hg import' > hg import -m 'patch' p > echo '% printrepr.py native.txt' > python $TESTDIR/printrepr.py < native.txt > echo '% printrepr.py unix.txt' > python $TESTDIR/printrepr.py < unix.txt > echo '% printrepr.py win.txt' > python $TESTDIR/printrepr.py < win.txt > echo '% hg diff -c tip' > hg diff -c tip | python $TESTDIR/printrepr.py > cd .. > rm -r repo-$1 > } Run tests $ makerepo LF # ==== setup LF repository ==== % hg init adding .hgeol adding native.txt adding unix.txt adding win.txt $ dotest LF % hg clone repo repo-LF 4 files updated, 0 files merged, 0 files removed, 0 files unresolved % printrepr.py native.txt first second third % printrepr.py unix.txt first second third % printrepr.py win.txt first\r second\r third\r % hg diff diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first -second third diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r % hg revert reverting native.txt reverting unix.txt reverting win.txt % hg import applying p % printrepr.py native.txt first third % printrepr.py unix.txt first third % printrepr.py win.txt first\r third\r % hg diff -c tip diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first -second third diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r $ dotest CRLF % hg clone repo repo-CRLF 4 files updated, 0 files merged, 0 files removed, 0 files unresolved % printrepr.py native.txt first\r second\r third\r % printrepr.py unix.txt first second third % printrepr.py win.txt first\r second\r third\r % hg diff diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first -second third diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r % hg revert reverting native.txt reverting unix.txt reverting win.txt % hg import applying p % printrepr.py native.txt first\r third\r % printrepr.py unix.txt first third % printrepr.py win.txt first\r third\r % hg diff -c tip diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first -second third diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r $ rm -r repo $ makerepo CRLF # ==== setup CRLF repository ==== % hg init adding .hgeol adding native.txt adding unix.txt adding win.txt $ dotest LF % hg clone repo repo-LF 4 files updated, 0 files merged, 0 files removed, 0 files unresolved % printrepr.py native.txt first second third % printrepr.py unix.txt first second third % printrepr.py win.txt first\r second\r third\r % hg diff diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first\r -second\r third\r diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r % hg revert reverting native.txt reverting unix.txt reverting win.txt % hg import applying p % printrepr.py native.txt first third % printrepr.py unix.txt first third % printrepr.py win.txt first\r third\r % hg diff -c tip diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first\r -second\r third\r diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r $ dotest CRLF % hg clone repo repo-CRLF 4 files updated, 0 files merged, 0 files removed, 0 files unresolved % printrepr.py native.txt first\r second\r third\r % printrepr.py unix.txt first second third % printrepr.py win.txt first\r second\r third\r % hg diff diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first\r -second\r third\r diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r % hg revert reverting native.txt reverting unix.txt reverting win.txt % hg import applying p % printrepr.py native.txt first\r third\r % printrepr.py unix.txt first third % printrepr.py win.txt first\r third\r % hg diff -c tip diff --git a/native.txt b/native.txt --- a/native.txt +++ b/native.txt @@ -1,3 +1,2 @@ first\r -second\r third\r diff --git a/unix.txt b/unix.txt --- a/unix.txt +++ b/unix.txt @@ -1,3 +1,2 @@ first -second third diff --git a/win.txt b/win.txt --- a/win.txt +++ b/win.txt @@ -1,3 +1,2 @@ first\r -second\r third\r $ rm -r repo