From cad35f8d9bb4008bc990fc061153e96be7f31a2c Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Tue, 11 Aug 2026 21:01:10 +1000 Subject: [PATCH] repository: stop migration_mirror_interval planning an update every run Why: - The go-gitea/gitea provider schema defaults migration_mirror_interval to "8h0m0s", but on read it writes repo.MirrorInterval straight back into state, and Gitea returns an empty MirrorInterval for non-mirror repositories. - So the stored value ("") never matches the schema default ("8h0m0s"), and tofu plans an in-place update of every gitea_repository on every run even with no config change, keeping terraform-git plans perpetually dirty. - migration_mirror_interval is the only migration_* field read back from the API; the rest are write-only migration options, so no sibling field churns. Change: - Add a targeted ignore_changes on migration_mirror_interval at the repository module so the provider default no longer fights Gitea's empty value, making every repository idempotent. It is a migration-only knob with no drift to track for these non-mirror repos. --- modules/gitea_instance/modules/repository/main.tf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/gitea_instance/modules/repository/main.tf b/modules/gitea_instance/modules/repository/main.tf index b714315..f0b6073 100644 --- a/modules/gitea_instance/modules/repository/main.tf +++ b/modules/gitea_instance/modules/repository/main.tf @@ -17,4 +17,9 @@ resource "gitea_repository" "this" { website = var.website autodetect_manual_merge = var.autodetect_manual_merge archive_on_destroy = true + + lifecycle { + # migration_mirror_interval defaults to "8h0m0s" but Gitea returns an empty MirrorInterval for non-mirror repos, so the read-back never matches and plans a spurious update every run; it is a migration-only knob with no drift to track here. + ignore_changes = [migration_mirror_interval] + } }