Skip to main content

This version of GitHub Enterprise was discontinued on 2023-01-18. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

Migrating to internal repositories

You can migrate to internal repositories to unify the innersource experience for developers using both GitHub Enterprise Server and GitHub Enterprise Cloud.

Who can use this feature

Site administrators can migrate to internal repositories.

About internal repositories

Internal repositories are available in GitHub Enterprise Server 2.20+. You can use internal repositories to practice "innersource" within your enterprise. Members of your enterprise can collaborate using open source methodologies without sharing proprietary information publicly, even with private mode disabled. For more information, see "About repositories."

In future releases of GitHub Enterprise Server, we will adjust how repository visibility works so that the terms public, internal, and private have a uniform meaning for developers on GitHub Enterprise Server and GitHub Enterprise Cloud.

To prepare for these changes, if you have private mode enabled, you can run a migration on your instance to convert public repositories to internal. This migration is currently optional, to allow you to test the changes on a non-production instance. The migration will become mandatory in the future.

When you run the migration, all public repositories owned by organizations on your instance will become internal repositories. If any of those repositories have forks, the forks will become private. Private repositories will remain private.

All public repositories owned by user accounts on your instance will become private repositories. If any of those repositories have forks, the forks will also become private. The owner of each fork will be given read permissions to the fork's parent.

Anonymous Git read access will be disabled for each public repository that becomes internal or private.

If your current default visibility for repositories is public, the default will become internal. If the current default is private, the default will not change. You can change the default at any time. For more information, see "Enforcing repository management policies in your enterprise."

The repository creation policy for the instance will change to disable public repositories and allow private and internal repositories. You can update the policy at any time. For more information, see "Restricting repository creation in your instances."

If you don't have private mode enabled, the migration script will have no effect.

Running the migration

  1. Connect to the administrative shell. For more information, see "Accessing the administrative shell (SSH)."

  2. Run the migration command.

    github-env bin/safe-ruby lib/github/transitions/20191210220630_convert_public_ghes_repos_to_internal.rb --verbose -w |  tee -a /tmp/convert_public_ghes_repos_to_internal.log

Log output will appear in the terminal and /tmp/convert_public_ghes_repos_to_internal.log.

Further reading