본문 바로가기
Gerrit/Gerrit 설치 및 자체 작업

5. Gerrit Repository 생성 및 삭제

by 실짱 2023. 10. 17.

앞장까지 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 형님들은 참 대단하신듯….)


< Prev     4. Gerrit Email 설정

'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