fix: record converted ref mappings (refs/tags/*, refs/heads/*) during import

This commit is contained in:
2026-06-23 22:03:43 +02:00
parent 3536053b44
commit 4d6326231b
+20 -1
View File
@@ -362,10 +362,29 @@ class Mirror:
return git_ref return git_ref
def _write_mappings_to_db(self, mappings: List[Tuple[int, str, str, str]]): def _write_mappings_to_db(self, mappings: List[Tuple[int, str, str, str]]):
"""Bulk-insert parsed mappings into SQLite.""" """Bulk-insert parsed mappings into SQLite.
Also records entries for converted refs (e.g. refs/remotes/origin/tags/*
→ refs/tags/*) so that git_to_svn push logic doesn't re-push them.
"""
logger.info("Writing %d mapping entries to DB…", len(mappings)) logger.info("Writing %d mapping entries to DB…", len(mappings))
for rev, sha, branch, ref in mappings: for rev, sha, branch, ref in mappings:
self.db.record_mapping(rev, sha, branch, ref, source="svn") self.db.record_mapping(rev, sha, branch, ref, source="svn")
# Also record the converted ref if this is a tag
tag_prefix = "refs/remotes/origin/tags/"
if ref.startswith(tag_prefix):
tag_name = ref[len(tag_prefix):]
tag_ref = f"refs/tags/{tag_name}"
self.db.record_mapping(rev, sha, branch, tag_ref, source="svn")
# Convert branch refs too
br_prefix = "refs/remotes/origin/"
if ref.startswith(br_prefix) and not ref.startswith(tag_prefix):
rest = ref[len(br_prefix):]
if rest == "trunk":
head_ref = "refs/heads/master"
else:
head_ref = f"refs/heads/{rest}"
self.db.record_mapping(rev, sha, branch, head_ref, source="svn")
logger.info("Mapping DB now has %d entries", self.db.mapping_count()) logger.info("Mapping DB now has %d entries", self.db.mapping_count())
def _finalize_import_state(self): def _finalize_import_state(self):