D8199: scmutil: add option to register summary callbacks as transaction validators

2020-03-11 Thread pulkit (Pulkit Goyal)
Closed by commit rHGf4c01f43132a: scmutil: add option to register summary 
callbacks as transaction validators (authored by pulkit).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs 
Review".

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D8199?vs=20405=20738

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D8199/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D8199

AFFECTED FILES
  mercurial/scmutil.py

CHANGE DETAILS

diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -1900,8 +1900,11 @@
 _reportstroubledchangesets = True
 
 
-def registersummarycallback(repo, otr, txnname=b''):
+def registersummarycallback(repo, otr, txnname=b'', as_validator=False):
 """register a callback to issue a summary after the transaction is closed
+
+If as_validator is true, then the callbacks are registered as transaction
+validators instead
 """
 
 def txmatch(sources):
@@ -1927,7 +1930,10 @@
 func(repo, tr)
 
 newcat = b'%02i-txnreport' % len(categories)
-otr.addpostclose(newcat, wrapped)
+if as_validator:
+otr.addvalidator(newcat, wrapped)
+else:
+otr.addpostclose(newcat, wrapped)
 categories.append(newcat)
 return wrapped
 
@@ -1942,6 +1948,8 @@
 if cgheads:
 htext = _(b" (%+d heads)") % cgheads
 msg = _(b"added %d changesets with %d changes to %d files%s\n")
+if as_validator:
+msg = _(b"adding %d changesets with %d changes to %d 
files%s\n")
 assert repo is not None  # help pytype
 repo.ui.status(msg % (cgchangesets, cgrevisions, cgfiles, htext))
 
@@ -1954,7 +1962,10 @@
 if newmarkers:
 repo.ui.status(_(b'%i new obsolescence markers\n') % 
newmarkers)
 if obsoleted:
-repo.ui.status(_(b'obsoleted %i changesets\n') % 
len(obsoleted))
+msg = _(b'obsoleted %i changesets\n')
+if as_validator:
+msg = _(b'obsoleting %i changesets\n')
+repo.ui.status(msg % len(obsoleted))
 
 if obsolete.isenabled(
 repo, obsolete.createmarkersopt
@@ -2057,9 +2068,10 @@
 ]
 if not published:
 return
-repo.ui.status(
-_(b'%d local changesets published\n') % len(published)
-)
+msg = _(b'%d local changesets published\n')
+if as_validator:
+msg = _(b'%d local changesets will be published\n')
+repo.ui.status(msg % len(published))
 
 
 def getinstabilitymessage(delta, instability):



To: pulkit, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D8199: scmutil: add option to register summary callbacks as transaction validators

2020-02-28 Thread pulkit (Pulkit Goyal)
pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  We have a list of summary callbacks which are run after the transaction is
  closed to show what has changed and what not. This patch makes it possible to
  register those callbacks as transaction validators so that we can show summary
  before committing the transaction and prompt user to accept the changes.
  
  The goal of this is to implement `pull --confirm`.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8199

AFFECTED FILES
  mercurial/scmutil.py

CHANGE DETAILS

diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -1900,8 +1900,11 @@
 _reportstroubledchangesets = True
 
 
-def registersummarycallback(repo, otr, txnname=b''):
+def registersummarycallback(repo, otr, txnname=b'', as_validator=False):
 """register a callback to issue a summary after the transaction is closed
+
+If as_validator is true, then the callbacks are registered as transaction
+validators instead
 """
 
 def txmatch(sources):
@@ -1927,7 +1930,10 @@
 func(repo, tr)
 
 newcat = b'%02i-txnreport' % len(categories)
-otr.addpostclose(newcat, wrapped)
+if as_validator:
+otr.addvalidator(newcat, wrapped)
+else:
+otr.addpostclose(newcat, wrapped)
 categories.append(newcat)
 return wrapped
 
@@ -1942,6 +1948,8 @@
 if cgheads:
 htext = _(b" (%+d heads)") % cgheads
 msg = _(b"added %d changesets with %d changes to %d files%s\n")
+if as_validator:
+msg = _(b"adding %d changesets with %d changes to %d 
files%s\n")
 assert repo is not None  # help pytype
 repo.ui.status(msg % (cgchangesets, cgrevisions, cgfiles, htext))
 
@@ -1954,7 +1962,10 @@
 if newmarkers:
 repo.ui.status(_(b'%i new obsolescence markers\n') % 
newmarkers)
 if obsoleted:
-repo.ui.status(_(b'obsoleted %i changesets\n') % 
len(obsoleted))
+msg = _(b'obsoleted %i changesets\n')
+if as_validator:
+msg = _(b'obsoleting %i changesets\n')
+repo.ui.status(msg % len(obsoleted))
 
 if obsolete.isenabled(
 repo, obsolete.createmarkersopt
@@ -2057,9 +2068,10 @@
 ]
 if not published:
 return
-repo.ui.status(
-_(b'%d local changesets published\n') % len(published)
-)
+msg = _(b'%d local changesets published\n')
+if as_validator:
+msg = _(b'%d local changesets will be published\n')
+repo.ui.status(msg % len(published))
 
 
 def getinstabilitymessage(delta, instability):



To: pulkit, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel