Cloner: sync - check fingerprint before costy discovery
Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
from repo_cloner.lib import gen_repo_hashed_name
|
||||
from repo_cloner.lib import DirNotFoundError
|
||||
from repo_cloner.lib import ClonerConfig, DiskStoredList, RepoDirStructure, RepoTool
|
||||
from repo_cloner.lib import ClonerConfig, DiskStoredList, RepoDirStructure, RepoTool, DetectedCommit, Detector
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from typing import Optional, Callable
|
||||
from time import time
|
||||
import os
|
||||
import logging
|
||||
@@ -119,11 +119,17 @@ class Cloner:
|
||||
if not self._config.cloner_submodules:
|
||||
return self._repo.fetch()
|
||||
|
||||
fingerprint = self._repo.repo_fingerprint
|
||||
|
||||
# recursive now
|
||||
if not self._repo.fetch():
|
||||
log.critical(f"Repo fetch failed for {self._config.cloner_project_name}")
|
||||
return False
|
||||
|
||||
if fingerprint == self._repo.repo_fingerprint:
|
||||
log.info(f"Repo fingerpring unchanged - submodule discovery skipped")
|
||||
return True
|
||||
|
||||
log.debug(f"Loading submodules.cache")
|
||||
submodules = DiskStoredList(os.path.join(self.__submodule_cache, "submodules.cache"))
|
||||
log.debug(f"Loaded submodules.cache - {len(submodules)} items")
|
||||
@@ -207,3 +213,7 @@ class Cloner:
|
||||
@property
|
||||
def detector_enabled(self) -> bool:
|
||||
return os.path.exists(os.path.join(self._dirs.conf_dir, self.__detector_cfg))
|
||||
|
||||
def run_detector(self, callback: Callable[[DetectedCommit], None]):
|
||||
detector = Detector(self.__main_repo_path, self._dirs.cache_dir, self._config.cloner_project_name)
|
||||
detector.run(callback)
|
||||
|
||||
Reference in New Issue
Block a user