All articles

Troubleshooting

"Troubleshooting: git push fails with 403 after moving a repository"

Why push returns 403 after you transfer or rename a GitHub repository, and how to repoint it with Re-sync from GitHub so pushes work again.

Why fetch works but push fails

When you transfer a repository to an organization (or rename it) on GitHub, the old owner/repo path still exists as a redirect. GitHub quietly forwards fetch and clone to the new location, so pulls keep working and everything looks fine, until you push.

Push is not redirected. GitHub rejects a push to the old path with a 403 (permission denied), because CICDoo and your instance still have the old owner stored as the remote. The fix is to point CICDoo at the new owner and let your instances pick up the change.

Fix the main repository

  1. Open the project and go to Settings, then the GitHub tab.
  2. The Repository field is read-only on purpose. Click Re-sync from GitHub: CICDoo asks GitHub for the repository's current name and updates the owner automatically. The field refreshes to the new owner/repo.
  3. Restart each instance of the project. On restart, the instance repoints its checkout to the new owner. Your files and uncommitted changes in the editor are left untouched, only the remote URL changes. See Restarting, stopping and removing an instance.

After the restart, run your push again from the editor terminal. It should succeed instead of returning 403.

Submodules and Extra Repositories

If it was a submodule (an entry in Extra Repositories) that moved, you usually do not have to do anything: a running instance detects the move and repoints that submodule on its own within about ten seconds, so the next push works.

If the submodule lives on a non-GitHub host, or you would rather be explicit, edit its URL in the instance Settings, on the Odoo sub-tab under Extra Repositories, and restart the instance. Submodules are re-cloned from that list on every restart, so the new URL takes effect immediately. See Instance settings explained.

If Re-sync cannot find the repository

Re-sync uses the GitHub token connected for the repository owner. If the token no longer has access to the moved repository (for example it was transferred to an organization the token cannot see), Re-sync reports that it could not find the repository. Reconnect GitHub or grant the token access to the new owner, then try again. See Connecting GitHub.

If you get stuck, open a support ticket from the Tickets page or the chat widget.

Still stuck? Open a ticket from the app or talk to an engineer.