Visual Studio - github 연동
지난번 글을 통해서 Visual Studio를 이용해 git 로컬 소스 컨트롤을 다루는 방법을 살펴봤는데요.
Visual Studio - git을 이용한 로컬 소스 컨트롤
; https://www.sysnet.pe.kr/2/0/1502
이번에는 원격 저장소인 github를 이용해 협업하는 방법을 살펴보겠습니다.
로컬 git에 이미 형상관리를 하고 있는 경우, 그것을 그대로 github에 보내는 것이 가능합니다. 물론 이를 위해서는 지난번에 소개했던 SSH 키까지 설정을 완료했어야 합니다.
Visual Studio를 위한 Git 환경 설정
; https://www.sysnet.pe.kr/2/0/1501
자, 그럼 ^^ 우리가 만든 프로젝트를 github에 올려서 오픈소스로 공개해 볼까요?
우선, 그전에 github에 repository를 하나 생성해 두어야 합니다. 아래의 그림은 NHanNanum 저장소를 새로 생성하는 것을 보여주고 있습니다.
그럼, 다음과 같이 SSH 주소를 얻을 수 있습니다.
Visual Studio의 Git / Sync 메뉴를 선택하면 다음과 같이 "Git Synchronization - TortoiseGit" 창이 뜹니다. 아직 git 원격 저장소가 하나도 정의된 것이 없으므로 "Manage" 버튼을 누르면 해당 프로젝트에 적용되는 git 원격 저장소를 추가할 수 있습니다.
위의 그림에서는 github URL과 이전에 생성해 둔 putty 개인키 파일을 지정하고 Apply 버튼을 누른 것을 보여줍니다.
이제 다시 "Git Synchronization - TortoiseGit" 창으로 와서 "Push" 버튼을 누르면 master에 해당하는 Local Branch를 그대로 github 서버로 전송합니다.
Push로 인한 Sync가 완료되었으면 이제
https://github.com/stjeong/NHanNanum에서 다음과 같이 정상적으로 파일이 올라갔음을 확인할 수 있습니다.
자, 그럼 이번에는 반대로 이렇게 github에 올라간 프로젝트를 Visual Studio를 이용해 로컬에 내려받는 것을 해보겠습니다. (테스트를 위해 별도의 github 계정을 만들어 진행했습니다.)
윈도우 탐색기를 실행하고 github로부터 내려받을 프로젝트가 생성될 폴더로 이동한 다음, 거기서 아래의 그림처럼 "Git Clone..." 메뉴를 실행합니다.
그럼, "Git clone - TortoiseGit" 창이 뜨고, 아래와 같이 해당 프로젝트의 SSH URL을 입력하고 Putty Key에 개인키가 있는 파일을 지정해서 "OK" 버튼을 누르면 됩니다.
정상적인 경우 다음과 같이 완료창이 뜹니다.
이제 탐색기에서 "D:\git_rep\NHanNanum" 폴더에 가면 github에 등록되어 있던 프로젝트가 그대로 내려온 것을 확인할 수 있습니다. 당연히 .sln 파일을 이용해 Visual Studio에서 곧바로 로딩할 수 있고, TFS/VSS 사용하던 것과 유사하게 소스 컨트롤 하에 놓여 있는 아이콘을 볼 수 있습니다.
여기까지 했으면 서버로부터 내려받은 프로젝트를 로컬 git 저장소에서 자유롭게 check-in/out을 하면서 커밋을 할 수 있습니다. 하지만, 이것은 로컬 저장소에서만 변경이 될 뿐 서버로는 반영되지 않습니다.
github 저장소에 소스코드를 기여하는 방법에는 크게 적극적이냐 소극적이냐에 따라 나뉠 수 있습니다. 소극적인 참여 방식은 해당 프로젝트를 fork하면 됩니다. 이는 마치 다른 TFS에 저장되어 있던 Team Project를 복사해서 자신의 TFS에 가져오는 것이라고 보면 됩니다. 따라서 원본 github 프로젝트와 무관하게 커밋을 진행해 나갈 수 있습니다. 단지, 특정 소스코드를 기여하고 싶다면 원본 github 프로젝트 페이지에서 "Pull Request"를 통해 자신이 변경한 브랜치를 병합하도록 원본 프로젝트 개발자들에게 요청할 수 있습니다. 물론, 그 요청을 받아들여 코드를 병합하는 것은 원본 프로젝트 개발자들의 자유 권한입니다. github에서의 "Pull request"에 대한 방법은 다음의 글을 참고하세요.
Creating a pull request
; https://help.github.com/articles/creating-a-pull-request
반면, 적극적인 참여를 하고 싶다면 해당 프로젝트에 "Contributor"로서 등록하면 됩니다. 소규모 프로젝트의 경우나 신뢰가 쌓인 github 사용자끼리는 이런 식으로 등록해 달라고 하면 거의 100% 요청을 수락할 테지만 대규모 프로젝트의 경우에는 fork를 통한 기여도에 따라 참여 여부가 결정날 수 있습니다.
현실적으로 봤을 때, 팀을 이뤄 협업을 하는 github 프로젝트가 있다면 모든 팀원을 기본적으로 "Contributor"로 등록한 후에 시작할 것입니다. github에서 이런 식으로 협업하려면 팀원들이 모두 github에 회원 가입을 한 후 repository를 생성한 최초 사용자가 나머지 팀원들을 모두 contributor로 등록해 주면 됩니다. 이에 대해서는 다음의 도움말을 참고하세요.
How do I add a collaborator?
; https://help.github.com/articles/how-do-i-add-a-collaborator
자, 그럼 git clone 한 측의 사용자가 원본 프로젝트에 Contributor로 등록되었다고 가정하고 협업을 한번 해볼까요?
Program.cs 파일의 내용을 일부 변경하고 Git / Commit한 다음, 이어서 Git / Sync 메뉴를 선택해 "Push"를 선택합니다.
그럼 변경내용이 github 측의 원본 프로젝트로 반영되고 다른 개발자들은 Git / Sync 메뉴를 이용해 "Pull" 메뉴를 선택해 동기화할 수 있습니다.
이 정도의 내용이면 기본적인 협업에 있어 별다른 문제는 없을 것입니다. 그 외의 다른 사용법은 차차 ^^ 기회가 닿는대로 하나씩 해보겠습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]