git + lab = gitlab
lab is a command line tool that wrap git
in order to extend it with extra features and commands that make working with GitLab easier.
$ git lab clone numa08/dejiko
# extends to:
$ git clone git://${gitlab.url}/numa08/dejiko.git
Installation
Mac OS X
Install go-lang (if not already installed)
$ brew install go
When go-lang is installed:
$ brew install libgit2
$ go get gopkg.in/libgit2/git2go.v23
$ go get github.com/plouc/go-gitlab-client
$ go get github.com/codegangsta/cli
Execute from within the git-gitlab repository clone
$ make build
Finally, move build/git-lab
somewhere in $PATH.
Note
OSX El Capitan users may encounter the following error
could not determine kind of name for C.GIT_CHECKOUT_SAFE_CREATE
when running
$ go get gopkg.in/libgit2/git2go.v22
This is because libgit v0.23.x was installed. You need 0.22.x. See libgit2/git2go#181 (comment) for more information.
Archlinux
There is an aur package called git-gitlab.
Configure
Set the value of Gitlab-url and token.
$ git config --global gitlab.url http://gitlab.example.com
$ git config --global gitlab.token GITLAB_SECRET_TOKEN
then, set gitlab namespace and project.
$ git config gitlab.project [NAMESPACE]/[PROJECT]
Commands
git clone
$ git lab clone numa08/dejiko
> git clone git://{gitlab.url}/numa08/dejiko
$ git lab clone -p numa08/dejiko
> git clone git@{gitlab.url}/:numa08/dejiko
merge request
$ git lab merge-request -b basebranch -h headbranch
>open text editor to edit title and body
>open pull request on GitLab
$ git merge-request -b forked:branch -h origin:branch -m "Fix issue #xxx"
git merge
$ git lab merge [MERGE_REQUEST_ID]
git show
$ git lab show -- issue/10
> open http://gitlab.example.com/NAMESPACE/PROJECT/issues/10