2020년 8월 18일 화요일

Github에서 협업 개발 시 fork 기반 개발과 branch 기반 개발 사용 관련

아주 사소한 것이지만 공유를 위해 대충 정리해봄.
S/W 개발은 몇 명의 팀원들이 Github을 사용하여 협업을 하는데 코드 반영을 위한 방법을 두고 팀원 간 이견이 있는 경우가 있는데 정답이 있는 것이 아니고 상황에 맞춰 선택하는 게 맞아 보여 공유를 위해 정리함. 
사실 개인 생각을 적은것이고 개발 방법에 정답이 있는 것이 아니라서 상황에 맞춰 방법을 사용하면 될 것 같음.


결론부터 말하자면
- 소규모 팀에서의 개발이라면 같은 git repository를 clone후  branch를 사용하여 협업하는 것을 추천
- 같은 팀이 아니거나 새로운 feature 개발을 위해서는 fork 된 git repository를 사용하여 협업하는 것을 추천.



사실 정해진 답은 아니라서 상황에 따라 적절한 방법을 사용하면 되겠지만 모든 코드 반영은 pull request를 통해 리뷰 후 반영하는 것은 당연!

특정 branch에 대해서 pull request를 강제하는 방법은 다음 가이드 참고

Enabling required reviews for pull requests  


그리고 fork는
 . Github의 기능으로 git repository를 통째로(branch 포함) 복사함.
 . 개발자는 forked git repository에 patch 생성 후 원 gir repository로 pull request를 함.
 . Fork 방법
   : 위 가이드에서 fork에 대해 원 project에 영향을 미치지 않고 마음껏 수정할 수 있도록 repository 복사한다("A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project. Mac") 라고 명시함.
 . 원 respository가 삭제되어도 fork 된 repository는 삭제되지 않음.




그래서 협업 시 fork를 사용하기 적합한 경우는 다음과 같은 상황이 아닌가 생각된다.
- Opensource Contribution과 같이 팀원이 아닌 (repository에 push할 권한이 없는) 상황에서 patch를 기여하거나
- 새로운 feature 개발을 위해 원 repository 업데이트로부터 영향을 최소하 하고자 할 경우


그리고 아래는 fork-centric 개발과 branch-centric 개발에 대한 의견인데 다소 fork-centric 개발에 대해 부정적이지만 참고해도 좋을 듯하다.

THE DEFINITIVE GUIDE TO FORKS AND BRANCHES IN GIT  





댓글 없음:

댓글 쓰기