# HG changeset patch # User Siddharth Agarwal # Date 1425711379 28800 # Node ID 093e8a5e995f10415f47344d34c5a0f94aa9dc2b # Parent 31e9f66863f31ab3d63241e9d2b9475458151741 commands.import: accept a prefix option The --prefix option is meant to be relative to the root rather than the current working directory. This is for consistency with the rest of 'hg import' -- paths in patches are otherwise considered to be relative to the root. In upcoming patches we'll hook this option up to the patch functions. --exact with --prefix is currently disallowed because I can't really come up with sensible semantics for it, especially when only part of the patch is preserved. diff -r 31e9f66863f3 -r 093e8a5e995f mercurial/commands.py --- a/mercurial/commands.py Tue Mar 10 11:01:10 2015 -0700 +++ b/mercurial/commands.py Fri Mar 06 22:56:19 2015 -0800 @@ -4057,6 +4057,8 @@ _('commit even if some hunks fail')), ('', 'exact', None, _('apply patch to the nodes from which it was generated')), + ('', 'prefix', '', + _('apply patch to directory relative to the root'), _('DIR')), ('', 'import-branch', None, _('use any branch information in patch (implied by --exact)'))] + commitopts + commitopts2 + similarityopts, @@ -4156,6 +4158,8 @@ raise util.Abort(_('cannot use --similarity with --bypass')) if opts.get('exact') and opts.get('edit'): raise util.Abort(_('cannot use --exact with --edit')) + if opts.get('exact') and opts.get('prefix'): + raise util.Abort(_('cannot use --exact with --prefix')) if update: cmdutil.checkunfinished(repo) diff -r 31e9f66863f3 -r 093e8a5e995f tests/test-completion.t --- a/tests/test-completion.t Tue Mar 10 11:01:10 2015 -0700 +++ b/tests/test-completion.t Fri Mar 06 22:56:19 2015 -0800 @@ -268,7 +268,7 @@ heads: rev, topo, active, closed, style, template help: extension, command, keyword identify: rev, num, id, branch, tags, bookmarks, ssh, remotecmd, insecure - import: strip, base, edit, force, no-commit, bypass, partial, exact, import-branch, message, logfile, date, user, similarity + import: strip, base, edit, force, no-commit, bypass, partial, exact, prefix, import-branch, message, logfile, date, user, similarity incoming: force, newest-first, bundle, rev, bookmarks, branch, patch, git, limit, no-merges, stat, graph, style, template, ssh, remotecmd, insecure, subrepos locate: rev, print0, fullpath, include, exclude manifest: rev, all, template diff -r 31e9f66863f3 -r 093e8a5e995f tests/test-import-bypass.t --- a/tests/test-import-bypass.t Tue Mar 10 11:01:10 2015 -0700 +++ b/tests/test-import-bypass.t Fri Mar 06 22:56:19 2015 -0800 @@ -112,6 +112,9 @@ $ hg import --bypass --similarity 50 ../test.diff abort: cannot use --similarity with --bypass [255] + $ hg import --exact --prefix dir/ ../test.diff + abort: cannot use --exact with --prefix + [255] Test commit editor (this also tests that editor is invoked, if the patch doesn't contain