Version: 202510101547-git
gitadmin is a comprehensive git repository management tool that supports multiple git hosting providers including GitHub, GitLab, Bitbucket, Codeberg, Forgejo, Gitea, Gogs, Azure DevOps, AWS CodeCommit, and self-hosted solutions.
org)- GitHub organization management (standalone, stays as-is)user)- GitHub user management (standalone, stays as-is)
Each provider has its own command section with consistent subcommands:
github)- GitHub operationsgitlab)- GitLab operationsprivate)- Private/self-hosted Gitea operationsbitbucket)- Bitbucket operationscodeberg)- Codeberg operationsforgejo)- Forgejo operationsgitea)- Gitea operationsgogs)- Gogs operationsazure)- Azure DevOps operationsaws)- AWS CodeCommit operations
Purpose: Manage GitHub organizations
Subcommands:
repos [orgName]- List all repositories in an organizationall [userName]- Clone all organizations owned by userName, then clone all repos from each orgpush [orgName]- Push all repos from an orgpull [orgName]- Pull all repos from an orgclone [orgName]- Clone all repos from an org*(default) - Process comma-separated list of orgs
Helper Functions:
__git_retrieve_orgs()- Get list of orgs for a user__git_all_orgs_clone()- Clone all orgs and their repos__github_org_list_repos()- List repos in an org__github_org_push_repos()- Push all repos in an org__clone_orgs()- Clone org repos__main()- Main cloning function
Workflow:
org repos myorg -> Lists all repos in myorg
org all myusername -> Gets all orgs for myusername, clones all repos from each
org push myorg -> Pushes all local repos for myorg
org pull myorg -> Pulls all repos for myorg
org clone myorg -> Clones all repos from myorg
org org1,org2,org3 -> Clones all repos from multiple orgs
Purpose: Manage GitHub user repositories
Subcommands:
orgs [userName]- List all organizations the user belongs toclone [userName]- Clone all repos owned by the user*(default) - Clone all repos owned by the user
Helper Functions:
__github_user_clone_repos()- Clone all repos owned by a user__git_retrieve_orgs()- Get list of orgs for a user
Workflow:
user orgs myusername -> Lists all orgs myusername belongs to
user clone myusername -> Clones all repos owned by myusername
user myusername -> Clones all repos owned by myusername (default)
Each provider currently has:
create- Create a new repositorydelete- Delete a repositorymodify- Modify repository settings (where supported)repos- List repositories for workspace/org/owner
Each provider needs full org/user-like functionality:
-
List Operations ✓ (completed)
repos [workspace|owner|project]- List all repos
-
Clone Operations (to implement)
clone [workspace|owner]- Clone all reposall [workspace|owner]- Clone all repos with full sync
-
Push/Pull Operations (to implement)
push [workspace|owner]- Push all local repospull [workspace|owner]- Pull all repos
-
User Operations (to implement, if provider supports)
- List user's repos
- Clone user's repos
- Uses "workspaces" instead of orgs
- API: v2.0 REST API
- Pagination: Link header with "next" field
- Uses Forgejo API (Gitea-compatible)
- Standard owner/repo model
- Pagination: Standard page/limit params
- Self-hosted, requires FORGEJO_HOST
- Gitea-compatible API
- Standard owner/repo model
- Self-hosted, requires GITEA_HOST
- Standard owner/repo model
- Pagination: page/limit params
- Self-hosted, requires GOGS_HOST
- Gitea-compatible API (mostly)
- Limited pagination support
- Uses "projects" instead of orgs
- Requires organization name
- Different repo structure
- Region-based
- No org/user concept
- Uses AWS CLI
Provider-specific repos are stored in:
$GITADMIN_DEFAULT_PROJECT_DIR/{provider}/{owner|workspace}/{repo}
Examples:
~/Projects/github/myuser/myrepo
~/Projects/bitbucket/myworkspace/myrepo
~/Projects/codeberg/myuser/myrepo
~/Projects/forgejo/myuser/myrepo
~/Projects/gitea/myuser/myrepo
~/Projects/gogs/myuser/myrepo
~/Projects/azure/myproject/myrepo
~/Projects/aws/myrepo
Each provider needs:
-
API Functions
__curl_{provider}_api()- API authentication wrapper ✓
-
CRUD Functions
__{provider}_create_repo()- Create repository ✓__{provider}_delete_repo()- Delete repository ✓__{provider}_modify_repo()- Modify repository ✓ (where supported)__{provider}_list_repos()- List repositories ✓
-
Clone/Pull/Push Functions (to implement)
__{provider}_user_clone_repos()- Clone all user repos__{provider}_org_clone_repos()- Clone all org/workspace repos__{provider}_org_push_repos()- Push all org/workspace repos__{provider}_org_pull_repos()- Pull all org/workspace repos
-
Supporting Functions (to implement)
__{provider}_retrieve_orgs()- Get list of orgs/workspaces for user__{provider}_all_orgs_clone()- Clone all orgs and their repos
GITADMIN_GITHUB_AUTH_TOKEN- GitHub tokenGITADMIN_GITLAB_AUTH_TOKEN- GitLab tokenGITADMIN_PRIVATE_AUTH_TOKEN- Private Gitea tokenGITADMIN_BITBUCKET_TOKEN- Bitbucket app passwordGITADMIN_CODEBERG_TOKEN- Codeberg tokenGITADMIN_FORGEJO_TOKEN- Forgejo tokenGITADMIN_FORGEJO_HOST- Forgejo instance URLGITADMIN_GITEA_TOKEN- Gitea tokenGITADMIN_GITEA_HOST- Gitea instance URLGITADMIN_GOGS_TOKEN- Gogs tokenGITADMIN_GOGS_HOST- Gogs instance URLGITADMIN_AZURE_TOKEN- Azure DevOps PATGITADMIN_AZURE_ORGANIZATION- Azure DevOps org nameGITADMIN_AWS_ACCESS_KEY- AWS access keyGITADMIN_AWS_SECRET_KEY- AWS secret keyGITADMIN_AWS_REGION- AWS region
GITADMIN_DEFAULT_GIT_DIR_BITBUCKETGITADMIN_DEFAULT_GIT_DIR_CODEBERGGITADMIN_DEFAULT_GIT_DIR_FORGEJOGITADMIN_DEFAULT_GIT_DIR_GITEAGITADMIN_DEFAULT_GIT_DIR_GOGSGITADMIN_DEFAULT_GIT_DIR_AZUREGITADMIN_DEFAULT_GIT_DIR_AWS
- ✓ Basic CRUD operations (completed)
- ✓ List/repos operations (completed)
- Clone operations (in progress)
- Push/Pull operations
- User/org aggregation operations
- Documentation and help text updates
- The main
org)anduser)commands remain GitHub-specific - Each provider gets its own complete set of commands
- All functions use
__prefix to avoid collisions - Follow existing patterns for consistency
- Token creation links shown when credentials not set