SVN -> Git 넘어가기 전략을 짜고 싶습니다. ^^

2013-04-12 08:51

오랜만에 질문을 올리게 되네요. ^^

많은 개발자들이 '해봐야지' 하고 생각하는 것 중에 하나가 '깃Git 사용해봐야지.'하는 것이 아닐까 생각합니다. 저야 별무리 없이 SVN을 쓰던 환경에서 깃으로 넘어오게 되었는데(쓰는 환경에 솎아 들어가면 자연스러워지더군요), 지금 회사에 와서는 SVN을 사용하고 있는 개발자들을 어떻게 깃으로 이동시킬 수 있을까 하는 고민을 하고 있습니다.

[Git, 분산 버전관리 시스템] 김성안, 인사이트. http://www.yes24.com/24/goods/3676100?scode=032&OzSrank=1

에서 SVN의 자료들을 깃으로 이전하는 방법을 설명하고 있기는 하지만, 이를 회사에 어떻게 적용할까 하는 고민을 품게 되었습니다.

SVN에서 깃으로 무리없이 부드럽게 넘어가는 전략을 성공적으로 달성하신 분들이 계시다면, 어떻게 하셨는지 경험을 듣고 싶습니다. ^^

그 전략을 바탕으로 회사에 적절하게 녹아내고 싶습니다.

현재는 제가 별도의 프로젝트를 진행하게 되어서, 그 프로젝트는 깃으로 변경이력을 관리하고 원격저장소로 bitbucket.org를 이용하고 있습니다. 회사의 다른 개발자들을 초대해서 사용하는 모습을 볼 수 있도록 하고 있습니다. 자연스럽게~ '아, 깃을 쓰는 게 좋다. 깃을 계속 쓰자!' 라고 만들고 싶어요. ㅎㅎ

BEST 의견 원본위치로↓
2013-04-12 09:40

무엇인가 변화를 만든다는 것은 참 힘든 일이다. 지금까지 많은 변화를 시도했는데 몇 번을 거듭해도 쉽지 않은 것이 기존 도구에 익숙해져 있는 사람들에게 새로운 도구를 쓰도록 유도하는 것인 듯하다.

먼저 변화를 만들기 위해서 가장 중요한 것은 그 도구에 대한 해박이 지식보다는 사람들과의 관계가 더 중요하다는 생각을 많이 했다. 같이 일하는 사람들과 신뢰 관계를 만들고, 일정 수준의 영향력을 만든 상태에서 변화를 시도한다면 성공할 가능성이 높더라. 그렇지 않고 새로운 조직에 들어가 자신의 생각에는 이 도구나 이 방식이 맞으니까 변화를 시도하는 경우 사람들과의 마찰이 생기면서 더 이상의 진전이 없는 경우도 많이 경험했다. 모든 것이 사람의 감정에 좌우되기 때문에 먼저 사람에 집중하는 것이 맞다고 생각한다.

사람들과의 관계를 만들고 신뢰 관계를 쌓는데 일정 시간을 투자했으면 좋겠다. 다른 개발자들이 여유가 없는 상태라면 새로운 변화에 거부감이 들 수 밖에 없기 때문에 업무 시간 보다는 가능하면 점심 식사하면서나 회식자리에서 넌지시 의견을 제시해 보는 것도 좋겠다. 회사 내에 가볍게 새로운 기술을 소개하고 지식을 공유하는 자리가 있다면 그런 자리에서 주도적으로 발표해 보는 것도 좋겠다. 이렇게 시간을 보내면서 너는 git에 대한 학습을 계속해 나갈 필요가 있다. 대부분의 경우 새로운 시도를 할 때 문제가 발생하면 최초 제안한 사람에게 책임을 전가하는 경우가 많기 때문에 문제가 발생하면 최대한 빠른 시간 내에 해결할 수 있는 능력을 키워야한다. 그렇지 않을 경우 다시 회귀하려는 힘이 엄청 커지더라. 물론 신뢰가 바탕이 되어 있으면 좀 낫겠지만 신뢰를 쌓기까지는 너무 많은 시간이 필요하기 때문에 일단 시도했다면 처음 시도할 때 성공할 수 있도록 기반 지식을 쌓는 것도 필수라 생각한다.

변화를 시도할 때 네가 상당 부분 책임을 지고, 부담을 떠안아야 한다는 것도 알고 있을 거다. 이는 변화를 시도하는 사람으로써는 어쩔 수 없는 숙명이기 때문에 이 부분은 그냥 받아들여라. 네가 더 재미있게 일하고 싶다면 그 정도는 충분히 감내할 수 있을 거라 생각한다. 하지만 일단 변화에 성공하고 나면 많은 사람들이 너에게 고마움을 표시할 거다. 단, 정말 그 변화로 인해 개발자들이 많은 것을 얻어야겠지. 그 만큼 개발자에게 도움이 된다는 확신을 가질 수 있어야 한다.

기술적으로 svn에서 git으로 전환할 때의 기술적인 노하우와 몇 가지 자료 공유한다.

하지만 이미 버전 관리 시스템을 쓰고 있다면 git으로 전환에 너무 집착하지는 말자. 시간이 지나다보면 새로운 도구가 필요하다고 느끼는 시점이 올거야. 그 시점에 git으로 전환해도 늦지 않다고 생각한다. 현재 회사의 우선순위에서 무엇이 가장 중요할 것인지를 놓고 생각한다면 더 여유있게 접근할 수 있을 듯하다. 꼭 성공해서 성공 사례를 공유해 주면 좋겠다.

7개의 의견 from SLiPP

2013-04-12 09:40

무엇인가 변화를 만든다는 것은 참 힘든 일이다. 지금까지 많은 변화를 시도했는데 몇 번을 거듭해도 쉽지 않은 것이 기존 도구에 익숙해져 있는 사람들에게 새로운 도구를 쓰도록 유도하는 것인 듯하다.

먼저 변화를 만들기 위해서 가장 중요한 것은 그 도구에 대한 해박이 지식보다는 사람들과의 관계가 더 중요하다는 생각을 많이 했다. 같이 일하는 사람들과 신뢰 관계를 만들고, 일정 수준의 영향력을 만든 상태에서 변화를 시도한다면 성공할 가능성이 높더라. 그렇지 않고 새로운 조직에 들어가 자신의 생각에는 이 도구나 이 방식이 맞으니까 변화를 시도하는 경우 사람들과의 마찰이 생기면서 더 이상의 진전이 없는 경우도 많이 경험했다. 모든 것이 사람의 감정에 좌우되기 때문에 먼저 사람에 집중하는 것이 맞다고 생각한다.

사람들과의 관계를 만들고 신뢰 관계를 쌓는데 일정 시간을 투자했으면 좋겠다. 다른 개발자들이 여유가 없는 상태라면 새로운 변화에 거부감이 들 수 밖에 없기 때문에 업무 시간 보다는 가능하면 점심 식사하면서나 회식자리에서 넌지시 의견을 제시해 보는 것도 좋겠다. 회사 내에 가볍게 새로운 기술을 소개하고 지식을 공유하는 자리가 있다면 그런 자리에서 주도적으로 발표해 보는 것도 좋겠다. 이렇게 시간을 보내면서 너는 git에 대한 학습을 계속해 나갈 필요가 있다. 대부분의 경우 새로운 시도를 할 때 문제가 발생하면 최초 제안한 사람에게 책임을 전가하는 경우가 많기 때문에 문제가 발생하면 최대한 빠른 시간 내에 해결할 수 있는 능력을 키워야한다. 그렇지 않을 경우 다시 회귀하려는 힘이 엄청 커지더라. 물론 신뢰가 바탕이 되어 있으면 좀 낫겠지만 신뢰를 쌓기까지는 너무 많은 시간이 필요하기 때문에 일단 시도했다면 처음 시도할 때 성공할 수 있도록 기반 지식을 쌓는 것도 필수라 생각한다.

변화를 시도할 때 네가 상당 부분 책임을 지고, 부담을 떠안아야 한다는 것도 알고 있을 거다. 이는 변화를 시도하는 사람으로써는 어쩔 수 없는 숙명이기 때문에 이 부분은 그냥 받아들여라. 네가 더 재미있게 일하고 싶다면 그 정도는 충분히 감내할 수 있을 거라 생각한다. 하지만 일단 변화에 성공하고 나면 많은 사람들이 너에게 고마움을 표시할 거다. 단, 정말 그 변화로 인해 개발자들이 많은 것을 얻어야겠지. 그 만큼 개발자에게 도움이 된다는 확신을 가질 수 있어야 한다.

기술적으로 svn에서 git으로 전환할 때의 기술적인 노하우와 몇 가지 자료 공유한다.

하지만 이미 버전 관리 시스템을 쓰고 있다면 git으로 전환에 너무 집착하지는 말자. 시간이 지나다보면 새로운 도구가 필요하다고 느끼는 시점이 올거야. 그 시점에 git으로 전환해도 늦지 않다고 생각한다. 현재 회사의 우선순위에서 무엇이 가장 중요할 것인지를 놓고 생각한다면 더 여유있게 접근할 수 있을 듯하다. 꼭 성공해서 성공 사례를 공유해 주면 좋겠다.

2013-04-12 09:59

저희도 개발그룹내에서는 svn이고.. git은 그냥 개인적으로 관심있는 개발자들만 쓰는 수준인데요.... 큰 프로잭트를 할때 svn에서 브랜치를 따서 작업을 하는데.. 이 큰 프로젝트가 많은게 좀 함정이지만.. ㅋ 아무튼.. 그러다보니 svn repository의 크기는 점점 커져가고 대규모 프로젝트를 3-4개 같이 진행한다치면 서버에 걸리는 부하도 무시 못 하겠더라구요..

그래서 지금 고민중인건.. 이런 브랜치가 필요한 프로젝트를 각 개발자들이 로컬에서 git을 사용해 진행하도록 해서 먼저 git에 익숙해지면 어떨까 싶은 생각이 있습니다.

다만.. 1) 추후 git -> svn trunk로의 merge 작업 (툴이 있는듯하지만..) 2) remote git repository의 필요 (다른 프로젝트 진행 개발자와의 협업) 등의 준비가 필요할것 같아요...

사실 빠르다, 좋다, 대세다, 새거다(?) 등등 많은 장점들이 있고 이야기 되고 있지만.. 조직내에서 필요성에 대한 공감이 되지 않으면 어떻게 진행해도 쉽게 진행할 수는 없을것이라 생각됩니다. ^^

2013-04-12 11:19

위 두분 말씀대로 결국 사람사이의 이해관계인듯 한데.. 저희 팀은 svn->git으로 갈아타는데 큰 어려움이 없었습니다.

우선 인원이 많지 않고,

뭐든 새로운게 있으면 그것을 먼저 써보자는 마음들이 컸고,

새로운 프로젝트의 시작에서 갈아타서 크게 옮겨야하는게 없었죠.

그 와중에 '아! 이제부턴 git이다!'라고 모두 머리속에 각인시킨 그림이 하나 있었습니다. http://nvie.com/img/2009/12/Screen-shot-2009-12-24-at-11.32.03.png snv에서 이렇게 못하는건 아니지만 효율적인 면까지 따지면 git의 효율에 전혀 못미치겠죠. 그런저런 이해관계가 원만히 해결되니 갈아타는건 어렵지 않았습니다. 물론 기술적인 측면에서 1~2주 삽질을 하긴 했지만, 지금은 위와 같이 성공적인 형상관리 모델을 형성하며 진행되고 있죠.. ㅎㅎ

제 생각은 새 술부터는 새 부대에..라고 생각이 듭니다. 개발중인걸 옮겨버리기엔 다소 무리가..(있지 않을까요?) 그리고 새 프로젝트를 git에서 시작할때는 솔직히 좀 강제성이 있어야 하지 않나 생각합니다. "좀 해봐! 해보고 정 불편하고 안좋고 하면 svn으로 돌아가. 결국 svn이나 git나 조금만 이해하면 똑같아." 친구한테 이런말을 했던적이 있습니다. 지금은 어떻게 됐는지 모르겠지만..

2013-04-12 11:30

@go2zo 저는 위 글 중에서 이 부분이 중요하다고 봅니다.

---- 그 와중에 '아! 이제부턴 git이다!'라고 모두 머리속에 각인시킨 그림이 하나 있었습니다.

http://nvie.com/img/2009/12/Screen-shot-2009-12-24-at-11.32.03.png

이 그림을 보고 git으로 가야겠구나를 느끼려면 먼저 위 그림과 같이 각 feature간에 영향을 주지 않고 기능을 개발하고 소스 코드를 배포하고 싶은 필요가 있어야 된다고 생각합니다. 그런 필요가 발생했는데 svn을 활용해 이 작업을 하려니 생각보다 너무 힘들더라. 다른 도구를 찾을 때가 되었구나라는 공감대가 있어야 되지 않을까요? 그렇지 않은 상태에서 시대의 흐름이니 바꾸자라는 것은 동기부여 차원에서 부족하다는 생각이 듭니다.

그리고 이런 필요에 의한 변화가 아니면 실패하는 경우도 많고, 도구를 제대로 활용하는데도 한계가 있다고 생각합니다. 먼저 필요를 느끼도록 하기 위해 먼저 feature간에 영향을 주지 않으면서 독립적으로 개발하고 배포하는 환경을 만들어 가보는 것은 어떨까요? 그런 목표를 세우면 자연스럽게 git으로 넘어갈 수 밖에 없고, 그 때 git 효과를 극대화할 수 있으리라 생각합니다.

2013-04-12 14:40

"하지만 이미 버전 관리 시스템을 쓰고 있다면 git으로 전환에 너무 집착하지는 말자. 시간이 지나다보면 새로운 도구가 필요하다고 느끼는 시점이 올거야. 그 시점에 git으로 전환해도 늦지 않다고 생각한다. 현재 회사의 우선순위에서 무엇이 가장 중요할 것인지를 놓고 생각한다면 더 여유있게 접근할 수 있을 듯하다. 꼭 성공해서 성공 사례를 공유해 주면 좋겠다."

자바지기님의 이 얘기가 많이 공감이 됩니다.

저같은 경우는 오픈소스 컨트리뷰션을 하면서 더 깊게 git, git-flow 이해를 해야겠구나라고 많이 느꼈습니다. 몇몇 마음 맞는 사람끼리 오픈소스 컨트리뷰션 활동을하며 아 이건 도구고 우리 프로젝트에 적용하면 더 멋질거야라고 느끼게 되면 더 쉽게 적용가능할거라 생각해봅니다~ ;)

또한, 마음맞는 사람들끼리해도 svn 에서 git으로 돌리는데 굉장한 시행착오를 겪었습니다. 아래 슬라이드에 조금의 경험담에 담겨있습니다. 참고하시면 도움 되실거 같습니다. http://blog.softwaregeeks.org/archives/907

2013-04-12 16:31

관계에 대한 집중이 더 중요할것으로 보입니다... 기다리고 기다리고 ㅎㅎ 때가 올때까지?

git이 좋고 나쁨이 방향을 결정하는데 영향을 주기 보다 누구나 가지는 새로움에 대한 저항 과 익숙함에 대한 편안함이 영향을 미칠겁니다.

기다리고 기다리는게 어렵기하죠 ^^;;;

저에 경우에는 작은 개인 프로젝트를 진행하는데 이를 공개적으로 공유하면서 자연스럽게 깃을 사용하게 하려고 합니다. 물론 이 프로젝트가 다른 분들에게 구미가 당겨야 성공하겠죠??? ㅡㅡa

의견 추가하기

연관태그

← 목록으로