Patchwork import: add a --secret option

login
register
mail settings
Submitter Denis Laxalde
Date Nov. 21, 2019, 9:40 a.m.
Message ID <f847210f92b94a13d7e2.1574329207@steppe.local>
Download mbox | patch
Permalink /patch/43380/
State Accepted
Headers show

Comments

Denis Laxalde - Nov. 21, 2019, 9:40 a.m.
# HG changeset patch
# User Denis Laxalde <denis.laxalde@logilab.fr>
# Date 1574324750 -3600
#      Thu Nov 21 09:25:50 2019 +0100
# Node ID f847210f92b94a13d7e260611e41d5508aeacb99
# Parent  039fbd14d4e2889be830cc114957c31972c6ea04
import: add a --secret option

Similarly to "hg commit", we add a --secret option to "hg import" for
committing with the secret phase. The option has no short form since
there already is a "-s" for "--similarity".

.. feature::

   ``hg import`` has a new --secret option for committing with the
    secret phase.
Yuya Nishihara - Nov. 21, 2019, 12:44 p.m.
On Thu, 21 Nov 2019 10:40:07 +0100, Denis Laxalde wrote:
> # HG changeset patch
> # User Denis Laxalde <denis.laxalde@logilab.fr>
> # Date 1574324750 -3600
> #      Thu Nov 21 09:25:50 2019 +0100
> # Node ID f847210f92b94a13d7e260611e41d5508aeacb99
> # Parent  039fbd14d4e2889be830cc114957c31972c6ea04
> import: add a --secret option
> 
> Similarly to "hg commit", we add a --secret option to "hg import" for
> committing with the secret phase. The option has no short form since
> there already is a "-s" for "--similarity".

Sounds good. Queued, thanks.

Patch

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -1773,6 +1773,8 @@  def tryimportone(ui, repo, patchdata, pa
             overrides = {}
             if partial:
                 overrides[(b'ui', b'allowemptycommit')] = True
+            if opts.get(b'secret'):
+                overrides[(b'phases', b'new-commit')] = b'secret'
             with repo.ui.configoverride(overrides, b'import'):
                 n = repo.commit(
                     message, user, date, match=m, editor=editor, extra=extra
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -4033,6 +4033,7 @@  def identify(
             _(b'NUM'),
         ),
         (b'b', b'base', b'', _(b'base path (DEPRECATED)'), _(b'PATH')),
+        (b'', b'secret', None, _(b'use the secret phase for committing')),
         (b'e', b'edit', False, _(b'invoke editor on commit messages')),
         (
             b'f',
@@ -4181,6 +4182,8 @@  def import_(ui, repo, patch1=None, *patc
     update = not opts.get(b'bypass')
     if not update and opts.get(b'no_commit'):
         raise error.Abort(_(b'cannot use --no-commit with --bypass'))
+    if opts.get(b'secret') and opts.get(b'no_commit'):
+        raise error.Abort(_(b'cannot use --no-commit with --secret'))
     try:
         sim = float(opts.get(b'similarity') or 0)
     except ValueError:
diff --git a/tests/test-import.t b/tests/test-import.t
--- a/tests/test-import.t
+++ b/tests/test-import.t
@@ -435,6 +435,49 @@  hg email --plain, should read X-Mercuria
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     second change
   
+  $ hg --cwd b phase tip
+  1: draft
+  $ rm -r b
+
+
+hg import --secret
+
+  $ hg clone -r0 a b -q
+  $ hg --cwd b import --no-commit --secret ../exported-tip.patch
+  abort: cannot use --no-commit with --secret
+  [255]
+  $ hg --cwd b import --secret ../exported-tip.patch
+  applying ../exported-tip.patch
+  $ hg --cwd b diff -c . --nodates
+  diff -r 80971e65b431 -r 1d4bd90af0e4 a
+  --- a/a
+  +++ b/a
+  @@ -1,1 +1,2 @@
+   line 1
+  +line 2
+  $ hg --cwd b phase
+  1: secret
+  $ hg --cwd b --config extensions.strip= strip 1 --no-backup --quiet
+  $ HGEDITOR=cat hg --cwd b import --secret --edit ../exported-tip.patch
+  applying ../exported-tip.patch
+  second change
+  
+  
+  HG: Enter commit message.  Lines beginning with 'HG:' are removed.
+  HG: Leave message empty to abort commit.
+  HG: --
+  HG: user: someone
+  HG: branch 'default'
+  HG: changed a
+  $ hg --cwd b diff -c . --nodates
+  diff -r 80971e65b431 -r 1d4bd90af0e4 a
+  --- a/a
+  +++ b/a
+  @@ -1,1 +1,2 @@
+   line 1
+  +line 2
+  $ hg --cwd b phase
+  1: secret
   $ rm -r b