Lab wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab, including seamless workflows for creating merge requests, issues and snippets.
$ lab clone gitlab-com/infrastructure
# expands to:
$ git clone [email protected]:gitlab-com/infrastructure
lab will look for hub and uses that as your git binary when available so you don't have to give up hub to use lab
$ lab version
git version 2.11.0
hub version 2.3.0-pre9
lab version 0.19.0
The hub tool made my life significantly easier and still does! lab is heavily inspired by hub and attempts to provide a similar feel.
Dependencies
git
orhub
brew install lab
nix-env -f '<nixpkgs>' -iA gitAndTools.lab
scoop bucket add zaquestion https://github.com/zaquestion/scoop-bucket.git
scoop install lab
apk add lab
Installs lab into /usr/local/bin/
curl -s https://raw.githubusercontent.com/zaquestion/lab/master/install.sh | sudo bash
NOTE: Please take care when executing scripts in this fashion. Make sure you trust the developer providing the script and consider peeking at the install script itself (ours is pretty simple ;)
Head to the releases page and download your preferred release
Required
git clone [email protected]:zaquestion/lab
cd lab
go install -ldflags "-X \"main.version=$(git rev-parse --short=10 HEAD)\"" .
or
make install
See the contribution guide.
lab
needs your GitLab information in order to interact with to your GitLab
instance. There are several ways to provide this information to lab
:
- environment variables:
LAB_CORE_HOST
,LAB_CORE_TOKEN
;- If these variables are set, the config files will not be updated.
- environment variables:
CI_PROJECT_URL
,CI_JOB_TOKEN
;- Note: these are meant for when
lab
is running within a GitLab CI pipeline - If these variables are set, the config files will not be updated.
- Note: these are meant for when
- local configuration file in Tom's Obvious, Minimal Language (TOML):
./lab.toml
;- No other config files will be used as overrides if a local configuration file is specified
- user-specific configuration file in TOML:
~/.config/lab/lab.toml
. - work-tree configuration file in TOML:
.git/lab/lab.toml
. The values in this file will override any values set in the user-specific configuration file.
If no suitable config values are found, lab
will prompt for your GitLab
information and save it into ~/.config/lab/lab.toml
.
For example:
$ lab
Enter default GitLab host (default: https://gitlab.com):
Enter default GitLab token:
Command-specific flags can be set in the config files.
[mr_show]
comments = true # sets --comments on 'mr show' commands
lab
provides completions for Bash, Elvish, Fish, Powershell, Xonsh and Zsh.
Scripts can be directly sourced (though using pre-generated versions is recommended to avoid shell startup delay):
# bash (~/.bashrc)
source <(lab completion)
# elvish (~/.elvish/rc.elv)
eval (lab completion|slurp)
# fish (~/.config/fish/config.fish)
lab completion | source
# powershell (~/.config/powershell/Microsoft.PowerShell_profile.ps1)
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
lab completion | Out-String | Invoke-Expression
# xonsh (~/.config/xonsh/rc.xsh)
COMPLETIONS_CONFIRM=True
exec($(lab completion xonsh))
# zsh (~/.zshrc)
source <(lab completion zsh)
Like hub, lab feels best when aliased as git
, however it's perfectly reasonable to use as a standalone tool. In your .bashrc
or .bash_profile
:
alias git=lab
NOTE: before aliasing, if you use git in your shell prompt command, be sure lab works by it's own first:
What about GLab?
Both glab and lab
are open-source tools with the same goal of bringing GitLab to your command line and simplifying the developer workflower. In many ways lab
is to hub, what glab is to gh.
lab
aims to feel familiar to a git
user and leverages git
to power many of it's commands. glab
will feel more familiar to gh
users and in turn is more interactive and likely more beginner friendly for that reason.
$ lab
Enter GitLab host (default: https://gitlab.com):
To the extent possible under law,
Zaq? Wiedmann
has waived all copyright and related or neighboring rights to
Lab.
This work is published from:
United States.