Patchwork import: show the warning message for failure of merging

login
register
mail settings
Submitter Katsunori FUJIWARA
Date Aug. 27, 2014, 2:24 p.m.
Message ID <e1de69b4b43f21021987.1409149492@feefifofum>
Download mbox | patch
Permalink /patch/5607/
State Accepted
Headers show

Comments

Katsunori FUJIWARA - Aug. 27, 2014, 2:24 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
# Date 1409148606 -32400
#      Wed Aug 27 23:10:06 2014 +0900
# Node ID e1de69b4b43f21021987bfd410d4e7a7f3d29701
# Parent  926bc0d3b595caf37c5d70833a347eb43285de2f
import: show the warning message for failure of merging

Before this patch, no message is shown for failure of merging at "hg
import".

In such case, merging patch is imported as a normal revision silently,
and it may confuse users.

For simplicity, this patch recommends just using "--exact", even
though importing the merging patch itself is possible without it if:

  - the hash of the 1st parent in the patch is equal to one of the
    patch imported just before (or the parent of the working
    directory, for the 1st patch of the series), and

  - the hash of the 2nd parent in the patch is known in the local
    repository
Pierre-Yves David - Aug. 27, 2014, 9 p.m.
On 08/27/2014 04:24 PM, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
> # Date 1409148606 -32400
> #      Wed Aug 27 23:10:06 2014 +0900
> # Node ID e1de69b4b43f21021987bfd410d4e7a7f3d29701
> # Parent  926bc0d3b595caf37c5d70833a347eb43285de2f
> import: show the warning message for failure of merging

This seems to have been ninja queued by Matt (and published)

>
> Before this patch, no message is shown for failure of merging at "hg
> import".
>
> In such case, merging patch is imported as a normal revision silently,
> and it may confuse users.
>
> For simplicity, this patch recommends just using "--exact", even
> though importing the merging patch itself is possible without it if:
>
>    - the hash of the 1st parent in the patch is equal to one of the
>      patch imported just before (or the parent of the working
>      directory, for the 1st patch of the series), and
>
>    - the hash of the 2nd parent in the patch is known in the local
>      repository
>
> diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
> --- a/mercurial/cmdutil.py
> +++ b/mercurial/cmdutil.py
> @@ -651,6 +651,9 @@
>                       p2 = repo[nullid]
>               except error.RepoError:
>                   p1, p2 = parents
> +            if p2.node() == nullid:
> +                ui.warn(_("warning: import the patch as a normal revision\n"
> +                          "(use --exact to import the patch as a merge)\n"))
>           else:
>               p1, p2 = parents
>
> diff --git a/tests/test-import-merge.t b/tests/test-import-merge.t
> --- a/tests/test-import-merge.t
> +++ b/tests/test-import-merge.t
> @@ -72,6 +72,8 @@
>     1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>     $ hg import ../merge.diff
>     applying ../merge.diff
> +  warning: import the patch as a normal revision
> +  (use --exact to import the patch as a merge)
>     $ tipparents
>     2:890ecaa90481 addc
>     $ hg strip --no-backup tip
> @@ -105,6 +107,8 @@
>     1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>     $ hg import --bypass ../merge.diff
>     applying ../merge.diff
> +  warning: import the patch as a normal revision
> +  (use --exact to import the patch as a merge)
>     $ tipparents
>     2:890ecaa90481 addc
>     $ hg strip --no-backup tip
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>

Patch

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -651,6 +651,9 @@ 
                     p2 = repo[nullid]
             except error.RepoError:
                 p1, p2 = parents
+            if p2.node() == nullid:
+                ui.warn(_("warning: import the patch as a normal revision\n"
+                          "(use --exact to import the patch as a merge)\n"))
         else:
             p1, p2 = parents
 
diff --git a/tests/test-import-merge.t b/tests/test-import-merge.t
--- a/tests/test-import-merge.t
+++ b/tests/test-import-merge.t
@@ -72,6 +72,8 @@ 
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg import ../merge.diff
   applying ../merge.diff
+  warning: import the patch as a normal revision
+  (use --exact to import the patch as a merge)
   $ tipparents
   2:890ecaa90481 addc
   $ hg strip --no-backup tip
@@ -105,6 +107,8 @@ 
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg import --bypass ../merge.diff
   applying ../merge.diff
+  warning: import the patch as a normal revision
+  (use --exact to import the patch as a merge)
   $ tipparents
   2:890ecaa90481 addc
   $ hg strip --no-backup tip