프로젝트 기반으로 스터디를 진행할 때 적합한 소스 코드 관리 방법은?

2012-10-18 10:05

조만간 SLiPP 스터디를 진행하려고 합니다. 이번 스터디는 현재 SLiPP 서비스의 QnA 기능을 만들어 가는 과정을 스터디를 통해 진행하려고 합니다. 아무래도 여러 명의 프로그래머가 하나의 소스를 계속해서 발전시켜 나가야 하는데 어떤 방식으로 진행하는 것이 좋을까요? 소스 코드 저장소는 github을 사용할 계획입니다.

저는 다음과 같이 진행하면 어떨까 생각합니다.

https://github.com/javajigi/slipp-study-1 와 같이 github에 master 브랜치를 하나 만듭니다. 그리고 이 mastter 브랜치 소스를 시작으로 개인별로 소스 코드를 개선해 나가야 하기 때문에 각 계정별로 브랜치를 하나씩 만들어 만들어 나가는 것이죠.

각 회차별 주도적으로 준비하는 프로그래머가 있을 것이고, 개인적으로 연습하는 프로그래머가 있을 것이기 때문에 브랜치를 통해 명확히 분리하는 것이 좋을 듯 합니다. 그리고 일정 수준이 되었다고 생각하는 순간 master 브랜치에 merge하는 것이죠.

그 이후에 스터디를 준비하는 친구들은 이전까지 개발 작업을 하지 못했더라도 master 브랜치 소스 코드로 부터 시작한다면 같은 시점에서 출발할 수 있지 않을까 생각합니다.

23개의 의견 from SLiPP

2012-10-18 15:01

svn 사용하고있습니다.... 프로잭트가 진행되고 할땨마다 무수하게늘어나는 브랜치와 대그들 머지는 꿈도 못꾸다가 그냥 래파지토리 다시따서 새로운 프로렉트로 변신합니다....ㅜㅜ. 깃을 사용한다니 기대됩니당

2012-10-18 15:11

SVN 사용하고 있는데 사실 이전부터 GIT 을 제대로 활용해 보고 싶었습니다 사실 스터디의 재미 중 하나가 모르는 새로운 지식을 알아가는 것인만큼 더욱 기대가 됩니다

2012-10-18 16:43

약간 우려가 되는 점은 git에 익숙하지 않은 분들이 잘 사용하실까 하는 점입니다. 보통 스터디를 해보면 저장소에 각자 폴더하나씩 만들고 거기에 푸시만 하도록 해도 숙제는 했는데 올리지 못하는 사태가 자주 발생했거든요.. ㅠㅠ

그런점을 제외하고 말씀드리면 master 브랜치를 두고 master브랜치에서 week-1 브랜치를 만들어서 여기서 작업을 합니다. week-1이 완료되면 master로 merge를 하고 week-1을 가지고 week-2를 만들어서 반복합니다. 이런식으로 진행하면 자유롭게 각 주차에 별로 테스트를 해볼 수도 있고 갱신사항도 주차별로 적용해서 다른 브랜치에 머지도 할 수 있지 않을까 합니다.

2012-10-18 17:20

@Outsider 의견 감사합니다. 그런데 그런 방식으로 운영하면 week-1 브랜치를 여러명이 바라보는 상황이 되기 때문에 더 힘들지 않을까요? 개인별로 브랜치를 만들고 개인별로 계속해서 소스 코드르 발전시켜 나가면 충돌이 나는 상황도 적지 않을까라는 생각이 들어서 위와 같이 제안했어요.

가능하면 개인별 작업 공간을 따로 만들어서 놀자는 것이죠. 그러다가 다른 사람의 코드를 출발점으로 삼고 싶으면 그 때만 merge하면 되고요? 즉, github에도 개인별 브랜치를 만들고 로컬에서도 이 브랜치를 바라보고 작업을 하는 방식이죠. 일단 저도 생각만 해봤고요. 로컬에서 테스트도 해보고 경험도 해봐야 더 확실할 듯 합니다. 지금은 상상의 나래만 펼치고 있어요.

2012-10-18 17:34

@자바지기 아! 전 개인브랜치는 빼고 얘기한겁니다. git에서는 보통 개인 작업은 개별적으로 하니까요... 개인브랜치는 각자 알아서 하고(이걸 github의 머지하는것도 스터디니까 의미있긴 하겠네요.) 마스터가지고 작업하는 것보다는 주차별로 브랜치를 관리하면 더 낫지 않을까 생각한겁니다. 말씀하신 모델에서 master대신 각 주에 주차별 브랜치를 master대신 쓰는거죠. ㅎ

2012-10-18 22:26

저희 회사에서 프로젝트 개발과정에서 소스관리는 github의 private repository를 활용하고 있습니다. 달달이 사용료를 내고 있지요. 개발자가 모두 맥북을 사용하고 있기 때문에, SourceTree 라고 하는 애플리케이션을 이용해서 github과 연동하여 활용하고 있습니다.

SourceTree와 연동을 해두니, 소스의 브랜치(Branch)를 따서 개발하다가 합치고(Merge)를 자유롭게 할 수 있게 되더군요. 확실히 SVN을 사용하던 때에 비해서 브랜치를 따는 것과 소스합치기에 대한 두려움이 많이 사라졌습니다. 지금도 4개 정도의 큰 브랜치로 개발을 진행 하고 있습니다. 생각해보면, 개발자들의 사용환경이 통일되면 그것도 좋다는 생각이 듭니다. 맥으로 대동단결? git에 대한 console 상에서 사용법에 대해서는 낯선편이네요.

pro git(http://dogfeet.github.com/articles/2012/progit.html)) 이란 책이 오픈소스로 번역이 되어 배포되고 있습니다. 다운로드 받아서 편하게 사용하세요.

2012-10-19 00:40

@김지헌 지헌님의 경험담을 공유해 주셔도 좋겠네요. 스터디하면서 기회가 되면 현재 작업하고 있는 내용도 함 공유해 주세요. 이번 오리엔테이션에서는 제가 github 소스 관리 간단하게 공유할테니 부족한 부분은 지헌님이 채워주세요.

지헌님 버그 리포팅 덕분에 문제 해결 잘 했습니다. 하나씩 잡아가는 재미가 있네요.

2012-10-19 10:19

@자바지기 ^^ 네.

@Outsider 님이 말한것처럼, 교육차수별로 해서 remote/original 쪽에서 브랜치를 하나씩 따두면 교육진행별 소스를 확인해볼 수 있어서 좋을 것 같습니다. 스터디에 참가하지 못하는 분들도 쉽게 확인해볼 수 있겠구요. 주차별로 1st_.. 2nd_.. 식으로 앞에 주차 표시해주면 설명해주기도 좀 쉽겠죠. ^^

2012-10-19 12:19

@자바지기 자바지기님께서 공유해주신 slideshare 의 자료는 git으로 두어차례 commit을 한 후에 history를 보게되면 단박에 이해가 되겠어요. 사실 어제 보면서 음...음?음?음?으엉? 하고 있었거든요 ㅎㅎ 그러다 오늘 내주신 과제를 수행하고 history를 보면서 다시 보게되니 이해가 쉽네요. 물론 자세히 이해하기 위해선 꾸준히 익숙해져야겠죠. 그러다보면 위의 글타래를 이해하겠죠 ㅋㅋ 즐거운 점심 되세용~

2012-10-19 13:23

(또 추가로) 주차별로 완전히 다른 프로그래밍을 하는게 아니라면, 차라리 그냥 개인별로 Github 계정을 만드시고, javajigi 쪽의 Git 저장소를 Fork 한 후에 Pull Request 를 보내는 방식으로 진행하시는게 나을 듯 합니다. 기왕에 쓰는거면 제대로 써야죠... 이전에 쓰던 방식과 유사하게 사용하면 초기 적응시간은 빨라질지 몰라도, Github Pull Request 등은 오픈소스에 기여할때도 보편적으로 사용되는 기능이니 한번에 익히는게 빠를 듯 합니다.

2012-10-19 14:10

Git를 활용한 방식이 꽤나 신선하네요 ^^; cvs나 svn 방식의 형상관리만 해왔지, Off-Line으로도 이렇게 관리가 될 수 있다는게 새롭구요... (나름 그게 장점이자 단점이 될 수도 있을듯 하구요) 게다가 Github라는 멋진 사이트가 있다는건 정말 큰 장점이 될 수 있는것 같구요.

아직은 기본기능만 사용해 보았지만, 앞으로 더 연구해보고 싶네여.

2012-10-21 17:28

질문에 누군가 댓글을 달면 질문과 댓글로 참여하고 있는 사용자 중 페이스북 사용자에 한해 알림을 보냅니다.

연석님이 댓글을 다니 저한테는 알림이 잘 오네요. 알림은 페북에 들어갔을 때 알림으로 확인할 수 있습니다.

의견 추가하기

연관태그

← 목록으로