merge: use constants for actions
We finish up establishing named constants in this file with
actions.
I remember scratching my head trying to figure out what this
code was doing as part of addressing a recent security issue with
subrepos. Having the named constants in place definitely makes
things easier to read.
I'm not convinced the new constants have the best names (I'm not
an expert in this code). But they can be changed easily enough.
Also, since these constants are internal only, we might want
to change their values to something more human readable to
facilitate debugging. Or maybe we could employ an enum type
some day...
Differential Revision: https://phab.mercurial-scm.org/D2701
#require killdaemons
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