Mercurial > hg
view tests/test-convert-cvs-branch.t @ 42194:0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
With this change, fixer tools can be configured to output a JSON object that
will be parsed and passed to hooks that can be used to print summaries of what
code was formatted or perform other post-fixing work.
The motivation for this change is to allow parallel executions of a
"meta-formatter" tool to report back statistics, which are then aggregated and
processed after all formatting has completed. Providing an extensible mechanism
inside fix.py is far simpler, and more portable, than trying to make a tool
like this communicate through some other channel.
Differential Revision: https://phab.mercurial-scm.org/D6167
author | Danny Hooper <hooper@google.com> |
---|---|
date | Thu, 21 Mar 2019 18:32:45 -0700 |
parents | 2fc86d92c4a9 |
children | e5e5ee2b60e4 |
line wrap: on
line source
#require cvs This is https://bz.mercurial-scm.org/1148 and https://bz.mercurial-scm.org/1447 $ cvscall() > { > cvs -f "$@" > /dev/null > } $ cat <<EOF >> $HGRCPATH > [extensions] > convert = > [convert] > cvsps.cache = 0 > EOF create cvs repository $ mkdir cvsrepo $ cd cvsrepo $ CVSROOT=`pwd` $ export CVSROOT $ CVS_OPTIONS=-f $ export CVS_OPTIONS $ cd .. $ rmdir cvsrepo $ cvscall -q -d "$CVSROOT" init Create a new project $ mkdir src $ cd src $ echo "1" > a $ echo "1" > b $ cvscall import -m "init" src v0 r0 | sort $ cd .. $ cvscall co src cvs checkout: Updating src $ cd src Branch the project $ cvscall tag -b BRANCH cvs tag: Tagging . $ cvscall up -r BRANCH > /dev/null cvs update: Updating . Modify file a, then b, then a $ sleep 1 $ echo "2" > a $ cvscall ci -m "mod a" cvs commit: Examining . $ echo "2" > b $ cvscall ci -m "mod b" cvs commit: Examining . $ sleep 1 $ echo "3" > a $ cvscall ci -m "mod a again" cvs commit: Examining . Convert $ cd .. $ hg convert src assuming destination src-hg initializing destination src-hg repository connecting to $TESTTMP/cvsrepo scanning source... collecting CVS rlog 7 log entries creating changesets 5 changeset entries sorting... converting... 4 Initial revision 3 init 2 mod a 1 mod b 0 mod a again updating tags Check the result $ hg -R src-hg log -G --template '{rev} ({branches}) {desc} files: {files}\n' o 5 () update tags files: .hgtags | | o 4 (BRANCH) mod a again files: a | | | o 3 (BRANCH) mod b files: b | | | o 2 (BRANCH) mod a files: a | | | o 1 (v0) init files: |/ o 0 () Initial revision files: a b issue 1447 $ cvscall() > { > cvs -f "$@" > /dev/null > sleep 1 > } $ cvsci() > { > cvs -f ci "$@" >/dev/null > sleep 1 > } $ cvscall -Q -d `pwd`/cvsmaster2 init $ cd cvsmaster2 $ CVSROOT=`pwd` $ export CVSROOT $ mkdir foo $ cd .. $ cvscall -Q co -d cvswork2 foo $ cd cvswork2 $ echo foo > a.txt $ echo bar > b.txt $ cvscall -Q add a.txt b.txt $ cvsci -m "Initial commit" cvs commit: Examining . $ echo foo > b.txt $ cvsci -m "Fix b on HEAD" cvs commit: Examining . $ echo bar > a.txt $ cvsci -m "Small fix in a on HEAD" cvs commit: Examining . $ cvscall -Q tag -b BRANCH $ cvscall -Q up -P -rBRANCH $ echo baz > b.txt $ cvsci -m "Change on BRANCH in b" cvs commit: Examining . $ hg debugcvsps -x --parents foo collecting CVS rlog 5 log entries creating changesets 4 changeset entries --------------------- PatchSet 1 Date: * (glob) Author: * (glob) Branch: HEAD Tag: (none) Log: Initial commit Members: a.txt:INITIAL->1.1 b.txt:INITIAL->1.1 --------------------- PatchSet 2 Date: * (glob) Author: * (glob) Branch: HEAD Tag: (none) Branchpoints: BRANCH Parent: 1 Log: Fix b on HEAD Members: b.txt:1.1->1.2 --------------------- PatchSet 3 Date: * (glob) Author: * (glob) Branch: HEAD Tag: (none) Branchpoints: BRANCH Parent: 2 Log: Small fix in a on HEAD Members: a.txt:1.1->1.2 --------------------- PatchSet 4 Date: * (glob) Author: * (glob) Branch: BRANCH Tag: (none) Parent: 3 Log: Change on BRANCH in b Members: b.txt:1.2->1.2.2.1 $ cd ..