gitlab migrate mergerequests+issues fail #6479

Closed
opened 2025-11-02 06:57:11 -06:00 by GiteaMirror · 17 comments
Owner

Originally created by @6543 on GitHub (Dec 7, 2020).

gitea version: v1.13.0 - master

error message: Migrate repository from https://gitlab.com/troyengel/archbuild failed: Error 1062: Duplicate entry '284-2' for key 'UQE_issue_repo_index'

to reporduce:

if you only migrate one of them it works. so the problem is related to the workaround for new pull indexes

Originally created by @6543 on GitHub (Dec 7, 2020). gitea version: v1.13.0 - master error message: `Migrate repository from https://gitlab.com/troyengel/archbuild failed: Error 1062: Duplicate entry '284-2' for key 'UQE_issue_repo_index'` to reporduce: * create toke at gitlab.com * migrate https://gitlab.com/troyengel/archbuild with pulls and issues if you only migrate one of them it works. so the problem is related to the workaround for new pull indexes
GiteaMirror added the topic/repo-migrationtype/bug labels 2025-11-02 06:57:11 -06:00
Author
Owner

@techknowlogick commented on GitHub (Dec 9, 2020):

This is rather unusual, does that mean Gitlab doesn't maintain that issues and PRs must have unique numbers?

Edit: How would comments that reference an issue that has a a PR with the same ID index?

@techknowlogick commented on GitHub (Dec 9, 2020): This is rather unusual, does that mean Gitlab doesn't maintain that issues and PRs must have unique numbers? Edit: How would comments that reference an issue that has a a PR with the same ID index?
Author
Owner

@rsnyman commented on GitHub (Dec 20, 2020):

@techknowlogick as far as I can tell, in GitLab issues and merge requests are completely separate, so they can easily have "clashing" IDs because they never share data (different tables in the DB I'm guessing). This is in contrast with GitHub which seems to make PRs and Issues the same thing.

@rsnyman commented on GitHub (Dec 20, 2020): @techknowlogick as far as I can tell, in GitLab issues and merge requests are completely separate, so they can easily have "clashing" IDs because they never share data (different tables in the DB I'm guessing). This is in contrast with GitHub which seems to make PRs and Issues the same thing.
Author
Owner

@lunny commented on GitHub (Dec 21, 2020):

So we may have to change the id

@lunny commented on GitHub (Dec 21, 2020): So we may have to change the id
Author
Owner

@techknowlogick commented on GitHub (Dec 28, 2020):

So we may have to change the id

We would need ensure that we modify comments/issues that link to PR use updated ID

@techknowlogick commented on GitHub (Dec 28, 2020): > So we may have to change the id We would need ensure that we modify comments/issues that link to PR use updated ID
Author
Owner

@dayswith commented on GitHub (Dec 15, 2021):

Reproduced this. Slightly different log but same meaning. Running on Docker with version v1.15.7 with Postgres.

gitea       | 2021/12/15 15:56:58 modules/task/task.go:54:handle() [E] Run task failed: pq: duplicate key value violates unique constraint "UQE_issue_repo_index"

Repository used for this: https://gitlab.com/EchidnaHQ/Echidna

@dayswith commented on GitHub (Dec 15, 2021): Reproduced this. Slightly different log but same meaning. Running on Docker with version v1.15.7 with Postgres. ``` gitea | 2021/12/15 15:56:58 modules/task/task.go:54:handle() [E] Run task failed: pq: duplicate key value violates unique constraint "UQE_issue_repo_index" ``` Repository used for this: https://gitlab.com/EchidnaHQ/Echidna
Author
Owner

@dayswith commented on GitHub (Dec 15, 2021):

So we may have to change the id

We would need ensure that we modify comments/issues that link to PR use updated ID

Don't forget about MR and issue references in Git commits. Of course we can't change them, because it will cause the commit to lose its original hash and and thus making commit references in other commits problematic and it will unsign the signed commits, which is not nice because that's the only way to verify that a commit actually came from its author and not people spoofing the git author email and username.

We will have to somehow keep references to the original GitLab issue or MR's ID and make a link for any references to them in Git commits. Perhaps display the original ID as well in the MR/issue page so that noone get confused.

@dayswith commented on GitHub (Dec 15, 2021): > > So we may have to change the id > > We would need ensure that we modify comments/issues that link to PR use updated ID Don't forget about MR and issue references in Git commits. Of course we can't change them, because it will cause the commit to lose its original hash and and thus making commit references in other commits problematic and it will unsign the signed commits, which is not nice because that's the only way to verify that a commit actually came from its author and not people spoofing the git author email and username. We will have to somehow keep references to the original GitLab issue or MR's ID and make a link for any references to them in Git commits. Perhaps display the original ID as well in the MR/issue page so that noone get confused.
Author
Owner

@dayswith commented on GitHub (Dec 15, 2021):

Reproduced on Docker running version v1.16.0+dev-692-gf58e687a8 with Postgres.

Repository: https://gitlab.com/troyengel/archbuild

gitea     | 2021/12/15 21:11:22 ...ervices/task/task.go:56:handle() [E] Run task failed: pq: duplicate key value violates unique constraint "UQE_issue_repo_index"
@dayswith commented on GitHub (Dec 15, 2021): Reproduced on Docker running version v1.16.0+dev-692-gf58e687a8 with Postgres. Repository: https://gitlab.com/troyengel/archbuild ``` gitea | 2021/12/15 21:11:22 ...ervices/task/task.go:56:handle() [E] Run task failed: pq: duplicate key value violates unique constraint "UQE_issue_repo_index" ```
Author
Owner

@dayswith commented on GitHub (Dec 18, 2021):

Wait, there's a fix for this already.

8662ff68da/services/migrations/gitlab.go (L589-L590)

Edit: Nvm, realized https://github.com/go-gitea/gitea/issues/14955#issuecomment-797285240.

@dayswith commented on GitHub (Dec 18, 2021): Wait, there's a fix for this already. https://github.com/go-gitea/gitea/blob/8662ff68dae103f010dd634275d07b17d313d7de/services/migrations/gitlab.go#L589-L590 Edit: Nvm, realized https://github.com/go-gitea/gitea/issues/14955#issuecomment-797285240.
Author
Owner

@ghost commented on GitHub (Jun 27, 2023):

This is still a major issue when migrating from GitLab. I had to drop all merge requests to avoid this error and successfully import my repositories.

@ghost commented on GitHub (Jun 27, 2023): This is still a major issue when migrating from GitLab. I had to drop all merge requests to avoid this error and successfully import my repositories.
Author
Owner

@wetneb commented on GitHub (Dec 8, 2023):

This issue is fixed in Forgejo 1.21.2+0.

@wetneb commented on GitHub (Dec 8, 2023): This issue is fixed in Forgejo 1.21.2+0.
Author
Owner

@delvh commented on GitHub (Dec 8, 2023):

I mean, this isn't forgejo, but yes, if it is fixed there, it most likely will be here too.

@delvh commented on GitHub (Dec 8, 2023): I mean, this isn't forgejo, but yes, if it is fixed there, it most likely will be here too.
Author
Owner

@wetneb commented on GitHub (Dec 8, 2023):

@delvh as far as I am aware, this is not fixed in Gitea yet: I submitted the corresponding pull requests to Forgejo, and I don't think they got cherry-picked by Gitea. So I would keep this issue open.

@wetneb commented on GitHub (Dec 8, 2023): @delvh as far as I am aware, this is not fixed in Gitea yet: I submitted the corresponding pull requests to Forgejo, and I don't think they got cherry-picked by Gitea. So I would keep this issue open.
Author
Owner

@hramrach commented on GitHub (Dec 24, 2023):

Can you link to the fix in forgejo?

Anyway, I suppose if this is to be fixed then

  • An arbitrary prefix needs to be configured for # or ! references for the project (eg. 1000000).
  • #666 would map to #666, and !666 to #1000666 with 1000000 prefix configured for !
  • All issues and PRs can be converted, and references in commit messages resolved as well.

This could be hardcoded but making it per-project configuration sounds more reasonable.

@hramrach commented on GitHub (Dec 24, 2023): Can you link to the fix in forgejo? Anyway, I suppose if this is to be fixed then - An arbitrary prefix needs to be configured for # or ! references for the project (eg. 1000000). - #666 would map to #666, and !666 to #1000666 with 1000000 prefix configured for ! - All issues and PRs can be converted, and references in commit messages resolved as well. This could be hardcoded but making it per-project configuration sounds more reasonable.
Author
Owner

@wetneb commented on GitHub (Dec 26, 2023):

The fix is here: https://codeberg.org/forgejo/forgejo/pulls/1790

@wetneb commented on GitHub (Dec 26, 2023): The fix is here: https://codeberg.org/forgejo/forgejo/pulls/1790
Author
Owner

@lunny commented on GitHub (Dec 26, 2023):

The fix is here: https://codeberg.org/forgejo/forgejo/pulls/1790

Can you send a PR to Gitea too?

@lunny commented on GitHub (Dec 26, 2023): > The fix is here: https://codeberg.org/forgejo/forgejo/pulls/1790 Can you send a PR to Gitea too?
Author
Owner

@wxiaoguang commented on GitHub (Dec 26, 2023):

The fix is here: https://codeberg.org/forgejo/forgejo/pulls/1790

That change doesn't seem ideal. For example, the ? in filename breaks all Windows developers' workspace.

@wxiaoguang commented on GitHub (Dec 26, 2023): > The fix is here: https://codeberg.org/forgejo/forgejo/pulls/1790 That change doesn't seem ideal. For example, the `?` in filename breaks all Windows developers' workspace.
Author
Owner

@hramrach commented on GitHub (Jan 2, 2024):

It's not ideal indeed. It's very explicit about inability to migrate more issues once any PRs are migrated.

In particular mirroring a repository cannot work this way.

Also it is not clear to me how the !1 reference to a PR in the commit message would be resolved with this solution.

@hramrach commented on GitHub (Jan 2, 2024): It's not ideal indeed. It's very explicit about inability to migrate more issues once any PRs are migrated. In particular mirroring a repository cannot work this way. Also it is not clear to me how the !1 reference to a PR in the commit message would be resolved with this solution.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#6479