소셜인어스 SVN 도움말

32
개발하다가 실수로 파일을 지워버리면? 팀 작업을 하다가 다른 사람 작업물을 덮어써버리면? 걱정 없어요! 버전관리툴 SVN이 있으니까요! 소셜인어스는 버전관리툴로 SVN을 이용해요 svn이 더 궁금하면? 클릭

description

소셜인어스 사내 공유 목적으로 제작한 자료입니다. 혹시라도 도움이 되시는 분들이 계실까 하여 공유합니다.

Transcript of 소셜인어스 SVN 도움말

Page 1: 소셜인어스 SVN 도움말

개발하다가 실수로 파일을 지워버리면?팀 작업을 하다가 다른 사람 작업물을 덮어써버리면?걱정 없어요! 버전관리툴 SVN이 있으니까요!

소셜인어스는 버전관리툴로 SVN을 이용해요

svn이 더 궁금하면? 클릭

Page 2: 소셜인어스 SVN 도움말

맥 용 SVN 프로그램에는 이런 것들이 있어요

코너스톤 cornerstone

버전스 versions

스마트SVN SmartSVN

SC툴바버튼 SCToolbarButton

☛ 한글 오류 때문에 골치가 아파요

☛ 쓸만해요

예쁘긴 진짜 예쁜데...

Page 3: 소셜인어스 SVN 도움말

이제 SVN에 대해서 알아볼까요?

이건 여러분의 컴퓨터! 이건 SVN 서버 컴퓨터!

Page 4: 소셜인어스 SVN 도움말

처음에는 여러분의 컴퓨터에 아무것도 없어요!

여러분의 컴퓨터! SVN 서버 컴퓨터!

정말이에요!

a.txt

b.txtc.txt

d.txt

Page 5: 소셜인어스 SVN 도움말

제일 먼저 할 것은 ‘체크아웃(checkout)’

여러분의 컴퓨터! SVN 서버 컴퓨터!

서버로부터 파일들을 가져와요

a.txt

b.txt

c.txt

d.txt

➟a.txt

b.txt

c.txt

d.txt

체크아웃

파일들을똑같이

내려받았어요

Page 6: 소셜인어스 SVN 도움말

이제 파일들을 마음대로 할 수 있어요!

여러분의 컴퓨터! SVN 서버 컴퓨터!

a.txt

b.txt

c.txt

d.txt

jay.txt

b.txt

c.txt

d.txt

e.txt

이름 변경!삭제!

파일 추가!

☞☞

내용 수정! ☞

그런데SVN 서버는아직 바뀐게

없네요

Page 7: 소셜인어스 SVN 도움말

이제 작업이 끝났어요! ‘커밋(commit)’ 합니다!

여러분의 컴퓨터! SVN 서버 컴퓨터!

jay.txt

c.txt

d.txt➟커밋

e.txt

jay.txt

c.txt

d.txt

e.txt

내 파일들을 서버로 보내요

드디어 내컴퓨터와 서버가똑같아졌어요

Page 8: 소셜인어스 SVN 도움말

앗, 그런데 갑자기 누군가가 나타났어요!

여러분의 컴퓨터!

SVN 서버 컴퓨터!

jay.txt

c.txt

snsd.txt

➟커밋

e.txt

jay.txtc.txtd.txte.txt

그리고 자기가 바꾼 파일을 서버로 커밋했어요!

Juno의 컴퓨터!

jay.txtc.txt

snsd.txte.txt

Page 9: 소셜인어스 SVN 도움말

어떡하죠? 서로 또 달라졌어요.

여러분의 컴퓨터! SVN 서버 컴퓨터!

jay.txt

c.txt

snsd.txt

e.txt

jay.txt

c.txt

d.txt

e.txt

Page 10: 소셜인어스 SVN 도움말

최신 상태를 유지하려면 ‘업데이트(update)’

여러분의 컴퓨터! SVN 서버 컴퓨터!

jay.txt

c.txt

snsd.txt

e.txt

jay.txt

c.txt

snsd.txt

e.txt

➟업데이트

체크아웃은 처음에만, 업데이트는 수시로!

다시 서버와똑같아졌어요

Page 11: 소셜인어스 SVN 도움말

아, 그런데 뭔가 수정할 게 생겼어요!

여러분의 컴퓨터! SVN 서버 컴퓨터!

jay.txt

c.txt

snsd.txt

e.txt

jay.txt

c.txt

snsd.txt

e.txt

소녀시대가9명이라고 잘못적혀 있어요.8명으로 정정

합니다.

Page 12: 소셜인어스 SVN 도움말

수정한걸 취소할땐 ‘되돌리기(revert)’

여러분의 컴퓨터! SVN 서버 컴퓨터!

jay.txt

c.txt

snsd.txt

e.txt

jay.txt

c.txt

snsd.txt

e.txt

아, 효연을빠뜨렸어요.

다시 돌려놔야겠어요.

서버와는 상관없이 내 컴퓨터에서일어나는 일들이랍니다.

Page 13: 소셜인어스 SVN 도움말

그런데 누가 저 파일을 바꾼거야?

여러분의 컴퓨터! SVN 서버 컴퓨터!

jay.txt

c.txt

snsd.txt

e.txt

jay.txt

c.txt

snsd.txt

e.txt

이 파일은지금까지

누가 수정해왔을까요?

Page 14: 소셜인어스 SVN 도움말

수정 기록 훑어보기! ‘로그(log)’

여러분의 컴퓨터!

jay.txt

c.txt

snsd.txt

e.txt

r1977 | reid | 2012년 6월 20일 오전 11시 43분 10초 | 1번째 줄/trunk/test_repo/jay.txt로 이름 변경

r1974 | reid | 2012년 6월 19일 오후 4시 12분 56초 | 1번째 줄뭔가 내용 작성

r1970 | jay | 2012년 6월 18일 6시 52분 15초 | 1 번째 줄/trunk/test_repo/a.txt 생성

누가 언제무엇을 어떻게바꾸었는지가

기록되어있어요!

맨 앞 r1977은 리비전이라고 해요수정 사항이 있을 때 마다 1씩증가한답니다.

Page 15: 소셜인어스 SVN 도움말

어딜 어떻게? ‘책임묻기ㅋ(blame)’

여러분의 컴퓨터!

jay.txt

c.txt

snsd.txt

e.txt

파일의한줄한줄 누가

언제 작성한건지알려줍니다. ㅋ

1970 jay 안녕하세요? 저는 jay예요.1970 jay 오늘도 즐거운 하루 보내고 계신가요?1974 reid 힘들고 지칠때면 레고로 원기회복하세요.1970 jay 그럼 안녕히

Page 16: 소셜인어스 SVN 도움말

자, 지금까지는 기초반 공부였구요.이 정도만 알아도 별 문제 없이 잘 쓸 수 있답니다.단, 프로그래머만 빼구요. :(

이제 고급반 들어갑니다!

Page 17: 소셜인어스 SVN 도움말

휴와 잭이 멋진 게임을 만들고 있어요!

좋은 아이디어가떠올랐어요!

그런데 구현하는데시간이 좀 걸릴 것

같아요!

좋아요!그런데, 혹시라도

버그가 있는 코드를커밋하시면곤란해요...

휴 잭

Page 18: 소셜인어스 SVN 도움말

휴는 깊은 고민에 빠졌어요.

아, 이럴수가...스펙타클한

아이디어인데

내가 만약 작은버그라도 만들어내면

마음 놓고 만들 수없다니...

잭의 작업에지장을 줄텐데...아, 어떡하지

Page 19: 소셜인어스 SVN 도움말

맞다! 게보... ‘브랜치(branch)’

Page 20: 소셜인어스 SVN 도움말

브랜치가 뭔가요?

트렁크(trunk)듬직한 나무 몸통이에요.

브랜치(branch)몸통에서 뻗어나온

곁가지를 말해요.

Page 21: 소셜인어스 SVN 도움말

SVN 디렉토리 구조도 나무와 비슷해요

Project trunk

branches

tags

이 권장하는

모두가공유하는작업공간

임시로 격리된작업공간

이건 조금있다가

설명할게요

Page 22: 소셜인어스 SVN 도움말

휴가 브랜치를 만들고 있어요

Project trunk

branches

tags

Hugh’s Brilliant Idea

trunk의 파일들을branches 디렉토리 아래 나만의 작업 공간으로 복사합니다.

브랜치(branch) 명령을 사용해요

Page 23: 소셜인어스 SVN 도움말

휴와 잭이 만드는 게임 디렉토리의 구조예요

Project trunk

branches

tags

Hugh’s Brilliant Idea

잭이 열심히달리고 있어요

휴가 편안하게작업하고 있어요

Page 24: 소셜인어스 SVN 도움말

드디어 휴의 아이디어가 구현되었어요!

DOH!!!!! 작업이 드디어

끝났어요!이제 어떡하나요?

이제 일주일동안휴의 소스와

제 소스를 비교하며 카피&페이스트를

하도록 해요

레드불 먼저 한잔 하시고...

그럴리가 없겠죠?

Page 25: 소셜인어스 SVN 도움말

휴의 작업을 ‘병합(merge)‘합니다!

Project trunk

branches

tags

Hugh’s Brilliant Idea

휴가 작업한 branch의파일들이 trunk로

병합됩니다.

병합(merge) 명령을 사용해요

Page 26: 소셜인어스 SVN 도움말

뜨어! 휴와 잭의 작업이 충돌했어요!

아, sistar.hpp파일 1514번째줄을

수정하셨어요?

설마, 휴도 그 파일수정하신거예요?

하필 왜 1514번째줄을수정하신거예요.

Page 27: 소셜인어스 SVN 도움말

스스로 충돌을 해결해야 합니다.

SVN 병합(merge)은 두 작업을 자연스럽게 합쳐줍니다.

하지만, 하나의 파일 속 동일한 위치를 변경해버리면,컴퓨터의 슈퍼 할아버지가 오더라도 자동으로 해결할 수가 없습니다.

SmartSVN의3-way merge tool 입니다.

이런 도구를 이용하면병합이 쉬워집니다.

Page 28: 소셜인어스 SVN 도움말

병합 과정을 다시 한번 순서대로 살펴볼까요?

여러분의 trunk

생각보다 복잡해요.

여러분의 branch

svn서버의 trunk

svn서버의 branch

• 2)가 끝나면, 내 컴퓨터와 서버는 완전히 똑같아집니다.• 병합은 내 컴퓨터에서 처리됩니다. 모든 이슈가 해결되면 그때 서버에 반영합니다.

1) 커밋

2) 업데이트

3) 병합

4) 커밋

Page 29: 소셜인어스 SVN 도움말

브랜치 작업의 장점은 협업에서 두드러집니다.

Yubin Juno

Willy

Jay

JoyJack

Hugh

소셜인어스는 정신없이 개발 중!

TRUNK

BRANCHES

작업을 branch에서검증하고 trunk로 커밋한다면trunk가 문제가 생기기는쉽지 않겠죠?

Page 30: 소셜인어스 SVN 도움말

마일스톤이 완료되었습니다!

Juno

Willy

Jay

Joy

TRUNK

목표가 달성되면 완료 순간의 빌드를저장하고 유지해야 합니다.

이 빌드가 서비스를 시작했는데한참 후, 이 빌드에서버그가 발생한다면 어떡하죠?빌드를 저장해두지 않으면완벽하게 수정 할 방법이 없어요.

Page 31: 소셜인어스 SVN 도움말

이때 사용하는 것이 ‘태그(tag)‘입니다.

Project trunk

branches

tags

모든 개발자들이 열정을쏟아부은 trunk를

태깅(tagging) 합니다

120720_3rd_milestone

태그는 수정하지 않아요!

Page 32: 소셜인어스 SVN 도움말

쉬우면서도 어려워요. 하지만 중요하죠!

그리고 SVN의 기본적인 사용법은 굉장히 쉽지만,조금만 더 잘 사용하려면 무척 어려워진답니다.게다가 올바르게 사용하지 않으면 엉뚱한 결과를 만들어내기도 해요.

작업의 버전 관리는 말로 다 할 수 없을만큼 중요해요.프로젝트의 시작과 끝, 모든 역사가 다 저장되기 때문이에요.

그래서 SVN의 정확한 사용법을 아는게 매우 중요해요!항상 아기 강아지처럼 신중하게 다루어주세요.

설명은 여기까지입니다...