changeset 235:027dceaf3de5

Refactor: Move the different implementation paths for updating with one or two parent into different methods
author Franz Glasner <hg@dom66.de>
date Tue, 30 Oct 2018 09:32:46 +0100
parents 0158ebd7285b
children 5e5aac8160d0
files extensions/timestamps.py
diffstat 1 files changed, 38 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/extensions/timestamps.py	Mon Oct 29 09:09:55 2018 +0100
+++ b/extensions/timestamps.py	Tue Oct 30 09:32:46 2018 +0100
@@ -934,35 +934,47 @@
                 if ts is None:
                     self.ui.warn(_("update.timestamps: timestamps database file could not be found or read\n"))
                 else:
-                    to_update = set()
-                    for p in self.__from_parents:
-                        status = self.status(p)
-                        if _DEV:
-                            self.ui.debug("FROM PARENT: " + p + " Status: "
-                                          + repr(status) + '\n')
-                        to_update.update(set(status.added))
-                        to_update.update(set(status.modified))
-                    if _DEV:
-                        self.ui.debug("UPDATE TO_UPDATE: " + repr(to_update)
-                                      + '\n')
-                    ms = _mergemod.mergestate.read(self)
-                    if _DEV:
-                        self.ui.debug("UPDATE MergeState ACTIVE: "
-                                      + repr(ms.active())
-                                      + '\n')
-                        self.ui.debug("UPDATE MergeState FILES: "
-                                      + repr(ms.files()) + '\n')
-                        self.ui.debug("UPDATE MergeState _state: "
-                                      + repr(ms._state) + '\n')
-                    if ms.active():
-                        to_update.difference_update(set(ms.files()))
-                    if _DEV:
-                        self.ui.debug("UPDATE TO_UPDATE w/o resolved: "
-                                      + repr(to_update) + '\n')
-                    _restore_timestamps(self, to_update, tsmatch, ts)
+                    if not parent2:
+                        self._ts_update_update(tsmatch, ts)
+                    else:
+                        self._ts_update_merge(tsmatch, ts)
             else:
                 self.ui.debug("update.timestamps: timestamps not activated/configured\n")
 
+        def _ts_update_update(self, tsmatch, ts):
+            """:hg:`update`, :hg:`merge --abort`"""
+            to_update = set()
+            for p in self.__from_parents:
+                status = self.status(p)
+                if _DEV:
+                    self.ui.debug("FROM PARENT: " + p + " Status: "
+                                  + repr(status) + '\n')
+                to_update.update(set(status.added))
+                to_update.update(set(status.modified))
+            if _DEV:
+                self.ui.debug("UPDATE TO_UPDATE: " + repr(to_update)
+                              + '\n')
+            ms = _mergemod.mergestate.read(self)
+            if _DEV:
+                self.ui.debug("UPDATE MergeState ACTIVE: "
+                              + repr(ms.active())
+                              + '\n')
+                self.ui.debug("UPDATE MergeState FILES: "
+                              + repr(ms.files()) + '\n')
+                self.ui.debug("UPDATE MergeState _state: "
+                              + repr(ms._state) + '\n')
+            if ms.active():
+                to_update.difference_update(set(ms.files()))
+            if _DEV:
+                self.ui.debug("UPDATE TO_UPDATE w/o resolved: "
+                              + repr(to_update) + '\n')
+            _restore_timestamps(self, to_update, tsmatch, ts)
+
+        def _ts_update_merge(self,tsmatch, ts):
+            """:hg:`merge`"""
+            # XXX TBD
+            self._ts_update_update(tsmatch, ts)
+
     repo.__class__ = TimestampedRepo
 
     ui.setconfig('hooks', 'update.timestamps', update_hook)