GitLab에서도 Commit Hash에서 해당 MR을 찾고 싶습니다.
8245 단어 ShellScriptGitLabGitEmacs
무슨 일이야?
코드가 변경된 GitLab의 Merge Request (MR)로 Emacs에서 (터미널에서) 단번에 점프 할 수 있습니다.
(최신 버전은 여기에 있습니다)
GitHub/gitlab-mr-from-commit
터미널에서 브라우저 MR로 비행
Emacs에서 브라우저 MR로 비행
제약
git remote -v
했을 때의 URL이 https://
로 시작된다 ( git@
그렇다고 현행 버젼이라고 실패한다.요망하면 개수합니다) tig
가 설치되어 있다 vc-annotate
가 설치되어 있습니다.동기 부여
여러 사람이 개발하고 있다면 "이 코드는 어떤 경위로 쓰여졌을까"라고 여러가지 생각해 해당 Pull Request(Merge Request)를 찾는 기회가 늘어났다. 그럴 때마다 브라우저를 열고 해당 파일을 찾아서 git blame
하고 링크를 따라 와서.....
그런 때 Emacs에서 현재 보고 있는 행을 변경한 PR을 열도록 했다 라는 기사를 발견. 이것은 Git Hub에서 비슷한 일을 할 수 있었기 때문에 Git Lab에서도 하고 싶다! 라고 생각했습니다.
실행 방법
다음의 스크립트를 적당한 곳에 둔다(이름은 gitlab-mr-from-commit
실행 권한을 부여하는 것을 잊지 마세요 ( chmod +x gitlab-mr-from-commit
)
#!/bin/bash
# NOTE: Get it from gitlab
PRIVATE_TOKEN='[YOUR PRIVATE TOKEN]'
# NOTE: Get it from your project's setting page
PROJECT_ID='[YOUR PROJECT ID]'
# NOTE: URL should start from `[https|http]://`
PROJECT_URL=$(git config remote.origin.url | cut -f2 | rev | cut -c 5- | rev)
# NOTE: Set your commit hash
COMMIT_HASH=$1
# Get response
curl_response=$(curl -s --request GET --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" https://gitlab.com/api/v4/projects/${PROJECT_ID}/repository/commits/${COMMIT_HASH}/merge_requests)
# Convert response into json format
response_json=$(echo "${curl_response}" | cut -c 2- | rev | cut -c 2- | rev)
# MR's ID
mr_id=$(echo "${response_json}" | jq -r '.iid')
# NOTE: Choose your fav browser
open -a "Google Chrome" ${PROJECT_URL}/merge_requests/${mr_id}
1. gitlab에서 private access token 얻기
여기에서 갈 수 있습니다.gitlab-mr-from-commit
의 PRIVATE_TOKEN 부분에 다음과 같이 붙여넣기
# NOTE: Get it from gitlab
PRIVATE_TOKEN='ABCDEFGH'
2. gitlab의 project id 얻기
https://gitlab.com/USER_NAME/PROJECT_NAME/edit
gitlab-mr-from-commit
의 PROJECT_ID 부분에 다음과 같이 붙여 넣기
# NOTE: Get it from your project's setting page
PROJECT_ID='12345'
터미널에서 해보자!
1. 터미널에서 gitlab 프로젝트로 이동
$ cd my-gitlab-project
2. .tigrc에 다음을 추가
# .tigrc
bind generic O @gitlab-mr-from-commit %(commit)
3. 터미널에서 다음과 같이 실행
# tigでやりたい人は
$ tig [FILE]
# tigで該当Commitにカーソルをあわせて, `O`
# or
$ gitlab-mr-from-commit [COMMIT_HASH]
Emacs에서 해보자!
평상시 코드 리딩은 Emacs로 하고 있으므로, Emacs상에서 MR에 날 수 있으면 편리(정직 이것이 본제)
Emacs에서 현재 보고 있는 행을 변경한 PR을 열도록 했다 을 참고로.
1. init.el 에 다음을 기술
;; init.elに記述
(defun gitlab-open-mr ()
(interactive)
(let* ((rev-at-line (vc-annotate-extract-revision-at-line))
(rev (car rev-at-line)))
(shell-command (concat "gitlab-mr-from-commit " rev))))
;; キーバインドはお好みで
(global-set-key (kbd "C-o") 'gitlab-open-mr)
2. vc-annotate 시작
M-x vc-annotate
3. 해당 변경 사항으로 이동하여 gitlab-open-mr을 시작합니다.
Ctrl+o
코드
코드 자체는 여기에 둡니다 (현재 꽤 잡이므로, 개수의 PR 대환영입니다)
GitHub/gitlab-mr-from-commit
참고
Emacs에서 현재 보고 있는 행을 변경한 PR을 열도록 했다
Commit Hash에서 해당 Pull Request를 찾는 방법
List Merge Requests associated with a commit
다음의 스크립트를 적당한 곳에 둔다(이름은
gitlab-mr-from-commit
실행 권한을 부여하는 것을 잊지 마세요 ( chmod +x gitlab-mr-from-commit
)#!/bin/bash
# NOTE: Get it from gitlab
PRIVATE_TOKEN='[YOUR PRIVATE TOKEN]'
# NOTE: Get it from your project's setting page
PROJECT_ID='[YOUR PROJECT ID]'
# NOTE: URL should start from `[https|http]://`
PROJECT_URL=$(git config remote.origin.url | cut -f2 | rev | cut -c 5- | rev)
# NOTE: Set your commit hash
COMMIT_HASH=$1
# Get response
curl_response=$(curl -s --request GET --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" https://gitlab.com/api/v4/projects/${PROJECT_ID}/repository/commits/${COMMIT_HASH}/merge_requests)
# Convert response into json format
response_json=$(echo "${curl_response}" | cut -c 2- | rev | cut -c 2- | rev)
# MR's ID
mr_id=$(echo "${response_json}" | jq -r '.iid')
# NOTE: Choose your fav browser
open -a "Google Chrome" ${PROJECT_URL}/merge_requests/${mr_id}
1. gitlab에서 private access token 얻기
여기에서 갈 수 있습니다.
gitlab-mr-from-commit
의 PRIVATE_TOKEN 부분에 다음과 같이 붙여넣기# NOTE: Get it from gitlab
PRIVATE_TOKEN='ABCDEFGH'
2. gitlab의 project id 얻기
https://gitlab.com/USER_NAME/PROJECT_NAME/edit
gitlab-mr-from-commit
의 PROJECT_ID 부분에 다음과 같이 붙여 넣기# NOTE: Get it from your project's setting page
PROJECT_ID='12345'
터미널에서 해보자!
1. 터미널에서 gitlab 프로젝트로 이동
$ cd my-gitlab-project
2. .tigrc에 다음을 추가
# .tigrc
bind generic O @gitlab-mr-from-commit %(commit)
3. 터미널에서 다음과 같이 실행
# tigでやりたい人は
$ tig [FILE]
# tigで該当Commitにカーソルをあわせて, `O`
# or
$ gitlab-mr-from-commit [COMMIT_HASH]
Emacs에서 해보자!
평상시 코드 리딩은 Emacs로 하고 있으므로, Emacs상에서 MR에 날 수 있으면 편리(정직 이것이 본제)
Emacs에서 현재 보고 있는 행을 변경한 PR을 열도록 했다 을 참고로.
1. init.el 에 다음을 기술
;; init.elに記述
(defun gitlab-open-mr ()
(interactive)
(let* ((rev-at-line (vc-annotate-extract-revision-at-line))
(rev (car rev-at-line)))
(shell-command (concat "gitlab-mr-from-commit " rev))))
;; キーバインドはお好みで
(global-set-key (kbd "C-o") 'gitlab-open-mr)
2. vc-annotate 시작
M-x vc-annotate
3. 해당 변경 사항으로 이동하여 gitlab-open-mr을 시작합니다.
Ctrl+o
코드
코드 자체는 여기에 둡니다 (현재 꽤 잡이므로, 개수의 PR 대환영입니다)
GitHub/gitlab-mr-from-commit
참고
Emacs에서 현재 보고 있는 행을 변경한 PR을 열도록 했다
Commit Hash에서 해당 Pull Request를 찾는 방법
List Merge Requests associated with a commit
Reference
이 문제에 관하여(GitLab에서도 Commit Hash에서 해당 MR을 찾고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/blue0513/items/dd8cfd8ad80af3b61b69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)