On 12/06/2016 05:41 PM, Mateusz Kwapich wrote:
# HG changeset patch
# User Mateusz Kwapich <mitran...@fb.com>
# Date 1479325623 0
#      Wed Nov 16 19:47:03 2016 +0000
# Branch stable
# Node ID 651b6258e993f6d45e4ef7b324303201db5639b2
# Parent  d4a8c386a14b3e455e60fffec7fb315f9629ff12
metaedit: use faster setparents instead of full update

The working copy is not changing so there is no need to extra status call.

Urg, not very enthusiastic. Can we have at least number about this speedup ?

This makes metaedit work on dirty wc.

Note that since the file are identical on both side, we are sure there won't be merge conflict so we could use the update logic (enabling "merging" and that would work as well. I would probably be move comfortable accepting something enable fold from a dirty WC using update and then another one moving to set parent.

diff --git a/hgext/evolve.py b/hgext/evolve.py
--- a/hgext/evolve.py
+++ b/hgext/evolve.py
@@ -3303,7 +3303,7 @@ def metaedit(ui, repo, *revs, **opts):
         if opts['fold']:
             ui.status('%i changesets folded\n' % len(revs))
         if newp1 is not None:
-            hg.update(repo, newp1)
+            repo.setparents(newp1)
     finally:
         lockmod.release(lock, wlock)

diff --git a/tests/test-evolve.t b/tests/test-evolve.t
--- a/tests/test-evolve.t
+++ b/tests/test-evolve.t
@@ -1489,7 +1489,6 @@ check that metaedit respects allowunstab
   abort: cannot fold chain not ending with a head or with branching
   [255]
   $ hg metaedit --user foobar
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg log --template '{rev}: {author}\n' -r '42:' --hidden
   42: test
   43: foobar
@@ -1497,7 +1496,6 @@ check that metaedit respects allowunstab
   43: foobar

   $ HGEDITOR="sed -i'' -e 's/safely/quickly/g'" hg metaedit '.^::.'
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved

   $ HGEDITOR=cat hg metaedit '.^::.' --fold
   HG: This is a fold of 2 changesets.
@@ -1519,7 +1517,6 @@ check that metaedit respects allowunstab
   HG: changed a
   HG: changed newfile
   2 changesets folded
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved

   $ glog -r .
   @  45:ca7a9e928b25@default(draft) amended
@@ -1553,7 +1550,6 @@ no new commit is created here because th

 TODO: don't create a new commit in this case
   $ hg metaedit --config defaults.metaedit=
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg log -r '.^::.' --template '{rev}: {desc|firstline}\n'
   36: add uu
   46: amended
@@ -1570,8 +1566,11 @@ TODO: don't create a new commit in this
   47: foobar2
   $ hg diff -r 45 -r 46 --hidden

-'fold' one commit
+'fold' one commit with dirty wc
+  $ echo x > newfile
   $ hg metaedit 39 --fold --user foobar3
   1 changesets folded
   $ hg log -r 48 --template '{rev}: {author}\n'
   48: foobar3
+  $ hg st -amr
+  M newfile

Cheers,

--
Pierre-Yves David
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to