Skip to content

Instantly share code, notes, and snippets.

@dylan-asos
Created February 5, 2024 15:00
Show Gist options
  • Save dylan-asos/f000bba0cbcaa07cd4dcb7872dea0f58 to your computer and use it in GitHub Desktop.
Save dylan-asos/f000bba0cbcaa07cd4dcb7872dea0f58 to your computer and use it in GitHub Desktop.
Clone GitHub Team Permissions
public async Task CloneTeamPermissions()
{
var gitApi = new GitHubClient(new ProductHeaderValue("my-app"));
var tokenAuth = new Credentials("finely-grained-pat-with-repo-permissions");
gitApi.Credentials = tokenAuth;
const string organisationName = "your-org";
const string teamToClonePermissionsFrom = "your-team";
const string targetTeamToApplyPermissionsTo = "your-target-team";
var sourceTeam = await gitApi.Organization.Team.GetByName(organisationName, teamToClonePermissionsFrom);
var teamRepos = await gitApi.Organization.Team.GetAllRepositories(sourceTeam.Id);
var teamRepositories = teamRepos.ToList();
foreach (var repo in teamRepositories)
{
var permission = "pull";
if (repo.Permissions.Maintain)
{
permission = "maintain";
}
else if (repo.Permissions.Push)
{
permission = "push";
}
await gitApi.Organization.Team.AddOrUpdateTeamRepositoryPermissions(
organisationName, targetTeamToApplyPermissionsTo,
repo.Owner.Login, repo.Name, permission);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment