Gerrit-퀵 가이드
Gerrit는 Git 과 통합되고 Git 버전 제어 시스템 위에 구축 된 웹 기반 코드 검토 도구입니다 (개발자가 함께 작업하고 작업 기록을 유지하는 데 도움이 됨). 코드 검토가 끝나면 변경 사항을 Git 저장소에 병합 할 수 있습니다.
Gerrit는 Java, Servlet, GWT (Google Web Toolkit)로 작성된 Google의 Shawn Pearce 가 개발했습니다 . Gerrit의 안정적인 릴리스는 2.12.2이며 Apache License v2에 따라 라이선스가 부여 된 2016 년 3 월 11 일에 게시되었습니다 .
왜 Gerrit를 사용합니까?
다음은 Gerrit를 사용해야하는 특정 이유입니다.
Gerrit를 사용하여 소스 코드에서 오류를 쉽게 찾을 수 있습니다.
일반 Git 클라이언트가있는 경우 Gerrit로 작업 할 수 있습니다. Gerrit 클라이언트를 설치할 필요가 없습니다.
Gerrit는 개발자와 git 저장소 사이의 중개자로 사용될 수 있습니다.
Gerrit의 특징
Gerrit는 무료이며 오픈 소스 Git 버전 제어 시스템입니다.
Gerrit의 사용자 인터페이스는 Google Web Toolkit 에서 형성됩니다 .
모든 커밋을 검토하기위한 경량 프레임 워크입니다.
Gerrit는 코드를 푸시하고 커밋에 대한 검토를 생성하는 저장소 역할을합니다.
Gerrit의 장점
Gerrit는 코드 검토를 위해 Git 리포지토리 및 웹 프런트 엔드에 대한 액세스 제어를 제공합니다.
추가 명령 줄 도구를 사용하지 않고 코드를 푸시 할 수 있습니다.
Gerrit는 저장소 수준 및 분기 수준까지 권한을 허용하거나 거부 할 수 있습니다.
Gerrit는 Eclipse에서 지원됩니다.
Gerrit의 단점
코드 커밋을 검토, 확인 및 다시 제출하면 출시 시간이 단축됩니다.
Gerrit는 Git에서만 작동 할 수 있습니다.
Gerrit는 느리고 변경 사항이 나열되는 정렬 순서를 변경할 수 없습니다.
Gerrit에 저장소를 추가하려면 관리자 권한이 필요합니다.
Gerrit를 사용하려면 먼저 Git을 설치하고 몇 가지 기본 구성 변경을 수행해야합니다. 다음은 다른 플랫폼에 Git 클라이언트를 설치하는 단계입니다.
Git 클라이언트 설치
리눅스
소프트웨어 패키지 관리 도구를 사용하여 Linux에 Git을 설치할 수 있습니다. 예를 들어 Fedora를 사용하는 경우 다음과 같이 사용할 수 있습니다.
sudo yum install git
Ubuntu와 같은 Debian 기반 배포판을 사용하는 경우 다음 명령을 사용하십시오.
sudo apt-get install git
윈도우
Git 웹 사이트에서 다운로드하여 Windows에 Git을 설치할 수 있습니다. msysgit.github.io 링크 로 이동 하여 다운로드 버튼을 클릭하십시오.
맥
Git은 다음 명령을 사용하여 Mac에 설치할 수 있습니다.
brew install git
Git을 설치하는 또 다른 방법은 Git 웹 사이트에서 다운로드하는 것입니다. Mac 에 Git 설치 링크 로 이동하면 Mac 플랫폼 용 Git이 설치됩니다.
Git을 설치 한 후에는 개인 정보를 추가하기 위해 구성 변수를 사용자 정의해야합니다. -l 옵션과 함께 git config 라는 Git 도구를 사용하여 구성 변수를 가져오고 설정할 수 있습니다 (이 옵션은 현재 구성을 제공함).
git config -l
위의 명령을 실행하면 다음 이미지와 같이 구성 변수가 표시됩니다.
명령을 다시 사용하여 언제든지 사용자 정의 정보를 변경할 수 있습니다. 다음 장에서는 git config 명령 을 사용하여 사용자 이름과 사용자 이메일을 구성하는 방법을 배웁니다 .
이름 과 이메일 변수를 설정하여 각 커밋을 추적 할 수 있습니다 . name 변수는 이름을 지정하고 email 변수는 Git 커밋과 관련된 이메일 주소를 식별합니다. 다음 명령을 사용하여 설정할 수 있습니다.
git config --global user.email "[email protected]"
git config --global user.name "your_name"
위의 명령을 실행하면 다음 이미지와 같이 사용자 이름과 이메일 주소가 표시됩니다.
SSH는 원격 컴퓨터에서 네트워크 서비스에 안전하게 액세스하는 데 사용되는 Secure Shell 또는 때로는 Secure Socket Shell 프로토콜을 의미합니다. SSH 키를 설정하여 컴퓨터와 Gerrit간에 안정적인 연결을 제공 할 수 있습니다.
Git Bash에서 다음 명령을 사용하여 로컬 컴퓨터의 기존 SSH 키를 확인할 수 있습니다.
$ ls ~/.ssh
Enter 버튼을 클릭하면 다음 이미지와 같이 기존 SSH 키가 표시됩니다.
기존 SSH 키를 찾지 못한 경우 새 SSH 키를 생성해야합니다.
새 SSH 키 생성
Git Bash에서 다음 명령을 사용하여 인증을위한 새 SSH 키를 생성 할 수 있습니다.
$ ssh-keygen -t rsa -C "[email protected]"
SSH 키가 이미있는 경우 덮어 쓰게되므로 새 키를 생성하지 마십시오. ssh-keygen 명령은 Git Bash와 함께 Git을 설치 한 경우에만 사용할 수 있습니다 .
위의 명령을 실행하면 ~ / .ssh 디렉토리 에 2 개의 파일이 생성됩니다 .
~/.ssh/id_rsa − 개인 키 또는 식별 키입니다.
~/.ssh/id_rsa.pub − 공공 TV입니다.
나중에 논의되는 다른 플랫폼의 ssh-agent에 SSH 키를 추가 할 수 있습니다.
리눅스
Linux 시스템에서 다음 명령을 사용하여 SSH 키를 추가하십시오.
cat /home/<local-user>/.ssh/id_rsa.pub
윈도우
GIT GUI를 열고 Help → Show SSH Key 다음 이미지에 표시된대로.
그런 다음 Copy To Clipboard 버튼을 클릭하여 키를 클립 보드에 복사합니다.
맥
Mac OS X에서는 다음 명령을 사용하여 id_rsa.pub 내용을 클립 보드에 복사 할 수 있습니다 .
$ pbcopy < ~/.ssh/id_rsa.pub
SSH 키는 다음 단계를 사용하여 Gerrit 계정에 추가 할 수 있습니다.
Step 1− 먼저 wmflabs.org 서비스 에서 계정을 생성 합니다.
Step 2− 다음 으로 Gerrit 웹 인터페이스에 로그인 합니다.
Step 3 − 그런 다음 오른쪽 상단에서 사용자 이름을 클릭하고 설정 옵션을 선택합니다.
여기에서 Gerrit를 사용하기 위해 John이라는 이름의 계정을 만들었습니다.
Step 4 − 왼쪽 메뉴에서 "SSH 공개 키"옵션을 클릭하고 필드에 SSH 공개 키를 붙여 넣습니다.
다음 명령을 사용하여 Git에 SSH 키를 추가 할 수 있습니다.
Step 1 − Git Bash를 열고 다음 명령을 사용하여 ssh-agent를 가져옵니다.
$ eval 'ssh-agent'
Step 2 − 다음으로 다음 명령을 사용하여 SSH 키를 ssh-agent에 추가합니다.
$ ssh-add ~/.ssh/id_rsa
Step 3 − 이제 처음 로깅 할 때 사용한 SSH 지문과 일치하는 다음 명령을 사용하여 ssh를 실행합니다.
$ ssh -p 29418 <user_name>@gerrit.wikimedia.org
위의 스크린 샷에서 xyz123 Gerrit 계정을 만들 때 사용되는 인스턴스 셸 계정 이름입니다. Abc123 Gerrit 계정의 사용자 이름입니다.
Git을 사용하여 예제를 다운로드 할 수 있습니다. gerrit.wikimedia.org 다음 Git Bash 명령을 사용합니다.
$ git clone
ssh://<user_name>@gerrit.wikimedia.org:29418/mediawiki/extensions/examples
자식 복제 명령은 새 디렉토리에 디렉토리를 복제합니다; 즉, 기존 저장소 의 복사본을 가져 옵니다 . 위의 명령을 실행하면 다음과 유사한 스크린 샷이 표시됩니다.
위의 명령은 'examples'저장소를 복제하고 해당 저장소에서 객체, 파일 등을 수신하여 로컬 브랜치에 저장합니다.
이 장에서 논의한대로 다른 플랫폼에 git-review 를 설치하여 Gerrit와 함께 작업 할 수 있습니다 .
윈도우
Windows에서는 다음 단계에 나열된대로 git-review를 설치할 수 있습니다.
Step 1− 먼저 git-review 설치를 위해 Python 을 설치합니다.
Step 2 − 다른 디렉토리에 설치하는 대신 Python 설치를 기본 디렉토리 (예 : C : \ Python27)에 유지하십시오.
Step 3 − 다음으로 경로를 사용하여 Python 스크립트 디렉토리에 대한 환경 변수를 설정합니다. C:\Python27\;C:\Python27\Scripts\;
git_review_install
Step 4− 버전 2.7에서는 Python이 자동으로 pip를 설치합니다. 이전 버전의 Python 2.7의 경우이 링크에 설명 된대로 pip를 설치할 수 있습니다 .
Step 5 − Open Git Bash를 실행하고 다음 명령을 사용하여 git-review를 설치합니다.
$ pip install git-review
리눅스
Linux에서는 다음 단계에 설명 된대로 git-review를 설치할 수 있습니다.
Step 1Linux 플랫폼 사용자는 공유 호스트에 대한 루트 액세스 권한이 없습니다. 따라서 루트 액세스없이 다음 명령을 사용하여 사용자 디렉토리에 로컬로 git-review를 설치할 수 있습니다.
virtualenv --python=/usr/bin/python2.6 virtualenv
virtualenv/bin/pip install git-review==1.21
Step 2 − 두 가지 방법을 사용하여 경로를 로컬 바이너리로 확장 할 수 있습니다.
PATH=$PATH:~/virtualenv/bin/
PATH=~/virtualenv/bin/:$PATH
Step 3 − 이제 다음 명령을 사용하여 Gerrit 작업을 설정합니다.
git review -s
or
~/virtualenv/bin/git-review -s
Step 4 − 루트 액세스 권한이있는 경우 다음 명령을 사용하여 git-review를 설치할 수 있습니다.
sudo apt-get install git-review
Step 5− Python을 설치 한 후 apt-get 이 없으면 다음 명령을 사용하십시오.
$ sudo easy_install pip
$ sudo pip install git-review==1.21
Step 6 − Gerrit를 사용하려면 다음 명령을 실행하십시오.
git review -s
맥 OS X
Mac에서는 다음 단계를 사용하여 git-review를 설치할 수 있습니다.
Step 1−이 링크 에서 Homebrew를 설치하십시오 .
Step 2 − 다음으로 다음 명령을 사용하여 git-review를 설치합니다.
brew install git-review
Gerrit는 다른 호스트에서 코드를 추출하고, 코드에 변경 사항을 푸시하고, 검토를 위해 코드를 제출하는 등 Git 버전 제어 시스템을 기반으로 구축되었습니다. Git의 기본 원격 이름은 origin이며 git-review에이를 사용하도록 지시합니다. 다음 명령을 사용하여 'origin' 이름을 지정 하십시오.
$ git config --global gitreview.remote origin
Git-review를 사용하여 검토를 위해 git 브랜치를 Gerrit에 보낼 수 있습니다. 프로젝트 디렉토리에서 다음 명령을 사용하여 gitreview를 설정할 수 있습니다.
$ git review -s
Git-review는 Git 복제를 구성하고, Gerrit에 브랜치를 제출하고, 기존 파일을 가져 오는 등의 명령 줄 도구로 사용할 수 있습니다. Git-review는 기본적으로 Gerrit로 작업하기 위해 gerrit라는 원격 이름을 찾습니다.
git-review가 Gerrit 원격을 찾으면 분기를 HEAD:refs/for/master원격 위치에서 Gerrit 원격 액세스가없는 경우 git-review는 .gitreview gerrit 원격 정보와 함께 저장소의 루트에있는 파일.
힘내 검토는 내부적으로 다음을 처리합니다-
분기 제출을 위해 원격 저장소가 작동하는지 여부를 확인합니다.
Gerrit 원격 액세스가없는 경우 사용자 이름을 요청하고 저장소에 다시 액세스를 시도합니다.
Gerrit를 가리키는 gerrit라는 원격 액세스를 생성합니다.
commit-msg 후크를 설치합니다.
다음 명령을 사용하여 마스터 브랜치를 최신 상태로 만들 수 있습니다. git-pull 명령은 다른 로컬 브랜치에서 가져 오거나 다른 저장소와 통합됩니다.
git pull origin master
이 명령은 원본 원격 (가져올 원격의 URL), 마스터 분기에서 변경 사항을 가져와 로컬 체크 아웃 분기의 변경 사항을 병합합니다.
원본 마스터는 원본에서 가져온 마지막 복사본의 캐시 된 복사본입니다.
Git pull은 git fetch (원격 저장소에서 새 커밋을 가져옴)와 git merge (새 커밋을 로컬 브랜치에 통합)의 조합입니다.
Git pull은 기본적으로 로컬 브랜치를 원격 브랜치와 병합합니다.
다음 명령을 사용하여 로컬 컴퓨터에 분기를 만들 수 있습니다.
$ git checkout -b name_of_branch origin/master
위의 명령은 다음 스크린 샷과 같이 새 분기를 만듭니다.
여기서 우리는 branch123새로운 지역 지점으로. 다음 명령을 사용하여 '마스터'에서 새 분기를 표시 할 수 있습니다.
$ git branch
위의 명령은 다음 스크린 샷과 같은 결과를 생성합니다.
Git 체크 아웃 은 브랜치 사이를 탐색하고 작업 디렉토리의 파일을 업데이트하며 Git에 해당 브랜치의 커밋을 기록하도록 알립니다.
로컬 파일 시스템에서 코드를 수정할 때 다음 명령을 사용하여 디렉토리 내의 변경 사항을 확인할 수 있습니다.
$ git diff
프로젝트 디렉토리에서 다음과 같은 파일의 일부 변경 사항을 수정합니다. Example/Example.hooks.php위의 명령을 실행하십시오. 다음 스크린 샷과 같은 결과를 얻을 수 있습니다.
다음 명령을 사용하여 파일 또는 디렉토리의 변경 사항을 확인할 수 있습니다.
$ git status
위의 명령을 사용하면 스테이징 된 변경 사항, 그렇지 않은 변경 사항 및 Git에서 추적하지 않는 파일을 확인할 수 있습니다.
다음으로 작업 디렉토리에 변경 사항을 추가하고 다음 명령을 사용하여 다음 커밋에서 파일을 업데이트 할 수 있습니다.
$ git add Example/Example.hooks.php
파일을 추가 한 후 git status 명령을 다시 실행 하여 다음 스크린 샷과 같이 스테이징 영역에 추가 된 변경 사항을 검토합니다.
다음 명령을 사용하여 인덱스와 마지막 커밋의 차이점과 준비된 콘텐츠를 확인할 수 있습니다.
$ git diff --cached
다음 명령을 사용하여 로컬 저장소에서 원격 디렉토리로 변경 사항을 푸시 할 수 있습니다.
$ git commit
위의 명령을 실행하면 변경 사항에 대한 커밋 메시지를 추가하라는 메시지가 표시됩니다. 이 메시지는 커밋을 다른 저장소로 푸시 할 때 다른 사람에게 표시됩니다.
커밋 메시지를 추가하고 명령을 git commit으로 다시 실행 하면 다음 스크린 샷과 같이 커밋 메시지가 표시됩니다.
마스터에 병합하기 전에 Gerrit의 변경 사항을 검토해야합니다. 마스터에서 발생한 변경 사항을 동기화 할 수 있습니다. 작업 한 분기 내에서 다음 명령을 사용하십시오.
$ git pull --rebase origin master
위의 명령은 원격 브랜치에서 변경 사항 또는 커밋을 가져오고 마스터 위에 커밋을 리베이스합니다.
변경을 완료하고 커밋을 다시 기반으로 한 경우 변경 세트를 Gerrit에 푸시하여 검토 할 수 있습니다.
Git pull --rebase는 변경 사항에 별도의 분기가 필요하지 않을 때 자주 사용됩니다.
Git pull은 git fetch와 git merge의 조합입니다. 여기서 git pull --rebase 는 git fetch와 git rebase의 조합입니다.
먼저 다음 스크린 샷과 같이 git pull origin master 로 명령을 실행합니다 .
이제 다음 스크린 샷과 같이 명령을 git rebase master로 사용하여 커밋을 리베이스합니다.
다음을 사용하여 검토를 위해 패치를 제출할 수 있습니다. git-review명령. 변경 세트는 다음을 실행하여 Gerrit에 푸시 할 수 있습니다.git review -R 다음 스크린 샷에 표시된대로 명령.
그만큼 -R 옵션은 git 변경 사항을 Gerrit에 제출하기 전에 rebase를 완료하지 않도록 git-review에 알립니다.
다음 명령을 사용하여 마스터가 아닌 다른 분기에 코드를 제출할 수 있습니다.
git review name_of_branch
다음 명령을 사용하여 코드를 다른 리모컨으로 제출할 수도 있습니다.
git review -r name_of_remote
변경 사항은이 링크 를 클릭하여 Gerrit 대시 보드에서 볼 수 있습니다 .
수정 된 작성자 이름 링크를 클릭하면 다음 스크린 샷이 표시됩니다.
다음 스크린 샷과 같이 다른 세부 정보와 함께 변경된 파일을 보려면 확산 링크를 클릭하십시오.
다음 단계와 같이 Gerrit 계정에 로그인 한 후 웹 인터페이스를 통해 프로젝트를 편집 할 수 있습니다.
Step 1−이 링크 를 클릭하여 Gerrit 대시 보드로 이동합니다 . 다음 스크린 샷이 표시됩니다.
Step 2 − 다음으로 mediawiki/extensions/examples프로젝트 열에 지정된 링크 .
Step 3− 다음 스크린 샷과 같이 툴바에서 일반 링크를 클릭합니다 .
Step 4− 일반 링크 를 열면 다음과 같은 스크린 샷이 표시됩니다.
Step 5− Create Change 버튼을 클릭하면 다음 스크린 샷과 같이 세부 정보가 포함 된 팝업 창이 열립니다.
Step 6− 정보를 입력하고 생성 버튼을 클릭 합니다.
변경 사항을 생성하면 다음 스크린 샷과 같은 정보가 표시됩니다.
Step 7− 편집 을 클릭 한 다음 추가 를 클릭 합니다. 이제 편집 할 파일을 선택하십시오. 여기에서 파일을 선택했습니다.Example/i18n/en.json.
파일을 열면 다음 스크린 샷에 지정된대로 json 데이터가 표시됩니다.
Step 8− 저장을 클릭 한 다음 닫기 버튼 을 클릭 합니다.
Step 9− 마지막으로 게시 버튼을 클릭 하여 편집 된 파일을 게시합니다.
Step 10− 아래 스크린 샷과 같이 Commit Message 링크를 클릭하여 커밋 메시지를 변경할 수 있습니다 .
Step 11− 저장 을 클릭하고 닫기 버튼 을 클릭 하려면 키보드에서 e 를 누르고 추가 정보를 추가하십시오 .
코드 검토는 Gerrit 워크 플로의 중요한 부분입니다. 기본 개념은 코드를 병합하기 전에 검토해야한다는 것입니다.
MediaWiki 코드의 워크 플로우는 병합하기 전에 검토 할 수 있으며 MediaWiki 모양과 작동을 사용자 정의하는 확장도 검토 할 수 있습니다. 국제화 및 현지화 커밋을 푸시 할 수있는 특별한 경우 가 있습니다.
개발을 완료하면 모든 커밋을 원격 브랜치로 푸시 할 수 있습니다. 누군가는 변경 사항을 로컬로 가져오고 병합 커밋을 생성하여 가져온 변경 사항을 로컬 마스터에 병합합니다. 이러한 변경 사항을refs/for/master.
프로젝트 소유자는 프로젝트가 언급 된 사람의 소유임을 의미합니다. 프로젝트 소유자는 구성원 또는 다른 그룹을 추가 할 수없는 가상 그룹입니다. 프로젝트 소유자는 프로젝트에 대한 권한을 다른 그룹에 허용하는 액세스 권한을 제공합니다.
다음 단계를 사용하여 프로젝트의 액세스 권한을 볼 수 있습니다.
Step 1−이 링크 를 클릭하여 Gerrit 대시 보드를 엽니 다 .
Step 2− 프로젝트 → 목록 옵션을 클릭 합니다. 프로젝트 목록에서 프로젝트를 검색하고 다음 스크린 샷과 같이 클릭합니다.
Step 3− 프로젝트를 열면 다음 스크린 샷과 같이 액세스 옵션을 클릭합니다 .
Step 4− 편집 옵션을 클릭합니다 . 드롭 다운 메뉴를 클릭하여 액세스 권한을 변경할 수 있습니다. 다음 스크린 샷에 표시된대로 변경 사항 저장 버튼을 클릭합니다 .
누구나 Gerrit에서 코드를 검토하고 코드에 주석을 달 수 있습니다. 다음 단계를 고려하십시오-
Step 1 − 이전 장에서 지정한대로 Gerrit 대시 보드를 열려면 Gerrit에 로그인하십시오.
Step 2 − 이제 다음 스크린 샷과 같이 Gerrit 프로젝트, 분기, 업데이트 날짜 등이 포함 된 주제를 클릭합니다.
Step 3− 다음으로 화면이 표시됩니다. 다음 스크린 샷에 표시된대로 Commit Message 옵션을 클릭합니다 .
변경 세트의 중요한 필드는 Reviewers, Add Reviewer, Side-by-side off 등입니다. 패치 세트 비교에는 이전 버전 기록 목록 선택, 최신 패치 세트 세부 정보 확장 등이 포함됩니다. 코드 검토 및 병합 또는 거부 현재 버전의 Gerrit에는없는 변경 취소 버튼, 패치 제출 버튼 등이 포함됩니다.