프로젝트의 규모가 크면 하나의 프로젝트에 여러 명의 개발자가 배정이 되고 소스코드 공유 및 리뷰 등 다양한 협업 과정을 통해 프로젝트를 완성해 나간다.
내가 지금 다니고 있는 회사는 규모가 작기도 하고 또 여러 사정으로 인해, 인당 역할이 나누어져 있다보니(백엔드1, 웹프론트1, 안드로이드1 등) 협업을 하기 위한 솔루션이 필요 없다.
(만약 개발 규모가 작더라도 모바일 앱 개발만 하는 회사는 앱 개발자가 여러 명일 것이기 때문에 협업 과정이 필요할 것임)
그런데 필요없다고 몰라도 되는 건 아니니께..
Android Studio에 내장된 Git tool과 Github을 사용한 기본적인 협업 내용을 정리하고자 한다.
사실 미리 스포를 하자면,
Collaborator를 이용해서 master push가 아닌 branch push를 통해 PR을 생성했다.
대체 왜 해야 되냐라고 생각하시는 분들은 이 글은 안 보셔도 될 것 같다. 🥲
Collaborator 추가하기
이 작업은, 함께 할 프로젝트 Repository에 타 사용자의 접근 권한을 주는 것이다.
Collaborator는 프로젝트 관리자와 함께 원본 저장소의 Push&Pull 권한을 가지게 된다.
그렇기 때문에 프로젝트 관리자만이 직접 권한을 줄 수 있다.
테스트할 Repository의 Settings
메뉴 선택
Options에서 Manage access
메뉴 선택
Invite a collaborator
선택
초대하려는 유저의 아이디를 입력 후 선택,
그리고 Add [User-id] to [Repository name]
버튼을 눌러서 초대한다.
Collaborator로 지정된 유저는 자신의 메일로 초대장을 받을 수 있는데, Github에 로그인이 된 상태에서 초대장의 링크를 클릭하면, 아래와 같이 초대를 수락할 수 있는 인터페이스가 나온다.
유저가 'Accept invitation'을 하면 Collaborator 추가는 완료된다.
Github 프로젝트 Android Studio로 가져오기
이제 함께 작업해나갈 프로젝트를 가져와야한다.
가져오는 방법에는 여러가지가 있는데, 이 포스트에서는 IDE 기능 중 하나를 이용해 가져왔다.
먼저 이 과정을 테스트하기 위해서 테스트 프로그램 하나를 저장소에 Commit을 한다.
Github에 project를 commit하는 방법 참고
가져올 Repository의 주소를 복사한다.
Android Studio에서 Welcome 화면을 띄운 후 Get from Version Control
메뉴를 선택한다.
※ 웰컴화면 띄우는 방법
File > Close Project
URL란에 아까 복사한 Repository 주소를 넣고 Clone 버튼을 누른다.
가져오기 완료
소스코드 업로드하기
이제 Collaborator가 소스코드를 수정해서 Github 저장소에 업로드해보자.
사실 Collaborator는 이미 원본 저장소에 Push & Pull 권한이 있기 때문에 Local master에서 Commit & Push하면 내 것처럼 Github 저장소에 Push & Pull 작업을 할 수 있다.
이 글 서두에 언급한 것처럼 PR을 생성하기 위해 일부러 다음과 같은 작업을 한다.
이 글에서는 간단하게 아래 이미지와 같은 시나리오를 실행해보겠다.
이렇게 하게되면 Collaborator라도 PR(Pull Request)를 생성할 수 있다.
위 이미지는 여기서 가져와서 수정함
이를 위해선 Branch 상태에서 소스코드 수정 후 Push를 한다.
먼저 Brach 생성
VCS > Git > Branches...
New Branch
생성할 Branch 이름을 넣고, Checkout 옵션을 체크하고 Create 버튼으로 Branch를 생성한다.
소스코드 수정
Commit 후 Remote저장소에 Push
혹시 Android studio에에서 Github 로그인을 하지 않았다면, 로그인 창이 팝업될텐데 로그인하면 된다.
조금만 기다리면 Pushed branchA to new branch origin/branchA 메시지가 뜬다.
Pull request(이하 PR) & Merge
※ 여기서 잠깐, 한 번 더 언급한다.
일단 Collaborator로 등록이 되면, PR&Merge 없이 마스터 브랜치에서 바로 Push 작업을 할 수 있다. 이 글에서는 마스터가 아닌 브랜치 Push를 통해 PR&Merge 작업을 유도했다.
Collaborator는 자신의 Remote 저장소에 가보면 Compare & pull request
버튼이 활성화된 것을 볼 수 있다. 버튼을 선택한다.
Title과 Comment 부분을 작성하고 Create pull request
버튼을 선택한다.
그럼 이렇게 PR탭에 추가한 작업을 볼 수 있다.
이후 Merge pull request
버튼을 클릭해서 Merge 작업을 한다.
생성된 Branch는 다음 작업을 통해 안전하게 삭제한다.
※ Branch를 남기고 싶으면 이 작업 생략 가능
마지막으로 확인해보면 Collaborator가 수정한 부분이 Merge된 것을 볼 수 있다.
※ 사실 Fork를 따서 각각 수정 작업을 하면 위 시나리오가 가능하다.
근데 private 저장소 fork하려면 돈을 내야.... 이 글은 공짜로 하는 방법..
변경한 작업 가져오기
- 프로젝트가 변경이 되었으니, 기존에 작업하던 Local master에서 변경된 부분을 수정해야할 것이다.
VCS > Git > Pull
origin/master에 체크한 후 Pull 버튼 선택한다.
조금 기다리면 Collaborator가 수정한 부분이 적용된 것을 볼 수 있다.
- Collaborator 또한 Branch에서 작업한 것이 Merge되었기 때문에, Local Master에 Merge 작업을 한다.
VCS > Git > Branches...
or
Ctrl + Shift + 물결표시버튼을 누르면 Branch 메뉴가 나온다.
master
선택 후 Checkout
선택해서 Master로 Head를 변경한다.
이후 Merge하면 된다.
VCS > Git > Merge Changes...
branchA를 체크하고 Merge버튼을 누르면 된다.
Merge 완료
글이 이렇게 길어질 줄 몰랐는데, 다음에는 끊어서 연재형식으로 올려야겠다.
사실은, Collaborator를 사용해 Branch를 Push하는 방법은 효율적이지 않다.
기업에서도 돈 내고 깔끔하게 Private 저장소를 Fork 떠서 사용하는 방법이 가장 좋을 것 같다.
그런데.. 그렇지 못 한 기업이라면? 이 방법도 시도해보면 나쁘진 않지 않을까..?
혹시 다른 방법이 있다면 댓글로 알려주세요!🙌
※ 함께보면 좋은 글