diff --git a/tests/test-hgweb-symrev.t b/tests/test-hgweb-symrev.t new file mode 100644 --- /dev/null +++ b/tests/test-hgweb-symrev.t @@ -0,0 +1,980 @@ +#require serve + +Test symbolic revision usage in links produced by hgweb pages. There are +multiple issues related to this: +- issue2296 +- issue2826 +- issue3594 +- issue3634 + +Set up the repo + + $ hg init test + $ cd test + $ echo 0 > foo + $ mkdir dir + $ echo 0 > dir/bar + $ hg ci -Am 'first' + adding dir/bar + adding foo + $ echo 1 >> foo + $ hg ci -m 'second' + $ echo 2 >> foo + $ hg ci -m 'third' + $ hg bookmark -r1 xyzzy + + $ hg log -G --template '{rev}:{node|short} {tags} {bookmarks}\n' + @ 2:9d8c40cba617 tip + | + o 1:a7c1559b7bba xyzzy + | + o 0:43c799df6e75 + + $ hg serve --config web.allow_archive=zip -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log + $ cat hg.pid >> $DAEMON_PIDS + + $ REVLINKS='href=[^>]+(rev=|/)(43c799df6e75|0|a7c1559b7bba|1|xyzzy|9d8c40cba617|2|tip)' + +(De)referencing symbolic revisions (paper) + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=paper' | egrep $REVLINKS +
  • graph
  • +
  • changeset
  • +
  • browse
  • + zip + less + more + | rev 2: (0) tip + third + second + first + less + more + | rev 2: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=paper' | egrep $REVLINKS +
  • log
  • +
  • changeset
  • +
  • browse
  • + less + more + | rev 2: (0) tip + less + more + | rev 2: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=paper' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • + zip + [up] + + + + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=paper&rev=all()' | egrep $REVLINKS + third + second + first + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=paper' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • raw
  • +
  • browse
  • + zip + 43c799df6e75 + 9d8c40cba617 + foo + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=paper' | egrep $REVLINKS +
  • graph
  • +
  • changeset
  • +
  • browse
  • + zip + less + more + | rev 1: (0) tip + second + first + less + more + | rev 1: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=paper' | egrep $REVLINKS +
  • log
  • +
  • changeset
  • +
  • browse
  • + less + more + | rev 1: (0) tip + less + more + | rev 1: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=paper' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • + zip + [up] + + + + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=paper' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • latest
  • +
  • diff
  • +
  • comparison
  • +
  • annotate
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=paper' | egrep $REVLINKS + href="/atom-log/tip/foo" title="Atom feed for test:foo" /> + href="/rss-log/tip/foo" title="RSS feed for test:foo" /> +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • diff
  • +
  • comparison
  • +
  • annotate
  • +
  • raw
  • + + less + more + | (0) tip + second + first + less + more + | (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=paper' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • latest
  • +
  • diff
  • +
  • comparison
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + log +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • latest
  • +
  • comparison
  • +
  • annotate
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=paper' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • latest
  • +
  • diff
  • +
  • annotate
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + +(De)referencing symbolic revisions (coal) + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=coal' | egrep $REVLINKS +
  • graph
  • +
  • changeset
  • +
  • browse
  • + zip + less + more + | rev 2: (0) tip + third + second + first + less + more + | rev 2: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=coal' | egrep $REVLINKS +
  • log
  • +
  • changeset
  • +
  • browse
  • + less + more + | rev 2: (0) tip + less + more + | rev 2: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=coal' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • + zip + [up] + + + + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=coal&rev=all()' | egrep $REVLINKS + third + second + first + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=coal' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • raw
  • +
  • browse
  • + zip + 43c799df6e75 + 9d8c40cba617 + foo + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=coal' | egrep $REVLINKS +
  • graph
  • +
  • changeset
  • +
  • browse
  • + zip + less + more + | rev 1: (0) tip + second + first + less + more + | rev 1: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=coal' | egrep $REVLINKS +
  • log
  • +
  • changeset
  • +
  • browse
  • + less + more + | rev 1: (0) tip + less + more + | rev 1: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=coal' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • + zip + [up] + + + + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=coal' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • latest
  • +
  • diff
  • +
  • comparison
  • +
  • annotate
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=coal' | egrep $REVLINKS + href="/atom-log/tip/foo" title="Atom feed for test:foo" /> + href="/rss-log/tip/foo" title="RSS feed for test:foo" /> +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • diff
  • +
  • comparison
  • +
  • annotate
  • +
  • raw
  • + + less + more + | (0) tip + second + first + less + more + | (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=coal' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • latest
  • +
  • diff
  • +
  • comparison
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + log +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • latest
  • +
  • comparison
  • +
  • annotate
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=coal' | egrep $REVLINKS +
  • log
  • +
  • graph
  • +
  • changeset
  • +
  • browse
  • +
  • file
  • +
  • latest
  • +
  • diff
  • +
  • annotate
  • +
  • file log
  • +
  • raw
  • + 43c799df6e75 + 9d8c40cba617 + +(De)referencing symbolic revisions (gitweb) + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'summary?style=gitweb' | egrep $REVLINKS + files | zip | + + changeset | + files + + changeset | + files + + changeset | + files + xyzzy + changeset | + changelog | + files + 9d8c40cba617 + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=gitweb' | egrep $REVLINKS + changelog | + files | zip | +
    (0) tip
    + + changeset | + files + + changeset | + files + + changeset | + files + (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=gitweb' | egrep $REVLINKS + shortlog | + files | zip | + (0) tip
    + Thu, 01 Jan 1970 00:00:00 +0000third default tip + changeset
    + Thu, 01 Jan 1970 00:00:00 +0000second xyzzy + changeset
    + Thu, 01 Jan 1970 00:00:00 +0000first + changeset
    + (0) tip
    + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=gitweb' | egrep $REVLINKS + changelog | + files | + less + more + | (0) tip
    + less + more + | (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=gitweb' | egrep $REVLINKS + tip + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=gitweb' | egrep $REVLINKS + xyzzy + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=gitweb' | egrep $REVLINKS + 9d8c40cba617 + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=gitweb' | egrep $REVLINKS + changeset | zip | + [up] + dir + + files + foo + file | + revisions | + annotate + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=gitweb&rev=all()' | egrep $REVLINKS + files | zip + Thu, 01 Jan 1970 00:00:00 +0000third default tip + changeset
    + Thu, 01 Jan 1970 00:00:00 +0000second xyzzy + changeset
    + Thu, 01 Jan 1970 00:00:00 +0000first + changeset
    + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=gitweb' | egrep $REVLINKS + shortlog | + changelog | + files | + raw | zip | + second xyzzy + 43c799df6e75 + 9d8c40cba617 + foo + file | + annotate | + diff | + comparison | + revisions + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=gitweb' | egrep $REVLINKS + changelog | + files | zip | +
    (0) tip
    + + changeset | + files + + changeset | + files + (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=gitweb' | egrep $REVLINKS + shortlog | + files | zip | + (0) tip
    + Thu, 01 Jan 1970 00:00:00 +0000second xyzzy + changeset
    + Thu, 01 Jan 1970 00:00:00 +0000first + changeset
    + (0) tip
    + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=gitweb' | egrep $REVLINKS + changelog | + files | + less + more + | (0) tip
    + less + more + | (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=gitweb' | egrep $REVLINKS + changeset | zip | + [up] + dir + + files + foo + file | + revisions | + annotate + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=gitweb' | egrep $REVLINKS + files | + changeset | + latest | + revisions | + annotate | + diff | + comparison | + raw | + a7c1559b7bba + + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=gitweb' | egrep $REVLINKS + file | + annotate | + diff | + comparison | + rss | + (0) tip + + file | + diff | + annotate + + file | + diff | + annotate + (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=gitweb' | egrep $REVLINKS + files | + changeset | + file | + latest | + revisions | + diff | + comparison | + raw | + a7c1559b7bba + + 9d8c40cba617 + files | + changeset | + file | + latest | + revisions | + annotate | + comparison | + raw | + a7c1559b7bba + + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=gitweb' | egrep $REVLINKS + files | + changeset | + file | + latest | + revisions | + annotate | + diff | + raw | + a7c1559b7bba + + 9d8c40cba617 + +(De)referencing symbolic revisions (monoblue) + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'summary?style=monoblue' | egrep $REVLINKS + + changeset | + files + + changeset | + files + + changeset | + files + xyzzy + changeset | + changelog | + files + 9d8c40cba617 + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • zip
  • + + changeset | + files + + changeset | + files + + changeset | + files + (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • zip
  • +

    third default tip

    +

    second xyzzy

    +

    first

    + (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=monoblue' | egrep $REVLINKS +
  • files
  • + less + more + | (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=monoblue' | egrep $REVLINKS + tip + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=monoblue' | egrep $REVLINKS + xyzzy + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=monoblue' | egrep $REVLINKS + 9d8c40cba617 + changeset | + changelog | + files + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • changeset
  • +
  • zip
  • + [up] + dir + + files + foo + file | + revisions | + annotate + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue&rev=all()' | egrep $REVLINKS +
  • zip
  • +

    third default tip

    +

    second xyzzy

    +

    first

    + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • raw
  • +
  • zip
  • +

    second xyzzy

    +
    43c799df6e75
    +
    9d8c40cba617
    + foo + file | + annotate | + diff | + comparison | + revisions + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • zip
  • + + changeset | + files + + changeset | + files + (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • zip
  • +

    second xyzzy

    +

    first

    + (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=monoblue' | egrep $REVLINKS +
  • files
  • + less + more + | (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • changeset
  • +
  • zip
  • + [up] + dir + + files + foo + file | + revisions | + annotate + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • revisions
  • +
  • annotate
  • +
  • diff
  • +
  • comparison
  • +
  • raw
  • +
    a7c1559b7bba
    + + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • file
  • +
  • annotate
  • +
  • diff
  • +
  • comparison
  • +
  • rss
  • + + file | diff | annotate + + file | diff | annotate + (0)tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • file
  • +
  • revisions
  • +
  • diff
  • +
  • comparison
  • +
  • raw
  • +
    a7c1559b7bba
    + + 9d8c40cba617 + graph +
  • files
  • +
  • file
  • +
  • revisions
  • +
  • annotate
  • +
  • comparison
  • +
  • raw
  • +
    a7c1559b7bba
    +
    43c799df6e75
    +
    9d8c40cba617
    + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | egrep $REVLINKS +
  • graph
  • +
  • files
  • +
  • file
  • +
  • revisions
  • +
  • annotate
  • +
  • diff
  • +
  • raw
  • +
    a7c1559b7bba
    +
    43c799df6e75
    +
    9d8c40cba617
    + +(De)referencing symbolic revisions (spartan) + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan' | egrep $REVLINKS + changelog + files + zip + navigate: (0) tip + third + second + first + navigate: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=spartan' | egrep $REVLINKS + shortlog + files + zip + navigate: (0) tip + 9d8c40cba617 + files: + foo + a7c1559b7bba + files: + foo + 43c799df6e75 + files: + dir/bar foo + navigate: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=spartan' | egrep $REVLINKS + files + navigate: (0) tip + navigate: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=spartan' | egrep $REVLINKS + tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=spartan' | egrep $REVLINKS + default + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=spartan' | egrep $REVLINKS + changelog + shortlog + changeset + zip +

    Mercurial / files for changeset 9d8c40cba617: /

    + [up] + dir/ + + foo + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan&rev=all()' | egrep $REVLINKS + zip + 9d8c40cba617 + a7c1559b7bba + files: + foo + a7c1559b7bba + 43c799df6e75 + 9d8c40cba617 + files: + foo + 43c799df6e75 + a7c1559b7bba + files: + dir/bar foo + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=spartan' | egrep $REVLINKS + changelog + shortlog + files + raw + zip + a7c1559b7bba + 43c799df6e75 + 9d8c40cba617 + foo + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=spartan' | egrep $REVLINKS + changelog + files + zip + navigate: (0) tip + second + first + navigate: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=spartan' | egrep $REVLINKS + shortlog + files + zip + navigate: (0) tip + a7c1559b7bba + files: + foo + 43c799df6e75 + files: + dir/bar foo + navigate: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=spartan' | egrep $REVLINKS + files + navigate: (0) tip + navigate: (0) tip + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=spartan' | egrep $REVLINKS + changelog + shortlog + changeset + zip +

    Mercurial / files for changeset a7c1559b7bba: /

    + [up] + dir/ + + foo + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=spartan' | egrep $REVLINKS + changelog + shortlog + changeset + files + revisions + annotate + raw + a7c1559b7bba + + 9d8c40cba617 + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=spartan' | egrep $REVLINKS + href="/atom-log/tip/foo" title="Atom feed for test:foo"> + href="/rss-log/tip/foo" title="RSS feed for test:foo"> + file + annotate + rss + atom +

    navigate: (0) tip

    + second + a7c1559b7bba + (diff) + (annotate) + first + 43c799df6e75 + (diff) + (annotate) + + $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=spartan' | egrep $REVLINKS + changelog + shortlog + changeset + files + file + revisions + raw + a7c1559b7bba + + 9d8c40cba617 + changelog + shortlog + changeset + file + revisions + annotate + raw + a7c1559b7bba + 43c799df6e75 + 9d8c40cba617 + +Done + + $ cat errors.log + $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS + $ cd ..