개발 Q&A

제목 팀 프로젝트를 진행할때 소스관리 어떻게 하는지 친절하게 설명해 주실분 ?
글쓴이 람이 작성시각 2014/08/27 10:37:01
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13067   RSS
팀 프로젝트를 진행할때 소스관리 어떻게 하는지 친절하게 설명해 주실분 ?

디자이너 1명,
퍼블리셔 1명,
개발자 2명,

코드이그나이터로 작업을 진행하고 있습니다.
영카트 구조를 응용한 쇼핑몰을 작업 중 입니다.

다들 소스 관리는 어떻게 하는지 ??

svn ??
git... ??

이런게 그럴때 쓰는 거라는데.... 어떻게 써야할지는 막막하네요...

에디터플러스, heidisql, 파일질라 ftp 이렇게 사용하고 있습니다.

1. 누군가 작업한 소스를 변경한 경우 변경된 부분을 알 수 있는지 ?
2. 한 파일을 두사람이 모르고 작업하는 경우 표시가 되는지 ?
뭐 이런것들과
어떻게 세팅하고 사용하는지 알고 싶네요...
 다음글 bootstrap 사용하시는 분 계시나요? (6)
 이전글 script 에서 php 호출 가능할까요? (10)

댓글

변종원(웅파) / 2014/08/27 11:08:43 / 추천 0
다 설명은 못드립니다. 내용도 많고 그림도 필요하고.... 
큰 부분만 설명드릴테니 세부적인 것은 파트별로 구글신을 이용하세요.

svn 기준으로 설명드리면 (책 부록에도 나와있지만)

svn 저장소 셋팅하고(셋팅은 구글신) 그 저장소의 내용을 각 개발자, 디자이너의 pc에
checkout(데이터를 초기에 가져오는 개념입니다)합니다.

그러면 동일한 소스를 저장소, 개발자, 디자이너가 가지고 있게 됩니다.

개발자가 작업후 커밋을 합니다. 커밋을 하면 저장소에 바뀐 내용이 올라갑니다.
디자이너는 저장소, 개발자와 다른 소스를 가지고 있겠죠. 그럴때 업데이트를 해줍니다.
그러면 다시 셋이 동일한 소스를 가지게 됩니다.

커밋(내 소스를 저장소에 올리는 것) 하기전에 업데이트(저장소의 소스를 받아오는 것)를 해줘야 합니다.
그렇지 않으면 충돌이 날 수 있습니다.

소스 충돌이 난 경우의 해결법도 검색하시면 나옵니다.

svn만 써서는 의미가 없는게 개발자 pc에서 확인을 못하죠. 그래서 개발자 pc에 apm을 설치합니다.
한번만 개발할 것이 아니기 때문에 윈도우의 hosts 파일에 가상도메인을 넣어주고 그 도메인을 아파치에 설정하고
위에 svn저장소에서 checkout한 디렉토리를 연결해줍니다.

예) 가상도메인인 cik.com 이고 svn checkout 한 디렉토리가 c:/svn_check 라면
아파치에서 cik.com을 c:/svn_check 에 연결을 해줍니다.(virtual host)

그러면 cik.com 을 쳤을때 로컬pc에서 개발중인 저장소에 해당하는 내용을 확인할 수 있습니다.

개발자 로컬pc에서 개발하여 확인하고 이상이 없으면 커밋. 
팀장이 자기 pc에서 svn 업데이트하여 개발내용을 확인하고 이상이 없다면 svn export 하여 깨끗한 소스를 서버에 올립니다.

1, 2번 모두 확인됩니다.
 
람이 / 2014/08/27 11:41:37 / 추천 0
코드이그 / 2014/08/27 15:05:35 / 추천 0
버전관리 프로그램에는 커밋, 업데이트 또는 커밋, 풀 이라는 개념과 함께 머지라는 개념이 있습니다.
merge는 자동으로 여러사람의 소스들을 합쳐주는 것인데
버전관리의 여러 기능과 더불어 이 기능때문에 많이들 사용하는 거랍니다.

git을 기준으로 보면 svn은 하나의 원격 저장소를 가지고 여러사람이 나눠서 한 소스를 관리하는 개념이라면
git은 원격 저장소는 있지만 원격 저장소 없이 혼자 로컬에서도 버전 관리가 가능합니다.

그래서 git으로 원격저장소를 끼고 프로젝트를 진행하면 svn 보다 몇가지 단계가 더 있습니다.

svn에서 업데이트를 한다는 것은 다른사람들이 올린 원격저장소의 최종 소스를 내 소스와 합친다는 것이고,
커밋 한다는 것은 원격저장소의 최종 소스에 내 소스를 합친다는 것입니다.

git은 원격 저장소에 가기전에 로컬에서 버전관리가 가능합니다.
git 로컬 작업 저장소에 파일이 추가 되거나 파일이 수정된것을 버전 관리 대상에 포함시키는 명령어인 

git add

를 통해서 커밋 가능 상태로 변경하고,

git commit 명령어를 통해서 복원 지점을 만들듯 지점 지점마다 버전 관리를 하고,

commit을 통해 버전관리 된 내용들을 원격저장소에 추가 시키려면 git push,
원격저장소 소스를 내 로컬 저장소와 합치려면 git pull 을 통해서 하게 됩니다.



1. 누군가 작업한 소스를 변경한 경우 변경된 부분을 알 수 있는지 ?
저장소에서 작업하고 있는 경우 
git status 명령을 통해 
원격저장소의 내용이 내 로컬저장소보다 최신인지
로컬저장소의 내용이 원격저장소보다 최신인지 확인할 수 있습니다.


2. 한 파일을 두사람이 모르고 작업하는 경우 표시가 되는지 ?
한 파일을 동시에 수정해도 같은 부분을 수정하지 않는 한 문제 없이 merge가 됩니다.
또한 git 클라이언트 프로그램이나 git 호스팅 서비스를 사용하시면 버전별로 소스를 쉽게 파악 할수도 있습니다.
람이 / 2014/08/29 14:04:46 / 추천 0
어이쿠... 코드이그님 너무 감사합니다.
친절한 답변에 너무 감격 스럽네요...