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

소셜인어스 SVN 도움말

Jun 23, 2015

Download

Technology

Insub Lee

소셜인어스 사내 공유 목적으로 제작한 자료입니다. 혹시라도 도움이 되시는 분들이 계실까 하여 공유합니다.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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의 정확한 사용법을 아는게 매우 중요해요!항상 아기 강아지처럼 신중하게 다루어주세요.

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