This provides the gitlab-sync tool which clones GitLab and updates repositories.
You will need to have SSH access configured for GitLab, and have created a personal access token with API access.
The config goes in ~/.config/gitlab-sync.toml
or ~/.gitlab-sync.toml
,
which is TOML.
["~/team-x"]
access-token = "9koXpg98eAheJpvBs5tK"
# you can see the paths of groups from the URL on GitLab
paths = [ "path/to/team-x" ]
# strip the common prefix from the given path
strip-path = true
strategy = "mirror"
["~/gitlab"]
# get the gitlab access token from running a command
access-token = ["pass", "GitLab/api-access-token"]
# paths to clone from GitLab, can include slashes for groups/projects
paths = [ "mintel", "obristow" ]
strategy = "mirror"
$ gitlab-sync local-update
You have to define a strategy for each local copy you define in config, the strategy defines what will happen when gitlab-sync runs over the given copy.
- delete repositories which no longer exist remotely
- move repositories which have been moved remotely
- update local repositories
- clean local repositories (prune+gc)
- clone new repositories
This is good for having a local copy which you can use to perform searches
in using something like ag
.
The local copies should not be modified by users.
- flesh out integration tests
- cater for new repositories being made locally and pushed remotely
- compare (toasted-)marshmallow as a replacement for attr+voluptious - marshmallow uses attr