##// END OF EJS Templates
patch: support diff data loss detection and upgrade...
patch: support diff data loss detection and upgrade In worst case, generating diff in upgrade mode can be two times more expensive than generating it in git mode directly: we may have to regenerate the whole diff again whenever a git feature is detected. Also, the first diff attempt is completely buffered instead of being streamed. That said, even without having profiled it yet, I am convinced we can fast-path the upgrade mode if necessary were it to be used in regular diff commands, and not only in mq where avoiding data loss is worth the price.

File last commit:

r9543:56a5f805 default
r10189:e451e599 default
Show More
test-convert-cvs-branch.out
120 lines | 1.8 KiB | text/plain | TextLexer
/ tests / test-convert-cvs-branch.out
% create cvs repository
% Create a new project
N src/a
N src/b
No conflicts created by this import
cvs checkout: Updating src
U src/a
U src/b
% Branch the project
cvs tag: Tagging .
T a
T b
cvs update: Updating .
% Modify file a, then b, then a
cvs commit: Examining .
checking in src/a,v
cvs commit: Examining .
checking in src/b,v
cvs commit: Examining .
checking in src/a,v
% Convert
assuming destination src-hg
initializing destination src-hg repository
connecting to 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
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
cvs -f -Q co -d cvswork2 foo
cvs -f -Q add a.txt b.txt
cvs -f ci -m Initial commit
cvs -f ci -m Fix b on HEAD
cvs -f ci -m Small fix in a on HEAD
cvs -f -Q tag -b BRANCH
cvs -f -Q up -P -rBRANCH
cvs -f ci -m Change on BRANCH in b
collecting CVS rlog
5 log entries
creating changesets
4 changeset entries
---------------------
PatchSet 1
Date:
Author:
Branch: HEAD
Tag: (none)
Log:
Initial commit
Members:
a.txt:INITIAL->1.1
b.txt:INITIAL->1.1
---------------------
PatchSet 2
Date:
Author:
Branch: HEAD
Tag: (none)
Branchpoints: BRANCH
Parent: 1
Log:
Fix b on HEAD
Members:
b.txt:1.1->1.2
---------------------
PatchSet 3
Date:
Author:
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:
Author:
Branch: BRANCH
Tag: (none)
Parent: 3
Log:
Change on BRANCH in b
Members:
b.txt:1.2->1.2.2.1