# HG changeset patch # User Adrian Buehlmann # Date 1290009270 -3600 # Node ID 42ac864ed3946df2a3b7b87dcbc05cd4d35a62c3 # Parent 96956105e92d2e5ded62d0b0ddb418792cb8e825 test-hardlinks: add testcase for repo copied with 'cp -al' This patch adds a case to test-hardlinks.t which demonstrates that hardlinks in the working directory are broken up (using 'hg update'). Motivation for this patch: 'hg help clone' shows copying repositories *and* the working directory using 'cp -al', creating hardlinks in the *working directory* too (not just in the store). Note that we can't use 'cp -al' since for example MacOS X doesn't support these options on cp. I'm thus using the same trick as in test-hardlinks-safety.t for creating hardlinks in the working dir. diff -r 96956105e92d -r 42ac864ed394 tests/test-hardlinks.t --- a/tests/test-hardlinks.t Thu Nov 18 23:15:13 2010 +0100 +++ b/tests/test-hardlinks.t Wed Nov 17 16:54:30 2010 +0100 @@ -10,6 +10,19 @@ > find $1 -type f | python $TESTTMP/nlinks.py > } +Some implementations of cp can't create hardlinks (replaces 'cp -al' on Linux): + + $ cat > linkcp.py < from mercurial import util + > import sys + > util.copyfiles(sys.argv[1], sys.argv[2], hardlink=True) + > EOF + + $ linkcp() + > { + > python $TESTTMP/linkcp.py $1 $2 + > } + Prepare repo r1: $ mkdir r1 @@ -152,3 +165,68 @@ 1 r2/.hg/store/data/f1.i 1 r2/.hg/store/fncache + + $ cd r3 + $ hg tip --template '{rev}:{node|short}\n' + 11:a6451b6bc41f + $ echo bla > f1 + $ hg ci -m1 + $ cd .. + +Create hardlinked copy r4 of r3 (on Linux, we would call 'cp -al'): + + $ linkcp r3 r4 + +r4 has hardlinks in the working dir (not just inside .hg): + + $ nlinksdir r4 + 2 r4/.hg/00changelog.i + 2 r4/.hg/branch + 2 r4/.hg/branchheads.cache + 2 r4/.hg/dirstate + 2 r4/.hg/hgrc + 2 r4/.hg/last-message.txt + 2 r4/.hg/requires + 2 r4/.hg/store/00changelog.i + 2 r4/.hg/store/00manifest.i + 2 r4/.hg/store/data/d1/f2.d + 2 r4/.hg/store/data/d1/f2.i + 2 r4/.hg/store/data/f1.i + 2 r4/.hg/store/fncache + 2 r4/.hg/store/undo + 2 r4/.hg/tags.cache + 2 r4/.hg/undo.branch + 2 r4/.hg/undo.desc + 2 r4/.hg/undo.dirstate + 2 r4/d1/data1 + 2 r4/d1/f2 + 2 r4/f1 + +Update back to revision 11 in r4 should break hardlink of file f1: + + $ hg -R r4 up 11 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ nlinksdir r4 + 2 r4/.hg/00changelog.i + 1 r4/.hg/branch + 2 r4/.hg/branchheads.cache + 1 r4/.hg/dirstate + 2 r4/.hg/hgrc + 2 r4/.hg/last-message.txt + 2 r4/.hg/requires + 2 r4/.hg/store/00changelog.i + 2 r4/.hg/store/00manifest.i + 2 r4/.hg/store/data/d1/f2.d + 2 r4/.hg/store/data/d1/f2.i + 2 r4/.hg/store/data/f1.i + 2 r4/.hg/store/fncache + 2 r4/.hg/store/undo + 2 r4/.hg/tags.cache + 2 r4/.hg/undo.branch + 2 r4/.hg/undo.desc + 2 r4/.hg/undo.dirstate + 2 r4/d1/data1 + 2 r4/d1/f2 + 1 r4/f1 +