Go application that clones or pulls all accessible repositories from various forges
Find a file
2026-05-15 16:47:46 +02:00
.github chore(package): update actions/checkout action to v6 2026-01-20 14:36:45 +00:00
cmd/gogitlabber feat: bump version to v3.0.2 2026-01-20 15:23:39 +01:00
.gitignore feat: added .ansible to gitignore 2025-06-02 18:38:37 +02:00
.goreleaser.yaml feat: move releasing to woodpecker 2026-05-15 16:47:46 +02:00
.woodpecker.yml feat: move releasing to woodpecker 2026-05-15 16:47:46 +02:00
go.mod chore(package): update module github.com/go-git/go-git/v6 to v6.0.0-20260331140939-8126d61b3452 2026-03-31 14:36:58 +00:00
go.sum chore(package): update module github.com/go-git/go-git/v6 to v6.0.0-20260331140939-8126d61b3452 2026-03-31 14:36:58 +00:00
LICENSE feat: added licence 2025-02-27 10:47:55 +00:00
readme.md feat: added git user and mail config 2025-07-07 11:48:50 +02:00
renovate.json feat: added renovate config 2025-02-27 11:50:02 +01:00

GoGitlabber

This project is inspired from the python application called gitlabber (https://github.com/ezbz/gitlabber). It is mainly to learn Golang. But also to make something that specifically solves my problem. 😆

It is definitely not as feature-rich as the original project... 😬

The program can clone and pull all repositories you have access to on a selfhosted or SaaS provided Gitlab or Gitea server. It only supports the HTTP access method.

It will pull the repositories in a tree like structure same as on Gitlab or Gitea.

root [http://gitlab.example.com]
├── group1 [/group1]
│   └── subgroup1 [/group1/subgroup1]
│       └── project1 [/group1/subgroup1/project1]
└── group2 [/group2]
    ├── subgroup1 [/group2/subgroup1]
    │   └── project2 [/group2/subgroup1/project2]
    ├── subgroup2 [/group2/subgroup2]
    └── subgroup3 [/group2/subgroup3]

Config file

GitLab:

# ~/.config/gogitlabber/gitlab.example.com.yaml
concurrency: 15
debug: false
destination: "$HOME/Documents"
git_backend: "gitlab"
git_host: "gitlab.example.com"
git_token: "glpat-"
git_user_mail: "john.doe@example.com"
git_user_name: "John Doe"
include_archived: "excluded"

Usage

gogitlabber -config=~/.config/gogitlabber/gitlab.example.com.yaml

Access Token Permissions

Gitea

Make sure the Gitea Access Token has at least the following permissions:

  • user - read
  • repository - read

Gitlab

Make sure the Gitlab Access Token has the api scope.