일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 다이나믹 폰트
- Unity Editor
- Tween
- jumping ball
- Job 시스템
- AES
- unity
- DotsTween
- RSA
- 텍스트 메시 프로
- C#
- 암호화
- job
- 샘플
- 이미지 폰트
- Dynamic Font
- sha
- Dots
- TextMeshPro
- 2D Camera
- 최적화
- Framework
- base64
- Custom Package
- 단말기 해상도
- 프레임워크
- ui
- 커스텀 패키지
- adfit
- 가이드
- Today
- Total
EveryDay.DevUp
[Unity] 버전 관리, 형상 관리 ( SVN, GIT ) - 개념 본문
● 버전 관리, 형상 관리
: 버전 관리나 형상 관리나 사실 상 같은 말이다. 작업물을 최신 버전과 이전 버전들을 가지고 있어서 어떤 상황에서도 언제든 원하는 상태로 돌릴 수 있도록 하는 것을 말한다.
: 버전관리, 형상 관리가 말을 어려워 보일지 몰라도 원리는 사실 간단하다. 작업물을 수정할 때, 수정하기 전에 복사해서 다른 이름으로 만들고, 수정한 작업물은 원래의 이름으로 저장하는 방식이다.
: 원리는 간단하지만, 실제로 사람의 손으로 위의 작업을 한다면 여러가지 문제에 직면하게 된다. 작업물이 하나이고 작업자도 한 사람이라면 사람의 손으로 할 수 있다. 하지만 여러명이 하나의 작업물을 수정한다고 했을 때 작업 전의 상태가 모든 사람이 동일하게 가지고 있는 상태인가에 대한 확인이 필요하고, 동시에 작업을 할 수 없는 문제가 있다. 또한 작업물이 여러개라면 사람의 눈으로 작업 전과 후의 상태를 비교하는 것은 엄청난 시간이 필요할 것이다.
: 사람이 컴퓨터에서 하는 모든 작업은 1,0의 숫자의 나열에 불과하고, 그렇기 때문에 사람이 할 수 없는 비교도 할 수 있다. 예를 들어 그림 파일이 원본과 수정 파일이 있을 때 사람이 둘의 차이를 발견하기 위해서는 눈으로 하나 하나 비교하는 수 밖에는 없다. 하지만 컴퓨터에게 해당 파일을 비교하는 작업을 한다면, 원본과 수정 파일의 1,0의 숫자가 서로 다른 부분만을 체크하여 나타낼 수 있다. 이는 사람보다 더 정확하고 빠르다는 것을 알 수 있다.
: 사람이 기계를 만든 이유는 사람이 할 수 없는 문제를 해결하기 위함보다 사람의 편의성을 높이기 위해서 인데, 버전 관리 툴 또한 사람이 아닌 컴퓨터를 통해 작업의 효율성을 높이기 위함이다.
● SVN 버전 관리
: SVN의 버전 관리 방식은 하나의 서버에 작업물을 올리고 내려 받는 형태로 구성되어 있다.
① 사람1이라는 사람이 중앙 서버에서 A라는 작업물을 받은 후에 AA에 빨강으로 수정한 뒤 중앙 서버에 올린다.
② 사람2도 중앙 서버에서 동일하게 작업물을 받는데 이때는 A라는 작업물과 AA에 빨강으로 수정했다는 내용을 받는다.
③ 사람1, 사람2가 다운로드 받은 작업물을 수정하여 서버에 올리고, 다운로드 받는 과정을 반복하면서 작업물을 공유 한다.
▶ SVN은 파일을 관리할 때 최초의 생성한 파일과 수정한 파일의 차이점만을 기록하여 서버에서 가지고 있고, 이를 다른 사람이 다운받을 때는 원본 파일과 변동된 내용들로 최종 수정 파일을 만들어 낸다.
: SVN은 저장소가 하나이기 때문에 작업물을 올리는 순간 모두에게 공유가 가능하고 과정도 단순하여 직관적이다.
: SVN은 저장소의 내용을 다운받을 때 변동되었던 내용을 다 받아야 되기 때문에 변동 내용에 비례하여 다운로드 받는 시간이 증가하며, 서버에 이슈가 생길 경우 SVN을 사용할 수 없는 문제가 있다.
● GIT 버전 관리
: GIT의 버전 관리 방식은 사용자의 컴퓨터에 로컬 서버의 개념을 두고 업로드와 다운로드를 로컬 서버를 통해서 하는 것이다.
① 사람1이라는 사람이 중앙 서버에서 A라는 작업물을 받은 후에 AA에 빨강으로 수정한 뒤 로컬 서버에 올린다.
② 사람1이 추가 수정 사항이 없다면 로컬 서버의 AA 작업물을 중앙 서버에 올린다.
② 사람2도 중앙 서버에서 다운로드를 받는데, 최신의 AA를 받는다.
③ 사람1, 사람2가 다운로드 받은 작업물을 수정하여 로컬 서버에 올리고, 다운로드 받고 최종 수정이 완료된 내용을 중앙 서버에 올리는 작업을 반복한다.
▶ GIT은 파일을 관리할 때 파일의 변동 내용이 있다면, 해당 파일의 스냅샷을 기록하여 저장한다. 이를 다운로드 받을 때는 스냅샷 파일을 다운로드 하게 된다. GIT은 원본 파일과 수정한 파일의 전체 내용을 가지고 있는 것이다. ( 예를 들어 text1.txt [ "1234" ] 를 text1.txt[ "12345" ]로 수정 한 후 업로드하면 text1.txt(2)의 파일이 생기고 text1.txt [ "12345" ]의 내용이 모두 복사가 된다. 서버에는 text1.txt [ "1234" ], text1.txt(2) [ "12345" ] 파일 2개가 생긴다. ) 물론 이런식으로 계속 저장하면 저장 용량이 커지기 때문에 최종 수정본과 이전 버전의 차이점을 기록하는 작업을 한다.
: GIT은 로컬 저장소가 있기 때문에 네트워크 연결 없이 자신의 PC에서 빠르게 작업을 할 수 있다. 파일을 다운로드 할때도 최종 스냇샵 파일만을 받기 때문에 속도가 빠르다.
: GIT은 로컬 저장소라는 개념으로 인해 복잡성이 올라가고 이로 인해 직관적으로 이해하기가 어렵다. 이 부분이 GIT의 최대 단점이라고 할 수 있다. 혼자 작업하는 사람이라면 혼자 개념을 이해하고 사용하면 되지만 여러 사람이 작업을 할 때는 모든 사람들에게 개념을 이해시켜야하는데 사람마다 이해도가 다를 수 있고 이해하는 시간이 다르기 때문에 어려움이 있다.
참고 자료 : https://git-scm.com/book/ko/v2
'R&D' 카테고리의 다른 글
[Unity] 단말기 메모리 ( Flash Memory, RAM, Cache L1,L2,L3 ) (0) | 2020.06.08 |
---|---|
[Unity] 버전 관리, 형상 관리 ( SVN, GIT ) - 비교 (0) | 2020.06.06 |
[Unity] MVC, MVP, MVVM 소프트웨어 디자인 패턴 (4) | 2020.06.01 |
[Unity] 컴퓨터의 수 표현 ( 정수, 실수 [ 고정 소수점, 부동 소수점 ] ) (0) | 2020.05.29 |
[Unity] 게임 UI를 관리하기 위한 Stack 시스템 (0) | 2020.05.23 |