개요
회사 내에서 토이 프로젝트를 진행하려고 한다. 실제 개발도 참여하지만 이번에는 프로젝트 매니저 역할을 주로 담당하게 되었다. 개발 환경은 Nestjs + React + Mariadb으로 구성하였다. 시간이 된다면 해당 내용을 정리해서 올려 볼까 한다. 개발 환경 구성을 마치고 실제 개발을 위해 형상 관리를 어떻게 할지 고민하게 되었다. 나 포함 프로젝트 멤버는 보통 svn 사용이 익숙하였고, 공부해 보자는 마음으로 익숙하지 않은 git, gitlab을 통해 형상 관리를 하기로 마음 먹었다. 그 내용을 정리해 본다.
1. 프로젝트 생성
New Project > Create blank project > Create project
적당한 프로젝트명을 정하고 Visibility Level을 정해준다. 사내 프로젝트를 진행할 것이니 비공개로 생성한다. github의 경우 비공개 프로젝트의 개수가 정해져 있지만 gitlab은 별도의 제한 없이 대부분의 서비스를 이용할 수 있다고 한다.
2. 내 로컬 프로젝트 업로드
gitlab 프로젝트를 생성하고 나면 README.md 파일이 생성되는데 이 파일 내용을 확인해 보면 현재 내 로컬에 있는 소스코드를 생성한 gitlab 저장소에 업로드할 수 있다. 명령어는 아래와 같다.
cd test1
git remote add origin giturl.git
git branch -M main
git push -uf origin main
3. 멤버 초대 및 설정
Project > Settings > Repository > Protected branches 설정
프로젝트 생성 후 별다른 설정을 하지 않았다면 아래 설정이 최소한으로 되어 있을 것이다. 보통 협업을 위해서는 개발자나 관리자에게도 main 브랜치에 대한 권한을 부여해야 하기 때문에 아래와 같이 설정하면 될 것이다.
Project > Manage > Members > Invite members 멤버 초대
Invite mebers 버튼을 클릭해서 협업할 멤버를 초대한다. 멤버는 gitlab에 가입되어 있어야 하고, 이메일 또한 닉네임 등으로 검색할 수 있다. 보통 Developer 권한을 주면 될 것이다.
4. 협업하기
어떤 식으로 할지는 프로젝트 규모나 인원, 상황에 맞게 정하면 될 것 같다.
대부분 비슷하겠지만 이번 프로젝트에서는 아래와 같은 플로우로 진행하려고 한다.
# 로컬 작업
# 1. test-branch를 생성하고 이동(기능별로 브랜치 생성 예정)
git checkout -b test-branch
# 2. 모든 변경 파일에 대해 tracking 상태로 변경
git add .
# 3. 커밋(하루 한 번은 커밋하는 걸로)
git commit -m "test commit"
# test-branch 기능 개발 완료 후
# (내 브랜치와 main 브랜치 충돌이 예상되는 경우 아래 작업 추가)
# >>>>>>>>>>>>>>>>>>>>>>>>>
# main 브랜치 이동
git checkout main
# main 브랜치의 최신 변경 사항 pull
git pull
# test-branch 브랜치로 이동
git checkout test-branch
# main 브랜치와 test-branch 브랜치 병합
git merge main
# 충돌이 나는 경우 소스를 확인하고 최종 업로드할 소스로 수정
# 2, 3번 다시 진행
# >>>>>>>>>>>>>>>>>>>>>>>>>
# 4. 내 원격 브랜치에 업로드
git push --set-upstream origin test-branch
5. Project > Code > Merge requests > New merge request
Source branch를 test-branch, Target branch를 main으로 선택 후 계속 버튼을 누른다. 타이틀과 상세내용을 입력하고 코드리뷰나 승인을 받아야 하는 멤버를 설정한다. 선택된 멤버들에게 gitlab 대시보드나 메일을 통해서 해당 merge request를 안내해 준다. 테스트해 본 봐로는 승인멤버와 작성자가 해당 건에 최종 merge를 할 수 있었다. merge 하게 되면 repository main 브랜치에 merge 된다.
'개발' 카테고리의 다른 글
[React Native] google fit API 종료와 health connect 출시 (0) | 2025.02.19 |
---|---|
[IT지식] 생성형(대화형) AI란 무엇인가 (0) | 2023.12.14 |