앞장까지 Gerrit 을 서버에 다 구축했고, 팀원들을 가입시켜서 일을 할 수 있는 환경이 되었다.
이제 본격적으로 Gerrit 을 통해 일을 시작해 보자.
1. Gerrit Repository 생성
일을 하기 위해서는 제일 먼저 project 를 만들어서 팀 공용 공간을 만들어야 한다.
Home->BROWSE->Repositories 로 이동
[CREATE NEW] 선택
Repository name 과 Default Branch 를 원하는 대로 채우고 CREATE
※ Github 는 2020년부터 기본 브랜치 명을 master 에서 main 으로 변경했다. master/slave 가 백인 우월주위, 인종차별적이라는 지적에서다.
자세한건 여기서 -> GitHub - github/renaming: Guidance for changing the default branch name for GitHub repositories
짜잔~!
첫번째 프로젝트가 만들어졌다. 별거 없다.
Git 저장소를 만들어준게 다다.
이제 이 서버의 프로젝트를 내 로컬에서 작업하려면?
우리는 SSH 프로토콜로 통신을 할것이기떄문에 SSH 탭에 있는 clone 명령어를 복사해서 개인 PC 에서 사용하면 된다.
추가1 >
SSH 에 대한 자세한 설명은 생략한다.
다만 SSH 로 통신하기 위해서는 Gerrit 에 내 PC 의 SSH public key 를 등록해야 한다.
SSH key 생성은 포스트가 엄청 많으니 알아서 참조하자. (Git - SSH 공개키 만들기 )
Gerrit 에서 등록은 [설정 > SSH Keys] 에서 New SSH key 에 내 로컬키 (id_rsa.pub) 를 입력하고 ADD NEW SSH KEY 를 하면 된다.
추가2>
clone 명령어가 2개가 있다.
단순 clone 명령어가 있고 clone with commit-msg hook 이 붙은게 있다.
결론적으로는 clone with commit-msg hook 으로 해야 한다.
단순 clone 은 gerrit repository 에 대한 단순한 clone 이고, clone with commit-msg hook 은 change-id 를 붙여주는 clone 이다.
Gerrit 은 Git 의 commit id 가 아닌 change id 로 관리한다. 이 change-id 가 있어야지만 gerrit review 를 받을 수 있게 push 를 할수 있다. 이 부분은 이미 앞에서 자세히 다루었으니 참고하자. ([Gerrit/Gerrit 일반] - Change ID)
2. Gerrit Repository 삭제
생성을 했으니까 삭제할 필요도 생길것이다.
그런데… 희안하게 Gerrit 은 repository 삭제 기능을 지원하지 않는다.
????????
왜 인지는 명확히 모르겠다.
암튼 직접적으로 삭제 기능을 지원하지는 않고, 대신에 plugin 으로 만들어서 지원한다. (신기한 구글 형님들…)
그래서 설치 단계에서 delete-project 플러그인 설치를 지원하는거 같기도 하다.
플러그인에 대해서는 별도 페이지에서 자세히 다루겠다. ([Gerrit 플러그인] 카테고리 참고)
여튼 delete-project 플러그인을 설치하고 나면 삭제는 아래와 같이 진행하면 된다.
Browse > Repositories > 원하는 프로젝트 선택
좌측 side-bar 의 Commands > Delete projects
체크박스는 원하는대로 선택하면 되고 [DELETE] 버튼으로 삭제하면된다.
그런데 , 삭제를 진행하면 아래와 같이 빨간 에러가 난다.
뭔진 모르겠지만.. 놀라지 말자.
다시 repositories 에 들어가면 잘 삭제되어 있다.
** 나중에 안 사실인데, 위 에러는 gerrit 사이트에 https 가 설정되어 있지 않아서였다. http 로 웹주소가 설정되어있으면 저렇게 뭔지 모를 에러 메시지를 보낸다. 보안상의 이유로도 https 는 필요하니, 이 부분 전문가들이라면 https 로 웹주소를 설정하기를 권장한다.
삭제 끝~!
[repository 생성 추가 팁]
repository 를 만들때 생짜를 그냥 만들수도 있지만 기존의 git repository 가 있는 프로젝트일 경우 기존 프로젝트를 그대로 댕겨와서 이어서 작업을 해야 할때도 있다.
기존 git 저장소의 프로젝트를 복제해서 작업하고 싶으면,
1) 우선 위에 설명한대로 빈 repository 생성
2) 쉘에서 해당 repository 경로로 이동
(우리는 gerrit 설치폴더>git 이 기본 git repository 이고 여기에 gerrit 에서 생성하는 모든 repository 들이 모이게 된다.)
3) 복제할 저장소에서 fetch
# git fetch [통신프로토콜][source git repository] [reference option]
# ssh 예시
git fetch ssh://AriJang@review.gerrithub.io:29418/AriJang/memore_client +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
# https 예시
git fetch https://AriJang@review.gerrithub.io/a/AriJang/memore_client +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
여기서 잠깐!!
혹시 [복제할 저장소] 의 정보를 잘 알고 있는가??
gerrithub 에서 우리가 진행했던 memore_client 의 repository 주소가 어떻게 되는거지???
이건 git 의 repository 에 대한 개념을 잡아야 한다. 아마 대충 머릿속에 그리고는 있지만 정확히 타이핑하라고 하면 망설여 질것이다.
우선 repository 주소가 어떤지에 대한 개념부터 헷갈리면 이미 내가 포스트했던 위키를 참조하자 →[Git] - Git client
gerrithub (github 도 똑같다) 의 repository 에 대한 정보를 얻고 싶으면 gerrithub 에서 해당 repository 를 찾아서 들어가면 된다.
위 화면은 많이들 본 화면일것이고, 저 빨간 박스가 바로 gerrithub 에서 특정 repository 의 주소다. 쉽죠?
git fetch 뒤에 저 프로토콜+주소를 붙여주고 reference option 을 붙여주면 기존 저장소에서 와라락 복제를 해온다.
[2024.03.19 update]
위의 예시는 Gerrit 의 다른 repository 에서 복제해오는 케이스다.
Github 에서 복제해올때에는 ssh 를 빼주어야 한다.
이 역시 Github 의 명령어대로 하면된다.
복제하고 싶은 github 의 repository에 가면 아래와 같은 형식으로 되어있다.
git@github.com:[username]/[repository].git
이것을 그대로 git fetch 의 parameter 로 넣어주면 된다.
username = silzzang
repository = example_repo.git
# ssh 예시 (github 의 경우 ssh 접두사가 빠진다)
git fetch git@github.com:silzzang/example_repo.git +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
# https 예시
git fetch https://github.com/silzzang/example_repo.git +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
시키는대로 하면, 처음에 또 이상한 에러를 내뱉는다. 안전하지 않다나….
그나마 git 은 해결책을 친절히 제시해준다. 시키는 대로 현재 폴더를 safe directory 에 추가하자
sudo git config --global --add safe.directory /opt/gerrit/gerrit/git/memre_client2.git
그리고 다시 시도!!!
모든 브랜치와 태그들이 다 잘 들어온것 같다.
gerrit site 에 가서 확인해보자.
memore_client2 에 기존 gerrithub 에서의 작업 브랜치가 모두 잘 들어왔다.
히스토리들도 다 있는지 develop 브랜치의 browse > log 를 눌러서 확인
review.gerrithub.io 에서 작업한 내용들이 review.aribio.net 으로 잘 들어왔음을 알 수 있다. (git 형님들은 참 대단하신듯….)
'Gerrit > Gerrit 설치 및 자체 작업' 카테고리의 다른 글
1. Gerrit 설치 (2) | 2023.10.17 |
---|---|
2. Gerrit Web 설정 (0) | 2023.10.17 |
3. Gerrit 사용자 인증 설정 (0) | 2023.10.17 |
4. Gerrit Email 설정 (0) | 2023.10.17 |