Mercurial > hg
view tests/test-mq-qclone-http.t @ 45725:99b8b73eb622
revset: add diff(pattern) predicate for "grep --diff"
I find this is useful in GUI log viewer since the tool only needs to support
"log -rREV" command.
This is basic implementation. Windowed search is not implemented since it
wouldn't work pretty well with the smartset API. And filename matcher is
not supported because the syntax isn't determined. My idea is to add handling
of diff(pattern, file(..)) and diff(pattern, follow(..)), which will then be
evolved to a full revset+matcher combinator support:
x & diff(pattern, y & z)
=====
y & z builds (revs(y) & revs(z), matcher(y) & matcher(z))
pair, and narrows the search space of diff()
====================
diff() returns matched (revs, matcher) pair
========================
revs and matcher will be combined respectively by &-operator, and the matcher
will optionally be used to filter "hg log -p" output
The predicate name "diff()" wouldn't be great, but grep() is already used.
Another options I can think of are "grepdiff()" and "containsdiff()".
Naming suggestions are welcome.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 08 Sep 2020 18:16:24 +0900 |
parents | b4b7427b5786 |
children |
line wrap: on
line source
hide outer repo $ hg init $ 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 $ get-with-headers.py localhost:$HGPORT '?style=raw' 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 added 2 changesets with 2 changes to 2 files new changesets cb9a9f314b8b:184916345baa requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 3 changes to 3 files new changesets 4052ceaa8c4e 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 $ get-with-headers.py localhost:$HGPORT1 '?style=raw' 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 added 2 changesets with 2 changes to 2 files new changesets cb9a9f314b8b:184916345baa requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 3 changes to 3 files new changesets 4052ceaa8c4e 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 $ get-with-headers.py localhost:$HGPORT2 '?style=raw' 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 added 2 changesets with 2 changes to 2 files new changesets cb9a9f314b8b:184916345baa requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 3 changes to 3 files new changesets 4052ceaa8c4e 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 comparing with http://localhost:$HGPORT2/a/.hg/patches searching for changes no changes found [1] $ hg --cwd d log --mq --template '{rev} {desc|firstline}\n' 0 b.patch $ killdaemons.py