Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/patch.py @ 21553:bee0e1cffdd3
import: add --partial flag to create a changeset despite failed hunks
The `hg import` command gains a `--partial` flag. When specified, a commit will
always be created from a patch import. Any hunk that fails to apply will
create .rej file, same as what `hg qimport` would do. This change is mainly
aimed at preserving changeset metadata when applying a patch, something very
important for reviewers.
In case of failure with `--partial`, `hg import` returns 1 and the following
message is displayed:
patch applied partially
(fix the .rej files and run `hg commit --amend`)
When multiple patches are imported, we stop at the first one with failed hunks.
In the future, someone may feel brave enough to tackle a --continue flag to
import.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 08 May 2014 17:08:17 -0700 |
parents | 4e2fb0ad00a9 |
children | 2a095d3442e0 |
comparison
equal
deleted
inserted
replaced
21552:61151f429a5f | 21553:bee0e1cffdd3 |
---|---|
1519 Returns whether patch was applied with fuzz factor. | 1519 Returns whether patch was applied with fuzz factor. |
1520 """ | 1520 """ |
1521 patcher = ui.config('ui', 'patch') | 1521 patcher = ui.config('ui', 'patch') |
1522 if files is None: | 1522 if files is None: |
1523 files = set() | 1523 files = set() |
1524 try: | 1524 if patcher: |
1525 if patcher: | 1525 return _externalpatch(ui, repo, patcher, patchname, strip, |
1526 return _externalpatch(ui, repo, patcher, patchname, strip, | 1526 files, similarity) |
1527 files, similarity) | 1527 return internalpatch(ui, repo, patchname, strip, files, eolmode, |
1528 return internalpatch(ui, repo, patchname, strip, files, eolmode, | 1528 similarity) |
1529 similarity) | |
1530 except PatchError, err: | |
1531 raise util.Abort(str(err)) | |
1532 | 1529 |
1533 def changedfiles(ui, repo, patchpath, strip=1): | 1530 def changedfiles(ui, repo, patchpath, strip=1): |
1534 backend = fsbackend(ui, repo.root) | 1531 backend = fsbackend(ui, repo.root) |
1535 fp = open(patchpath, 'rb') | 1532 fp = open(patchpath, 'rb') |
1536 try: | 1533 try: |