diff --git a/swh/loader/cvs/loader.py b/swh/loader/cvs/loader.py --- a/swh/loader/cvs/loader.py +++ b/swh/loader/cvs/loader.py @@ -43,6 +43,7 @@ TargetType, TimestampWithTimezone, ) +from swh.storage.algos.snapshot import snapshot_get_latest from swh.storage.interface import StorageInterface DEFAULT_BRANCH = b"HEAD" @@ -96,10 +97,12 @@ # internal state, current visit self._last_revision = None self._visit_status = "full" - self._load_status = "uneventful" self.visit_date = visit_date self.cvsroot_path = cvsroot_path self.snapshot = None + self.last_snapshot: Optional[Snapshot] = snapshot_get_latest( + self.storage, self.origin_url + ) def compute_swh_revision(self, k, logmsg): """Compute swh hash data per CVS changeset. @@ -119,11 +122,6 @@ revision = self.build_swh_revision(k, logmsg, swh_dir.hash, parents) self.log.debug("SWH revision ID: %s" % hashutil.hash_to_hex(revision.id)) self._last_revision = revision - if self._load_status == "uneventful": - # We have an eventful load if this revision is not already - # present in the archive - if not self.storage.revision_get([revision.id])[0]: - self._load_status = "eventful" return (revision, swh_dir) def process_cvs_changesets( @@ -285,7 +283,6 @@ def prepare(self): self._last_revision = None - self._load_status = "uneventful" self.swh_revision_gen = None if not self.cvsroot_path: self.cvsroot_path = tempfile.mkdtemp( @@ -476,8 +473,13 @@ self._revisions = [] def load_status(self): + assert self.snapshot is not None + if self.last_snapshot == self.snapshot: + load_status = "uneventful" + else: + load_status = "eventful" return { - "status": self._load_status, + "status": load_status, } def visit_status(self): diff --git a/swh/loader/cvs/tests/test_loader.py b/swh/loader/cvs/tests/test_loader.py --- a/swh/loader/cvs/tests/test_loader.py +++ b/swh/loader/cvs/tests/test_loader.py @@ -94,6 +94,9 @@ snapshot=RUNBABY_SNAPSHOT.id, ) + loader = CvsLoader( + swh_storage, repo_url, cvsroot_path=os.path.join(tmp_path, archive_name) + ) assert loader.load() == {"status": "uneventful"} visit_status2 = assert_last_visit_matches( loader.storage,