##// END OF EJS Templates
mq: use dirstateguard instead of dirstate.invalidate (qpush)...
mq: use dirstateguard instead of dirstate.invalidate (qpush) Before this patch, "mq.queue.apply()" uses "dirstate.invalidate()" as a kind of "restore .hg/dirstate to the original status" during afailure. But it just discards changes in memory, and doesn't actually restore ".hg/dirstate". Then, it can't work as expected, if "dirstate.write()" is executed while processing. This patch uses "dirstateguard" instead of "dirstate.invalidate()" to restore ".hg/dirstate" at failure even if "dirstate.write()" is executed before failure. This is a part of preparations to fix the issue that the recent (in memory) dirstate isn't visible to external processes (e.g. "precommit" hook).

File last commit:

r22046:7a9cbb31 default
r24996:58308dde default
Show More
test-mq-qclone-http.t
156 lines | 3.9 KiB | text/troff | Tads3Lexer
/ tests / test-mq-qclone-http.t
Matt Mackall
tests: replace exit 80 with #require
r22046 #require killdaemons
Matt Mackall
tests: unify test-mq-qclone-http
r12463
Mads Kiilerich
tests: add missing no-outer-repo requirements...
r17015 hide outer repo
$ hg init
Matt Mackall
tests: unify test-mq-qclone-http
r12463 $ echo "[extensions]" >> $HGRCPATH
$ echo "mq=" >> $HGRCPATH
$ mkdir webdir
$ cd webdir
$ hg init a
$ hg --cwd a qinit -c
$ echo a > a/a
$ hg --cwd a ci -A -m a
adding a
$ echo b > a/b
$ hg --cwd a addremove
adding b
$ hg --cwd a qnew -f b.patch
$ hg --cwd a qcommit -m b.patch
$ hg --cwd a log --template "{desc}\n"
[mq]: b.patch
a
$ hg --cwd a/.hg/patches log --template "{desc}\n"
b.patch
$ root=`pwd`
$ cd ..
test with recursive collection
$ cat > collections.conf <<EOF
> [paths]
> /=$root/**
> EOF
$ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
> -A access-paths.log -E error-paths-1.log
$ cat hg.pid >> $DAEMON_PIDS
Mads Kiilerich
tests: prepare get-with-headers.py for MSYS...
r17017 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=raw'
Matt Mackall
tests: unify test-mq-qclone-http
r12463 200 Script output follows
/a/
/a/.hg/patches/
$ hg qclone http://localhost:$HGPORT/a b
requesting all changes
adding changesets
adding manifests
adding file changes
Matt Mackall
mq: add secret setting
r16017 added 2 changesets with 2 changes to 2 files
Matt Mackall
tests: unify test-mq-qclone-http
r12463 requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 3 changes to 3 files
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd b log --template "{desc}\n"
a
$ hg --cwd b qpush -a
applying b.patch
now at: b.patch
$ hg --cwd b log --template "{desc}\n"
imported patch b.patch
a
test with normal collection
$ cat > collections1.conf <<EOF
> [paths]
> /=$root/*
> EOF
$ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf collections1.conf \
> -A access-paths.log -E error-paths-1.log
$ cat hg.pid >> $DAEMON_PIDS
Mads Kiilerich
tests: prepare get-with-headers.py for MSYS...
r17017 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '?style=raw'
Matt Mackall
tests: unify test-mq-qclone-http
r12463 200 Script output follows
/a/
/a/.hg/patches/
$ hg qclone http://localhost:$HGPORT1/a c
requesting all changes
adding changesets
adding manifests
adding file changes
Matt Mackall
mq: add secret setting
r16017 added 2 changesets with 2 changes to 2 files
Matt Mackall
tests: unify test-mq-qclone-http
r12463 requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 3 changes to 3 files
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd c log --template "{desc}\n"
a
$ hg --cwd c qpush -a
applying b.patch
now at: b.patch
$ hg --cwd c log --template "{desc}\n"
imported patch b.patch
a
test with old-style collection
$ cat > collections2.conf <<EOF
> [collections]
> $root=$root
> EOF
$ hg serve -p $HGPORT2 -d --pid-file=hg.pid --webdir-conf collections2.conf \
> -A access-paths.log -E error-paths-1.log
$ cat hg.pid >> $DAEMON_PIDS
Mads Kiilerich
tests: prepare get-with-headers.py for MSYS...
r17017 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '?style=raw'
Matt Mackall
tests: unify test-mq-qclone-http
r12463 200 Script output follows
/a/
/a/.hg/patches/
$ hg qclone http://localhost:$HGPORT2/a d
requesting all changes
adding changesets
adding manifests
adding file changes
Matt Mackall
mq: add secret setting
r16017 added 2 changesets with 2 changes to 2 files
Matt Mackall
tests: unify test-mq-qclone-http
r12463 requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 3 changes to 3 files
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd d log --template "{desc}\n"
a
$ hg --cwd d qpush -a
applying b.patch
now at: b.patch
$ hg --cwd d log --template "{desc}\n"
imported patch b.patch
a
test --mq works and uses correct repository config
$ hg --cwd d outgoing --mq
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 comparing with http://localhost:$HGPORT2/a/.hg/patches
Matt Mackall
tests: unify test-mq-qclone-http
r12463 searching for changes
no changes found
[1]
$ hg --cwd d log --mq --template '{rev} {desc|firstline}\n'
0 b.patch
Patrick Mezard
tests: enable even more Windows server tests
r17565
$ "$TESTDIR/killdaemons.py" $DAEMON_PIDS