Patchwork [6,of,8] largefiles: divide "_lfautocommit='rebase'" scope into small ones

login
register
mail settings
Submitter Katsunori FUJIWARA
Date Sept. 9, 2014, 6:18 p.m.
Message ID <514254647d89290af5d2.1410286730@feefifofum>
Download mbox | patch
Permalink /patch/5753/
State Changes Requested
Headers show

Comments

Katsunori FUJIWARA - Sept. 9, 2014, 6:18 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
# Date 1410286453 -32400
#      Wed Sep 10 03:14:13 2014 +0900
# Node ID 514254647d89290af5d2d036479accda1e8ea729
# Parent  99a716366e69fccab7d1f6909d6c737a24385d90
largefiles: divide "_lfautocommit='rebase'" scope into small ones

Before this patch, "_lfautocommit='rebase'" scope covers whole "hg
rebase" execution. But only committing and merging need it.

This patch divides "_lfautocommit='rebase'" scope into 2 small ones
below.

  - "rebase.concludenode()" for committing the rebased revision
    (to execute "Case 0" code path in "lfilesrepo.commit")

  - "rebase.rebasenode()" for merging target revision
    (to suppress displaying some status messages)

Wrapping functions "rebaseconcludenode" and "rebaserebasenode" are
very simple ones, because these will be replaced soon in subsequent
patches.

This patch also removes "_lfautocommit='rebase'" scope for "hg pull
--rebase", because it collides against above ones.

"try/finally" clause for "_lfautocommit='rebase'" scope is kept to
reduce changes in this patch. "pull --rebase" specific code path will
be removed in the future, because it is now equal to "orig"
invocation.

Patch

diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -723,7 +723,6 @@ 
         source = 'default'
     repo.lfpullsource = source
     if opts.get('rebase', False):
-        repo._lfautocommit = 'rebase'
         try:
             if opts.get('update'):
                 del opts['update']
@@ -742,7 +741,7 @@ 
             if revspostpull > revsprepull:
                 result = result or rebase.rebase(ui, repo)
         finally:
-            repo._lfautocommit = False
+            pass
     else:
         result = orig(ui, repo, source, **opts)
     revspostpull = len(repo)
@@ -817,13 +816,6 @@ 
 
     return result
 
-def overriderebase(orig, ui, repo, **opts):
-    repo._lfautocommit = 'rebase'
-    try:
-        return orig(ui, repo, **opts)
-    finally:
-        repo._lfautocommit = False
-
 def overridearchive(orig, repo, dest, node, kind, decode=True, matchfn=None,
             prefix=None, mtime=None, subrepos=None):
     # No need to lock because we are only reading history and
@@ -1363,3 +1355,17 @@ 
             repo._lfautocommit = False
 
     return orig(commandname, repo, wrapper)
+
+def rebaseconcludenode(orig, repo, *args, **kwargs):
+    repo._lfautocommit = 'rebase'
+    try:
+        return orig(repo, *args, **kwargs)
+    finally:
+        repo._lfautocommit = False
+
+def rebaserebasenode(orig, repo, *args, **kwargs):
+    repo._lfautocommit = 'rebase'
+    try:
+        return orig(repo, *args, **kwargs)
+    finally:
+        repo._lfautocommit = False
diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py
--- a/hgext/largefiles/uisetup.py
+++ b/hgext/largefiles/uisetup.py
@@ -171,8 +171,10 @@ 
             extensions.wrapcommand(getattr(module, 'cmdtable'), 'purge',
                 overrides.overridepurge)
         if name == 'rebase':
-            extensions.wrapcommand(getattr(module, 'cmdtable'), 'rebase',
-                overrides.overriderebase)
+            extensions.wrapfunction(module, 'concludenode',
+                                    overrides.rebaseconcludenode)
+            extensions.wrapfunction(module, 'rebasenode',
+                                    overrides.rebaserebasenode)
         if name == 'transplant':
             extensions.wrapcommand(getattr(module, 'cmdtable'), 'transplant',
                 overrides.overridetransplant)