# Note, if both the org and project names change, this script will # perform the org transfer first, followed by the project name change. # If there is already a project in the new org with the old name, it # will fail. - name: "Parse repo names for {{ repo.old }} -> {{ repo.new }}" set_fact: oldorg: "{{ repo.old.split('/')[0] }}" neworg: "{{ repo.new.split('/')[0] }}" oldproj: "{{ repo.old.split('/')[1] }}" newproj: "{{ repo.new.split('/')[1] }}" - name: "Make new gitea org" include_tasks: roles/gitea-git-repos/tasks/setup-org.yaml var: org: "{{ neworg }}" - name: "Get repo {{ oldorg }}/{{ oldproj }}" uri: url: "{{ gitea_url }}/api/v1/repos/{{ oldorg }}/{{ oldproj }}" validate_certs: false user: root password: "{{ gitea_root_password }}" force_basic_auth: true register: gitea_repo - name: "Transfer repo ownership from {{ oldorg }}/{{ oldproj }} to {{ neworg }}/{{ oldproj }}" when: "oldorg != neworg" uri: url: "{{ gitea_url }}/{{ oldorg }}/{{ oldproj }}/settings" validate_certs: false user: root password: "{{ gitea_root_password }}" force_basic_auth: true status_code: 302 method: POST body_format: form-urlencoded body: _csrf: "{{ gitea_token }}" action: transfer repo_name: "{{ oldproj }}" new_owner_name: "{{ neworg }}" - name: "Update repo name from {{ neworg }}/{{ oldproj }} to {{ neworg }}/{{ newproj }}" when: "oldproj != newproj" uri: url: "{{ gitea_url }}/{{ neworg }}/{{ oldproj }}/settings" validate_certs: false user: root password: "{{ gitea_root_password }}" force_basic_auth: true status_code: 302 method: POST body_format: form-urlencoded body: _csrf: "{{ gitea_token }}" action: update repo_name: "{{ newproj }}" description: "{{ gitea_repo.json.description }}" website: "{{ gitea_repo.json.website }}"