이전 글에서는 깃허브에 여러분의 저장소를 만들고 연동하는 내용을 살펴봤습니다.

 

이 글에서는 마스터 저장소와 개발용 저장소를 나누고, 깃허브 Pull Request을 이용 코드리뷰 환경을 구성합니다.

이 글에서 다음 내용을 설명합니다.

  1. 코드리뷰를 위한 깃허브 저장소 구성 전략
  2. Fork로 개발용 저장소 복사하기
  3. 변경내역 적용 요청(PR) 및 코드리뷰

 

이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다.

 

코드리뷰를 위한 깃허브 저장소 구성 전략

Pull Request 활용

깃허브에서 코드리뷰는 깃허브의 Pull Request(이하 PR) 기능을 이용합니다.

PR은 원격 저장소간 변경된 내역을 적용(당겨가길) 요청하는 기능입니다.

 

다음 그림은 데브기어 교유과정에서 발생한 PR 예시입니다.

PR 작성 시 작업내용에 대한 코멘트와 여러건의 커밋을 포함합니다.

 

 

 

PR의 하단에는 PR에 대한 전반적은 의견을 남길 수 있습니다.

공동작업자(관리자)의 경우 적용요청(PR)을 병합(Merge)하거나 종료(Close)할 수 있습니다.

 

 

또한, 커밋 로그에서는 소스코드 줄 단위로 의견을 남기는 것도 가능합니다.

 

 

 

Fork - 원격저장소 복사

PR을 활용하려면 원격 저장소가 분리되어 있어야 합니다. 원격 저장소를 분리는 Fork 기능을 이용합니다.

 

 

원격 저장소를 분리하면 다음의 잇점이 생깁니다.

  • 마스터(출시용: Release) 저장소와 개발용 저장소가 분리되 관리자와 개발자 작업 공간 분리
  • 여러 개발자(또는 개발팀) 별로 저장소 사용 가능
  • 각 개발자가 작업한 결과물을 관리자 및 팀원들이 검토 후 마스터 저장소에 적용(또는 중단)

 

위 구성을 활용해 다양한 저장소 구성 전략을 새울 수 있습니다.

 

소규모 개발팀에서는 팀장과 운영팀에서 마스터 저장소를 관리합니다. 개발자들은 개인 개발용 저장소에서 작업합니다.

개발작업 완료 후 개발용 저장소에 작업한 내용을 마스터 저장소에 반영요청(PR)합니다. 팀장과 다른 팀원은 PR에 대한 코드리뷰 후 적용 여부를 판단합니다.

 

Fork로 개발용 저장소 복사하기

마스터 저장소를 Fork해 개발용 저장소를 생성하고, 개발용 저장소를 이용하는 방법을 실습합니다.

 

마스터 저장소 다음 링크의 데브기어의 교육용 저장소로 실습을 진행합니다.

 

위 링크 방문 후 상단 우측의 [Fork]를 클릭합니다.

 

 

 

잠시후 여러분의 계정에 SetupText 저장소가 생성될 것입니다.

이제 마스터 저장소는 devgeredu/SetupTest로 개발용 저장소는 (여러분 아이디)/SetupTest로 진행합니다.

 

 

이제 앞으로 여러분들은 개발용 저장소에서 작업을 진행해야 합니다.

 

이전 글에서 여러분들이 만든 저장소를 RAD 스튜디오로 불러오고 Commit 및 Push 했던 작업을 개발용 저장소를 대상으로 진행합니다.

 

간단한 과정은

  1. 저장소 URL 복사
  2. RAD 스튜디오에서 File > Open From Version Control...
  3. Git 선택 > 저장소 주소와 저장 경로 지정 후 프로젝트 열기
  4. 프로젝트 소스코드 수정(에디트 컴포넌트 추가)
  5. Project 팬에서 프로젝트 팝업 메뉴 Git > Commit > From Repository Root
  6. 커밋 메시지 입력(Edit 추가) 및 Commit 버튼 클릭
  7. Project 팬에서 프로젝트 팝업 메뉴 Git > Push > From Repository Root
  8. 깃허브 계정으로 로그인
  9. 깃허브 페이지에서 변경내역 확인

 

 

 

변경내역 적용 요청(PR) 및 코드리뷰

개발용 저장소에서 개발이 완료(여러차례의 Commit과 Push)되면, 그 내용을 마스터 저장소에 적용해야 합니다.

여러분들은 마스터 저장소에 대한 쓰기 권한이 없기 때문에 마스터 저장소의 작업자에게 내가 작성한 코드를 적용하길 요청하는 Pull Request를 작성해야 합니다.

 

개발용 저장소 페이지의 상단에 Pull requests 탭을 선택합니다.

 

 

그리고, [New pull request] 버튼을 클릭합니다.

 

 

 

페이지가 이동되면 마스터 저장소로 이동되고, PR을 생성할 수 있습니다.

먼저 두개의 브랜치를 대상을 확인합니다. 커밋 로그를 확인합니다. 하단에 변경된 파일 정보를 확인할 수 있습니다.

확인 후 [Create pull request] 버튼을 클릭해 PR을 생성합니다.

 

 

PR의 제목과 내용 입력 후 [Create pull request] 버튼을 클릭합니다.

 

 

 

다음과 같이 PR이 등록되었습니다. 

PR 상세화면에서는 추가 코멘트를 달거나, 본인이 작성한 PR을 닫을 수 있습니다.

 

 

 

Pull Requests 탭을 다시 선택하면 PR 목록이 표시됩니다.

이 목록은 마스터 저장소 관리자 뿐아니라 누구에게나 공개됩니다.

 

 

 

마스터 저장소 관리자의 PR 상세 페이지에는 PR에 대한 정보와 함께, 변경사항을 병합(Merge)가능합니다.

관리자는 다른 코드리뷰어의 PR에 대한 코멘트와 소스코드에 대한 코멘트를 참고해서 병합 여부를 판단할 수 있습니다.

 

 

 

PR의 변경사항 병합을 결정했다면, [Merge pull request] 버튼을 클릭해 병합하면, 해당 PR의 상태가 Open에서 Merged로 변경되어 닫힙니다.

 

 

소스코드를 확인해보면 PR에서 변경된 "Edit 추가" 커밋 메시지가 표시됨을 확인할 수 있습니다.

 

 

 

정리

깃 설치부터 RAD 스튜디오의 깃 설정, 생성한 저자소와 연동 및 코드리뷰를 위한 저장소 방안까지 다음 시리즈를 통해 살펴봤습니다.

 

 

 

사실 이 글은 가장 기본적인 내용으로만 구성했습니다. 깃과 깃허브에는 더 다양한 기능들이 있습니다.

여러분들의 조직과 환경에 맞춰 그 기능을 추가 학습해 개발조직에 가장 중요한 소스코드를 효과적으로 관리 운영하시기 바랍니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14399
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13037
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15542
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21078
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22307
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17954
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38238
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173756
503 [시애틀] 블루투스 LE를 지원하는 디바이스에서 비콘 광고데이터를 발생할 수 있습니다. file Humphery 2015.10.06 687
502 애플 개발자 프로그램 구독하지 않고 XCode8을 설정해 iOS앱을 배포하는 방법 험프리 2017.05.15 685
501 [10.4 시드니][패치] RAD스튜디오 10.4 '세 번째 패치(Patch 3)': VCL그리드, C++Win64 디버깅, C++ 안드로이드 예외처리 핸들링 및 리소스 등 관리자 2020.07.29 681
500 [고객 사례- 3D, 시뮬레이션, 델파이] 3D Train Studio 관리자 2017.03.02 678
499 [베를린 U1] 윈도우 태스크바 알림의 뱃지를 제어할 수 있습니다. 험프리 2016.09.20 677
498 [고객사례-유틸리티, 델파이] 녹음기 앱 - Voice Recorder 관리자 2019.12.10 677
497 [커뮤니티 에디션] 사용 자격 기준 정리 관리자 2018.11.29 677
496 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 17. 1차원 정적 배열 관리자 2019.03.29 674
495 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 7. 중접된 If...Then...Else 문. 작업 해결 실습하기 관리자 2019.03.29 674
494 [10.4 시드니 신기능] iOS와 맥OS 지원 강화 관리자 2020.06.04 673
493 [업데이트][핫픽스][10.1 베를린] 갤럭시 S7 Edge(안드로이드 6.0.1) 디버깅이 되지않는 이슈 패치 험프리 2016.05.27 672
492 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 23. 타이머 관리자 2019.03.29 671
491 [델파이 샘플 코드] 안드로이드, iOS, OSX, 윈도우, 리눅스, HTML5 관리자 2019.11.13 670
490 [고객 사례- 의료, 델파이+임베디드DB] Siemens Healthcare 의 체외진단기기 (IVD, In Vitro Diagnostics) file 관리자 2016.11.03 669
489 [도서/PDF/소스코드] 델파이 Begin...End - 14장. 분산처리(DataSnap) 관리자 2019.08.20 667
488 [엠바카데로 Feature Friday] RAD스튜디오와 함께사용하면 더욱 강력하게 활용할 수 있는 컴포넌트들 관리자 2018.09.14 666
487 Class에서 Interface 두 개 구현할 때, 이 둘이 동일한 이름의 메소드(Method)를 가지고 있다면? file 험프리 2019.12.11 665
486 [10.4 시드니 신기능] 언어 서버 프로토콜 (LSP, Language Server Protocol) 관리자 2020.06.04 662
485 가장 강력한 ‘데이터베이스 연동’ 기능을 자체적으로 제공하는 프레임워크는? (델파이 VS. WPF VS. ELECTRON) 관리자 2021.03.04 661
484 델파이 25주년 기념 무료 크로스 플랫폼 샘플 앱 25개 선정(델파이/C++ 샘플 150여종) 험프리 2020.03.02 659