diff -r ddebb6a690b4 -r 88c3ff051270 tests/test-transplant.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-transplant.t Thu Aug 12 22:14:19 2010 +0900 @@ -0,0 +1,353 @@ + $ cat <> $HGRCPATH + > [extensions] + > transplant= + > EOF + + $ hg init t + $ cd t + $ echo r1 > r1 + $ hg ci -Amr1 -d'0 0' + adding r1 + $ echo r2 > r2 + $ hg ci -Amr2 -d'1 0' + adding r2 + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + + $ echo b1 > b1 + $ hg ci -Amb1 -d '0 0' + adding b1 + created new head + $ echo b2 > b2 + $ hg ci -Amb2 -d '1 0' + adding b2 + $ echo b3 > b3 + $ hg ci -Amb3 -d '2 0' + adding b3 + + $ hg log --template '{rev} {parents} {desc}\n' + 4 b3 + 3 b2 + 2 0:17ab29e464c6 b1 + 1 r2 + 0 r1 + + $ hg clone . ../rebase + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd ../rebase + + $ hg up -C 1 + 1 files updated, 0 files merged, 3 files removed, 0 files unresolved + +rebase b onto r1 + + $ hg transplant -a -b tip + applying 37a1297eb21b + 37a1297eb21b transplanted to e234d668f844 + applying 722f4667af76 + 722f4667af76 transplanted to 539f377d78df + applying a53251cdf717 + a53251cdf717 transplanted to ffd6818a3975 + $ hg log --template '{rev} {parents} {desc}\n' + 7 b3 + 6 b2 + 5 1:d11e3596cc1a b1 + 4 b3 + 3 b2 + 2 0:17ab29e464c6 b1 + 1 r2 + 0 r1 + + $ hg clone ../t ../prune + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd ../prune + + $ hg up -C 1 + 1 files updated, 0 files merged, 3 files removed, 0 files unresolved + +rebase b onto r1, skipping b2 + + $ hg transplant -a -b tip -p 3 + applying 37a1297eb21b + 37a1297eb21b transplanted to e234d668f844 + applying a53251cdf717 + a53251cdf717 transplanted to 7275fda4d04f + $ hg log --template '{rev} {parents} {desc}\n' + 6 b3 + 5 1:d11e3596cc1a b1 + 4 b3 + 3 b2 + 2 0:17ab29e464c6 b1 + 1 r2 + 0 r1 + + +remote transplant + + $ hg clone -r 1 ../t ../remote + requesting all changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd ../remote + $ hg transplant --log -s ../t 2 4 + searching for changes + applying 37a1297eb21b + 37a1297eb21b transplanted to c19cf0ccb069 + applying a53251cdf717 + a53251cdf717 transplanted to f7fe5bf98525 + $ hg log --template '{rev} {parents} {desc}\n' + 3 b3 + (transplanted from a53251cdf717679d1907b289f991534be05c997a) + 2 b1 + (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21) + 1 r2 + 0 r1 + +skip previous transplants + + $ hg transplant -s ../t -a -b 4 + searching for changes + applying 722f4667af76 + 722f4667af76 transplanted to 47156cd86c0b + $ hg log --template '{rev} {parents} {desc}\n' + 4 b2 + 3 b3 + (transplanted from a53251cdf717679d1907b289f991534be05c997a) + 2 b1 + (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21) + 1 r2 + 0 r1 + +skip local changes transplanted to the source + + $ echo b4 > b4 + $ hg ci -Amb4 -d '3 0' + adding b4 + $ hg clone ../t ../pullback + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd ../pullback + $ hg transplant -s ../remote -a -b tip + searching for changes + applying 4333daefcb15 + 4333daefcb15 transplanted to 5f42c04e07cc + + +remote transplant with pull + + $ hg -R ../t serve -p $HGPORT -d --pid-file=../t.pid + $ cat ../t.pid >> $DAEMON_PIDS + + $ hg clone -r 0 ../t ../rp + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd ../rp + $ hg transplant -s http://localhost:$HGPORT/ 2 4 + searching for changes + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + applying a53251cdf717 + a53251cdf717 transplanted to 8d9279348abb + $ hg log --template '{rev} {parents} {desc}\n' + 2 b3 + 1 b1 + 0 r1 + +transplant --continue + + $ hg init ../tc + $ cd ../tc + $ cat < foo + > foo + > bar + > baz + > EOF + $ echo toremove > toremove + $ hg ci -Amfoo + adding foo + adding toremove + $ cat < foo + > foo2 + > bar2 + > baz2 + > EOF + $ rm toremove + $ echo added > added + $ hg ci -Amfoo2 + adding added + removing toremove + $ echo bar > bar + $ hg ci -Ambar + adding bar + $ echo bar2 >> bar + $ hg ci -mbar2 + $ hg up 0 + 2 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ echo foobar > foo + $ hg ci -mfoobar + created new head + $ hg transplant 1:3 + applying a1e30dd1b8e7 + patching file foo + Hunk #1 FAILED at 0 + 1 out of 1 hunks FAILED -- saving rejects to file foo.rej + patch failed to apply + abort: Fix up the merge and run hg transplant --continue + +transplant -c shouldn't use an old changeset + + $ hg up -C + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ rm added + $ hg transplant 1 + applying a1e30dd1b8e7 + patching file foo + Hunk #1 FAILED at 0 + 1 out of 1 hunks FAILED -- saving rejects to file foo.rej + patch failed to apply + abort: Fix up the merge and run hg transplant --continue + $ hg transplant --continue + a1e30dd1b8e7 transplanted as f1563cf27039 + $ hg transplant 1:3 + skipping already applied revision 1:a1e30dd1b8e7 + applying 1739ac5f6139 + 1739ac5f6139 transplanted to d649c221319f + applying 0282d5fbbe02 + 0282d5fbbe02 transplanted to 77418277ccb3 + $ hg locate + added + bar + foo + $ cd .. + +Test transplant --merge (issue 1111) +test transplant merge + + $ hg init t1111 + $ cd t1111 + $ echo a > a + $ hg ci -Am adda + adding a + $ echo b >> a + $ hg ci -m appendb + $ echo c >> a + $ hg ci -m appendc + $ hg up -C 0 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo d >> a + $ hg ci -m appendd + created new head + +tranplant + + $ hg transplant -m 1 + applying 42dc4432fd35 + 1:42dc4432fd35 merged at a9f4acbac129 + $ cd .. + +test transplant into empty repository + + $ hg init empty + $ cd empty + $ hg transplant -s ../t -b tip -a + requesting all changes + adding changesets + adding manifests + adding file changes + added 4 changesets with 4 changes to 4 files + $ cd .. + + +test filter + + $ hg init filter + $ cd filter + $ cat <<'EOF' >test-filter + > #!/bin/sh + > sed 's/r1/r2/' $1 > $1.new + > mv $1.new $1 + > EOF + $ chmod +x test-filter + $ hg transplant -s ../t -b tip -a --filter ./test-filter + filtering .* + applying 17ab29e464c6 + 17ab29e464c6 transplanted to e9ffc54ea104 + filtering .* + applying 37a1297eb21b + 37a1297eb21b transplanted to 348b36d0b6a5 + filtering .* + applying 722f4667af76 + 722f4667af76 transplanted to 0aa6979afb95 + filtering .* + applying a53251cdf717 + a53251cdf717 transplanted to 14f8512272b5 + $ hg log --template '{rev} {parents} {desc}\n' + 3 b3 + 2 b2 + 1 b1 + 0 r2 + $ cd .. + + +test filter with failed patch + + $ cd filter + $ hg up 0 + 0 files updated, 0 files merged, 3 files removed, 0 files unresolved + $ echo foo > b1 + $ hg ci -d '0 0' -Am foo + adding b1 + adding test-filter + created new head + $ hg transplant 1 --filter ./test-filter + filtering .* + applying 348b36d0b6a5 + file b1 already exists + 1 out of 1 hunks FAILED -- saving rejects to file b1.rej + patch failed to apply + abort: Fix up the merge and run hg transplant --continue + $ cd .. + + +test with a win32ext like setup (differing EOLs) + + $ hg init twin1 + $ cd twin1 + $ echo a > a + $ echo b > b + $ echo b >> b + $ hg ci -Am t + adding a + adding b + $ echo a > b + $ echo b >> b + $ hg ci -m changeb + $ cd .. + + $ hg init twin2 + $ cd twin2 + $ echo '[patch]' >> .hg/hgrc + $ echo 'eol = crlf' >> .hg/hgrc + $ python -c "file('b', 'wb').write('b\r\nb\r\n')" + $ hg ci -m addb + nothing changed + $ hg transplant -s ../twin1 tip + applying 2e849d776c17 + 2e849d776c17 transplanted to 589cea8ba85b + $ python -c "print repr(file('b', 'rb').read())" + 'a\r\nb\r\n' + $ cd ..