diff --git a/internal/command/meta_backend_migrate.go b/internal/command/meta_backend_migrate.go index d868200f1..15206bf8a 100644 --- a/internal/command/meta_backend_migrate.go +++ b/internal/command/meta_backend_migrate.go @@ -77,13 +77,26 @@ func (m *Meta) backendMigrateState(opts *backendMigrateOpts) error { // as we are migrating away and will not break a remote workspace. m.ignoreRemoteBackendVersionConflict(opts.Source) - for _, workspace := range destinationWorkspaces { + // Disregard remote Terraform version if instructed to do so via CLI flag. + if m.ignoreRemoteVersion { + m.ignoreRemoteBackendVersionConflict(opts.Destination) + } else { // Check the remote Terraform version for the state destination backend. If // it's a Terraform Cloud remote backend, we want to ensure that we don't // break the workspace by uploading an incompatible state file. - diags := m.remoteBackendVersionCheck(opts.Destination, workspace) - if diags.HasErrors() { - return diags.Err() + for _, workspace := range destinationWorkspaces { + diags := m.remoteBackendVersionCheck(opts.Destination, workspace) + if diags.HasErrors() { + return diags.Err() + } + } + // If there are no specified destination workspaces, perform a remote + // backend version check with the default workspace. + if len(destinationWorkspaces) == 0 { + diags := m.remoteBackendVersionCheck(opts.Destination, backend.DefaultStateName) + if diags.HasErrors() { + return diags.Err() + } } }