view tests/test-convert-cvs-branch.t @ 45084:07b3166e94ca

commit: check branch change on to-be-committed changeset This makes a difference when a branch name is passed via the `extra` argument, which will be used as the branch name for the created changeset. The empty commit check should use that branch name instead of whatever was set on the working directory. Besides fixing the bug for which a test case was extended, it enables to remove a workaround in the rebase extension, which will be done in a follow-up patch (D8725). Differential Revision: https://phab.mercurial-scm.org/D8724
author Manuel Jacob <me@manueljacob.de>
date Fri, 10 Jul 2020 00:44:18 +0200
parents e5e5ee2b60e4
children
line wrap: on
line source

#require cvs no-root

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 ..