graft: assign computed configuration value to statedata instead of opts
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 20 Nov 2024 02:10:43 +0100
changeset 52330 8572e80f978c
parent 52329 5ab77b93567c
child 52331 11fb7f737456
graft: assign computed configuration value to statedata instead of opts The goal is for the graft logic to not deal with the command line option, so lets to reinjecting value in these config option.
mercurial/cmd_impls/graft.py
--- a/mercurial/cmd_impls/graft.py	Tue Nov 19 15:54:20 2024 +0100
+++ b/mercurial/cmd_impls/graft.py	Wed Nov 20 02:10:43 2024 +0100
@@ -96,12 +96,6 @@
         # read in unfinished revisions
         if graftstate.exists():
             statedata = cmdutil.readgraftstate(repo, graftstate)
-            if statedata.get(b'date'):
-                opts['date'] = statedata[b'date']
-            if statedata.get(b'user'):
-                opts['user'] = statedata[b'user']
-            if statedata.get(b'log'):
-                opts['log'] = True
             if statedata.get(b'no_commit'):
                 opts['no_commit'] = statedata.get(b'no_commit')
             if statedata.get(b'base'):
@@ -117,6 +111,17 @@
         cmdutil.bailifchanged(repo)
         revs = logcmdutil.revrange(repo, revs)
 
+    for o in (
+        b'date',
+        b'user',
+        b'log',
+    ):
+        v = opts.get(o.decode('ascii'))
+        # if statedata is already set, it comes from --continue and test says
+        # we should honor them above the options (which seems weird).
+        if v and o not in statedata:
+            statedata[o] = v
+
     skipped = set()
     basectx = None
     if opts.get('base'):
@@ -251,18 +256,11 @@
             extra[b'intermediate-source'] = ctx.hex()
         else:
             extra[b'source'] = ctx.hex()
-        user = ctx.user()
-        if opts.get('user'):
-            user = opts['user']
-            statedata[b'user'] = user
-        date = ctx.date()
-        if opts.get('date'):
-            date = opts['date']
-            statedata[b'date'] = date
+        user = statedata.get(b'user', ctx.user())
+        date = statedata.get(b'date', ctx.date())
         message = ctx.description()
-        if opts.get('log'):
+        if statedata.get(b'log'):
             message += b'\n(grafted from %s)' % ctx.hex()
-            statedata[b'log'] = True
 
         # we don't merge the first commit when continuing
         if not cont: