Show More
@@ -615,6 +615,7 b' def tryimportone(ui, repo, hunk, parents' | |||||
615 |
|
615 | |||
616 | update = not opts.get('bypass') |
|
616 | update = not opts.get('bypass') | |
617 | strip = opts["strip"] |
|
617 | strip = opts["strip"] | |
|
618 | prefix = opts["prefix"] | |||
618 | sim = float(opts.get('similarity') or 0) |
|
619 | sim = float(opts.get('similarity') or 0) | |
619 | if not tmpname: |
|
620 | if not tmpname: | |
620 | return (None, None, False) |
|
621 | return (None, None, False) | |
@@ -674,8 +675,8 b' def tryimportone(ui, repo, hunk, parents' | |||||
674 | partial = opts.get('partial', False) |
|
675 | partial = opts.get('partial', False) | |
675 | files = set() |
|
676 | files = set() | |
676 | try: |
|
677 | try: | |
677 |
patch.patch(ui, repo, tmpname, strip=strip, |
|
678 | patch.patch(ui, repo, tmpname, strip=strip, prefix=prefix, | |
678 | eolmode=None, similarity=sim / 100.0) |
|
679 | files=files, eolmode=None, similarity=sim / 100.0) | |
679 | except patch.PatchError, e: |
|
680 | except patch.PatchError, e: | |
680 | if not partial: |
|
681 | if not partial: | |
681 | raise util.Abort(str(e)) |
|
682 | raise util.Abort(str(e)) |
@@ -1533,7 +1533,7 b' def patchrepo(ui, repo, ctx, store, patc' | |||||
1533 | backend = repobackend(ui, repo, ctx, store) |
|
1533 | backend = repobackend(ui, repo, ctx, store) | |
1534 | return patchbackend(ui, backend, patchobj, strip, '', files, eolmode) |
|
1534 | return patchbackend(ui, backend, patchobj, strip, '', files, eolmode) | |
1535 |
|
1535 | |||
1536 | def patch(ui, repo, patchname, strip=1, files=None, eolmode='strict', |
|
1536 | def patch(ui, repo, patchname, strip=1, prefix='', files=None, eolmode='strict', | |
1537 | similarity=0): |
|
1537 | similarity=0): | |
1538 | """Apply <patchname> to the working directory. |
|
1538 | """Apply <patchname> to the working directory. | |
1539 |
|
1539 | |||
@@ -1552,7 +1552,7 b' def patch(ui, repo, patchname, strip=1, ' | |||||
1552 | if patcher: |
|
1552 | if patcher: | |
1553 | return _externalpatch(ui, repo, patcher, patchname, strip, |
|
1553 | return _externalpatch(ui, repo, patcher, patchname, strip, | |
1554 | files, similarity) |
|
1554 | files, similarity) | |
1555 |
return internalpatch(ui, repo, patchname, strip, |
|
1555 | return internalpatch(ui, repo, patchname, strip, prefix, files, eolmode, | |
1556 | similarity) |
|
1556 | similarity) | |
1557 |
|
1557 | |||
1558 | def changedfiles(ui, repo, patchpath, strip=1): |
|
1558 | def changedfiles(ui, repo, patchpath, strip=1): |
@@ -612,12 +612,64 b' Renames and strip' | |||||
612 | a |
|
612 | a | |
613 | R a |
|
613 | R a | |
614 |
|
614 | |||
615 | Renames, similarity and git diff |
|
615 | Prefix with strip, renames, creates etc | |
616 |
|
616 | |||
617 | $ hg revert -aC |
|
617 | $ hg revert -aC | |
618 | undeleting a |
|
618 | undeleting a | |
619 | forgetting b |
|
619 | forgetting b | |
620 | $ rm b |
|
620 | $ rm b | |
|
621 | $ mkdir -p dir/dir2 | |||
|
622 | $ echo b > dir/dir2/b | |||
|
623 | $ echo c > dir/dir2/c | |||
|
624 | $ echo d > dir/d | |||
|
625 | $ hg ci -Am addbcd | |||
|
626 | adding dir/d | |||
|
627 | adding dir/dir2/b | |||
|
628 | adding dir/dir2/c | |||
|
629 | (test that prefixes are relative to the root) | |||
|
630 | $ mkdir tmpdir | |||
|
631 | $ cd tmpdir | |||
|
632 | $ hg import --no-commit -p2 --prefix dir/ - <<EOF | |||
|
633 | > diff --git a/foo/a b/foo/a | |||
|
634 | > new file mode 100644 | |||
|
635 | > --- /dev/null | |||
|
636 | > +++ b/foo/a | |||
|
637 | > @@ -0,0 +1 @@ | |||
|
638 | > +a | |||
|
639 | > diff --git a/foo/dir2/b b/foo/dir2/b2 | |||
|
640 | > rename from foo/dir2/b | |||
|
641 | > rename to foo/dir2/b2 | |||
|
642 | > diff --git a/foo/dir2/c b/foo/dir2/c | |||
|
643 | > --- a/foo/dir2/c | |||
|
644 | > +++ b/foo/dir2/c | |||
|
645 | > @@ -0,0 +1 @@ | |||
|
646 | > +cc | |||
|
647 | > diff --git a/foo/d b/foo/d | |||
|
648 | > deleted file mode 100644 | |||
|
649 | > --- a/foo/d | |||
|
650 | > +++ /dev/null | |||
|
651 | > @@ -1,1 +0,0 @@ | |||
|
652 | > -d | |||
|
653 | > EOF | |||
|
654 | applying patch from stdin | |||
|
655 | $ hg st --copies | |||
|
656 | M dir/dir2/c | |||
|
657 | A dir/a | |||
|
658 | A dir/dir2/b2 | |||
|
659 | dir/dir2/b | |||
|
660 | R dir/d | |||
|
661 | R dir/dir2/b | |||
|
662 | $ cd .. | |||
|
663 | ||||
|
664 | Renames, similarity and git diff | |||
|
665 | ||||
|
666 | $ hg revert -aC | |||
|
667 | forgetting dir/a (glob) | |||
|
668 | undeleting dir/d (glob) | |||
|
669 | undeleting dir/dir2/b (glob) | |||
|
670 | forgetting dir/dir2/b2 (glob) | |||
|
671 | reverting dir/dir2/c (glob) | |||
|
672 | $ rm dir/a dir/dir2/b2 | |||
621 | $ hg import --similarity 90 --no-commit - <<EOF |
|
673 | $ hg import --similarity 90 --no-commit - <<EOF | |
622 | > diff --git a/a b/b |
|
674 | > diff --git a/a b/b | |
623 | > rename from a |
|
675 | > rename from a |
@@ -670,6 +670,25 b' test -p0' | |||||
670 | $ hg status |
|
670 | $ hg status | |
671 | $ cat a |
|
671 | $ cat a | |
672 | bb |
|
672 | bb | |
|
673 | ||||
|
674 | test --prefix | |||
|
675 | ||||
|
676 | $ mkdir -p dir/dir2 | |||
|
677 | $ echo b > dir/dir2/b | |||
|
678 | $ hg ci -Am b | |||
|
679 | adding dir/dir2/b | |||
|
680 | $ hg import -p2 --prefix dir - << EOF | |||
|
681 | > foobar | |||
|
682 | > --- drop1/drop2/dir2/b | |||
|
683 | > +++ drop1/drop2/dir2/b | |||
|
684 | > @@ -1,1 +1,1 @@ | |||
|
685 | > -b | |||
|
686 | > +cc | |||
|
687 | > EOF | |||
|
688 | applying patch from stdin | |||
|
689 | $ hg status | |||
|
690 | $ cat dir/dir2/b | |||
|
691 | cc | |||
673 | $ cd .. |
|
692 | $ cd .. | |
674 |
|
693 | |||
675 |
|
694 |
General Comments 0
You need to be logged in to leave comments.
Login now