Import repositories
Repositories are where your code is stored. When developers make changes to code in a Harness Code repository, those changes are tracked with version control. Harness Code fosters collaboration and governance with code reviews, approvals, status checks, and more.
You can create repositories directly in Harness Code or import repositories from other Git SCM providers, such as GitHub, GitLab, BitBucket, and more.
Harness Code Repository provides an easy option in the UI to import git repositories directly into your account. This feature only imports the Git data of the repository. You can also use the harness-migrate tool to seamlessly migrate all data from other Git SCM providers. For details, refer to the Migrate repositories section.
Migrate repositories
Harness provides a CLI tool to fully migrate git repositories as well as all meta data (including: Pull Requests, Labels, Webhooks, and Branch Rules) associated with those repositories. Refer to the tool's open source repository for all available options. The migration tool can be run from a command line on your laptop or directly on your self-hosted SCM server to avoid potential networking issues or firewall restrictions. You can also run the migration tool in a CI/CD pipeline to automate the migration process.
Import repositories
-
In the Harness Code module, make sure you are at the scope where you want to import repositories.
You can import repos at the account, organization, or project scope. For example, a repo imported at the account scope is available to the entire account, whereas a repo imported at the project scope is limited to that project.
-
Select Repositories, select the dropdown next to New Repository, and then select Import Repository or Import Repositories.
- Import Repository: Import a single repository.
- Import Repositories: Import all repositories in a GitHub/Gitea/Gogs organization, GitLab group, or Bitbucket project or workspace. Harness won't import repositories with conflicting names.
-
Select the Git Provider, such as GitHub or GitLab.
-
Depending on the provider, provide the administrative entity (Organization, Project, Workspace, or Group) and Host URL (if applicable) associated with your repository.
-
If you are importing a single repository, enter the name of the repository you want to import in Repository.
Harness automatically populates the Name field based on the Repository field.
If you want or need to change the repository name in Harness Code, you can change the Name field.
Repository names in Harness Code can't contain the following strings:
account.org.project..git -
If the repository or entity is private, select Requires Authorization and provide authorization credentials to access the repository.
Permissions required for tokens depend on the provider, for example:
- To import a Bitbucket Server repository, your BitBucket Server personal access token must have repository
Readpermissions. - To import a GitHub repository, your GitHub classic personal access token must have
repoandread:orgpermissions. - To import a GitLab repository, your GitLab personal access token must have
read_apiandread_repositoryscopes. - To import an Azure DevOps repository, your Azure DevOps personal access token must have
Code (read)scope.
- To import a Bitbucket Server repository, your BitBucket Server personal access token must have repository
Before the repository contents are fetched, Harness calls the source provider's API to resolve repository metadata (a single lookup, or paginated lists for Import Repositories). Every provider applies its own API rate limits.
- Without authorization: Requests are unauthenticated. On SaaS providers such as GitHub, GitLab, and Bitbucket Cloud, unauthenticated limits are typically tied to the outbound IP address and tend to be low, so this quota can be exhausted quickly when you import at scale. Self-hosted providers may not enforce a rate limit by default, or may apply different rules; check with your provider administrator or their documentation.
- With authorization: Requests use your credential's rate limit, which is usually much higher and independent of the unauthenticated IP quota.
If you see a rate limit error during import, repeat the import with Requires Authorization selected and provide a valid token for the source provider.
Harness recommends selecting Requires Authorization for any provider when you import many repositories, retry imports often, or import from large organizations, groups, projects, or workspaces. Use it for private repositories (required) and for public repositories when you want reliable imports that do not compete for the shared unauthenticated IP quota.
- Select your preference for visibility (Public or Private).
- Select Import Repository or Import Repositories.
You can observe in-progress imports on the Repositories page.
To cancel an in-progress import, locate the in-progress import on the Repositories page, select More options (⋮), and then select Cancel Import.
Work with repositories
After importing a repository, you can:
- Clone your repository.
- Create branches and tags.
- Commit changes and open pull requests.
- Configure branch rules and access control.
- Use Harness Code repositories in your Harness pipelines.
- Set up triggers to automatically run pipelines based on activity in your Harness Code repositories.
- Configure webhooks to integrate your repositories with third-party applications.