Cannot Fork via API

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Cannot fork via api using the terraform provider:

terraform {
  required_providers {
    gitlab = {
      source  = "gitlabhq/gitlab"
      version = "17.10.0"
    }
  }
}

resource "gitlab_project" "to-be-forked" {
  name = "to-be-forked"
}

resource "gitlab_project" "forked-one" {
  name                   = "forked-one"
  forked_from_project_id = gitlab_project.to-be-forked.id
}

yields


│ Error: Unable to fork project 68884178: POST https://gitlab.com/api/v4/projects/68884178/fork: 409 {message: [Path has already been taken]}

│   with gitlab_project.forked-one,
│   on main.tf line 14, in resource "gitlab_project" "forked-one":
│   14: resource "gitlab_project" "forked-one" {

the api call seems correct

2025-04-11T08:42:55.167+0200 [DEBUG] provider.terraform-provider-gitlab_v17.10.0: Sending HTTP Request: Accept-Encoding=gzip User-Agent="Terraform/1.9.0 (+https://www.terraform.io) Terraform-Plugin-SDK/2.36.1 terraform-provider-gitlab/17.10.0" @caller=github.com/hashicorp/terraform-plugin-sdk/v2@v2.36.1/helper/logging/logging_http_transport.go:160 tf_http_op_type=request tf_http_req_version=HTTP/1.1 tf_http_trans_id=cf5991c8-74e0-c459-b20e-c4fbafe108d2 @module=gitlab.GitLab Authorization="Bearer glpat-xsVouz5upn5pYC5EDevC" Content-Type=application/json tf_http_req_body="{\"name\":\"forked-one\"}" tf_http_req_method=POST tf_http_req_uri=/api/v4/projects/68884314/fork Accept=application/json Content-Length=21 Host=gitlab.com new_logger_warning="This log was generated by a subsystem logger that wasn't created before being used. Use tflog.NewSubsystem to create this logger before it is used." timestamp="2025-04-11T08:42:55.167+0200"

However, when creating the project and adding the fork relation afterwards works:

$ cat main.tf 
terraform {
  required_providers {
    gitlab = {
      source  = "gitlabhq/gitlab"
      version = "17.10.0"
    }
  }
}

resource "gitlab_project" "to-be-forked" {
  name = "to-be-forked"
}

resource "gitlab_project" "forked-one" {
  name                   = "forked-one"
#  forked_from_project_id = gitlab_project.to-be-forked.id
}

gitlab_project.forked-one: Creating...
gitlab_project.forked-one: Creation complete after 3s [id=68884562]
$ cat main.tf 
terraform {
  required_providers {
    gitlab = {
      source  = "gitlabhq/gitlab"
      version = "17.10.0"
    }
  }
}

resource "gitlab_project" "to-be-forked" {
  name = "to-be-forked"
}

resource "gitlab_project" "forked-one" {
  name                   = "forked-one"
  forked_from_project_id = gitlab_project.to-be-forked.id
}

OpenTofu will perform the following actions:

  # gitlab_project.forked-one will be updated in-place
  ~ resource "gitlab_project" "forked-one" {
      ~ forked_from_project_id                           = 0 -> 68884314
        id                                               = "68884562"
        name                                             = "forked-one"
        tags                                             = []
        # (75 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

OpenTofu will perform the following actions:

  # gitlab_project.forked-one will be updated in-place
  ~ resource "gitlab_project" "forked-one" {
      ~ forked_from_project_id                           = 0 -> 68884314
        id                                               = "68884562"
        name                                             = "forked-one"
        tags                                             = []
        # (75 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

Do you want to perform these actions?
  OpenTofu will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

gitlab_project.forked-one: Modifying... [id=68884562]
gitlab_project.forked-one: Modifications complete after 8s [id=68884562]

Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

This is a regression. It worked fine some time ago.

Edited by 🤖 GitLab Bot 🤖