Git/GitLab
< Git
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Download all repositories
Gitlab server
Note: Pending update 2020, to distinguish all repos vs private to view as it's a difference when hosting on GitLab.com and your own server where 'public' repos are still private to you. This is not a case for GitLab.com You can get token when log in to your account > settings and generate access token. Assign all permissions. Also so you know v3 APIs may be deployed on older version Gitlab.
#!/bin/bash # Get pages count of all repos you can access # $ curl --head "http://<host.com>/api/v4/projects?private_token=<token>=100&page=1" | grep Total # X-Total: 509 # X-Total-Pages: 6 #Create JSON file with repo name and path #for PAGE in {1..6}; do curl "<host.com>/api/v4/projects?private_token=CMQdz-Qik8XanGYJTbnH&per_page=100&page=$PAGE" | jq --raw-output --compact-output ".[] | { "path": .path, "git": .ssh_url_to_repo }" >> repos.json; done [ -d repos ] || mkdir repos cd repos while read repo; do THEPATH=$(echo "$repo" | jq -r ".path") echo "path: $THEPATH" GIT=$(echo "$repo" | jq -r ".git") echo "git: $GIT" if [ ! -d "$THEPATH" ]; then echo "Cloning $THEPATH ( $GIT )" git clone "$GIT" else echo "Pulling $THEPATH" (cd "$THEPATH" && git pull) fi done < "../$FILENAME" cd ..
Example repos.json
{"path":"project-x","git":"git@<host.com>:Spikes/project-x.git"} {"path":"project-y","git":"git@<host.com>:Spikes/AWS/project-y.git"}
Gitlab.com (SaaS)
Download all private repositories from a given group. Tested on Sep-2021.
#!/bin/bash PAT=11111111111111111111 GROUP_NAME=platform GROUP_ID=1234567 FILE=ume-gitlab.com-${GROUP_NAME}-$(date +"%Y%m%d-%H%M").json curl -s --header "PRIVATE-TOKEN: ${PAT}" https://gitlab.com/api/v4/groups/${GROUP_ID} | jq . > $FILE for repo in $(cat $FILE | jq ".projects[].ssh_url_to_repo" | tr -d '"'); do repo_dir=${repo%.git}; repo_dir=${repo_dir##*/} [ ! -d $repo_dir ] && git clone $repo || { cd $repo_dir; git pull; cd -; } done
Gitlab - glab
cli
$ glab auth login ? What GitLab instance do you want to log into? gitlab.com - Logging into gitlab.com Tip: you can generate a Personal Access Token here https://gitlab.com/-/profile/personal_access_tokens The minimum required scopes are 'api' and 'write_repository'. ? Paste your authentication token: ******************** ? Choose default git protocol HTTPS ? Authenticate Git with your GitLab credentials? Yes - glab config set -h gitlab.com git_protocol https ✓ Configured git protocol - glab config set -h gitlab.com api_protocol https ✓ Configured API protocol ✓ Logged in as piotr # cd to repo, so the tool knows which remote project talk to glab mr view <merge_request_id> glab mr accept <merge_request_id> glab mr merge <merge_request_id> # Create MR using git only. The title is the last commit message eg. JIRA-1234: Update README git push --set-upstream origin mybranch -o merge_request.create
Reset a user password
This could be also root user.
ubuntu@gitlab:~$ sudo gitlab-rails console ------------------------------------------------------------------------------------- GitLab: 11.4.0 (6ebbd70) GitLab Shell: 8.3.3 postgresql: 9.6.8 ------------------------------------------------------------------------------------- Loading production environment (Rails 4.2.10) irb(main):001:0> user = User.find_by(username: "bob") user = User.find_by(id: 1) //by id => #<User id:5 @bob> irb(main):002:0> user.password = 'test1234' //at least 8 characters long => "test1" irb(main):003:0> user.password_confirmation = 'test1234' => "test1" irb(main):007:0> user.unlock_access! => true irb(main):008:0> user.save! => false
Deployment token
In course to grant access to a single repository for reading, writting or both we can use feature called Deploy Tokens. Go to repository > repository settings > Deploy Tokens to create one.
Access repository
# Syntax # git clone http://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git # Example git clone https://darkmatter:PLjeFh56F15yJeq8xrZv@gitlab.com/hackerrank1/apache-nginx-ssl.git Cloning into 'apache-nginx-ssl'... remote: Enumerating objects: 110, done. remote: Counting objects: 100% (110/110), done. ...
- References
- Deploy Tokens Introduced in GitLab 10.7.