Software development #5: Version Control System

Slides:



Advertisements
Similar presentations
작성자조성웅 작성일자 기본환경 1. Java : Eclipse : Tomcat : 6.0 이상 4. DB : MySQL File System : DFS 6. Framework - Spring : JPA 및 CXF.
Advertisements

컴퓨터 종합설계 2010 년 2 학기 Syllabus 개요 (1/2) 목표  실세계 문제를 제시하고, 이에 대한 해결책을 컴퓨터 공학적인 방 법으로 해결하기 위하여 팀을 주축으로 소프트웨어 개발 프로젝트 수행  프로젝트 계획에서부터 구현까지 소프트웨어.
구글 (Google) 계정 만들기 어르신을 위한 디지털 라이프 튜터 김재만입니다.. 1. 화면의 오른쪽 밑의 [ 메인 메뉴 ] 를 누릅니다.
Lynx, Opera, and Other Browsers 인공지능연구실. Contents Lynx (Text 기반의 Browser) 역사 및 특징 사용법 및 기능 Opera (Small Browser) 역사 및 특징 사용법 및 기능 과 뉴스 그룹 사용법 Other.
2008년도 하반기 대졸 신입 공채 ▣ 모집대상 년도 2월 졸업자 ~ 2009년도 2월 졸업예정자 (4년제 정규대학 및 대학원) ▣ 모집분야 직군 직무 직무 세부 내용 기술 웹개발 Web Development 웹 페이지 및 웹 스크립트 개발 어플리케이션 개발.
직장내 성희롱 예방교육 제주지방노동사무소.
사이버 수사 및 디지털 증거수집 실태조사 곽병선 노명선 이종찬 권양섭.
‘1+3 방과후학교’운영 영재학생 당기고 부적응학생 끌어주는 부천부곡중학교 경기도교육청지정 방과후학교 시범학교
제10회 부모님과 함께 읽는 과학도서 독서감상문 대회
Linux Seminar #1 리눅스 이해하기.
행동강령 해설 기 획 조 정 실.
국가도서관통계시스템 수치입력자 매뉴얼 이의신청 방법 Version. 1.0.
SPARCS Current Status SPARCS08 logue 김도국.
성창기업 설비관리분야 신입사원 모집 사업분야 소개
03. 인쇄광고 알아보기.
기초C언어 제1주 강의 소개, C언어 개요, Eclipse 사용 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원
손노리 / 서 관희 A Game Business Division of Plenus Entertainment
Knowledge Enterprise Portal Solution(iKEP)
Knowledge Enterprise Portal Solution(iKEP)
Chapter 32 Analyzing Web Traffic
Cloud & Openstack suckzoo.
2016 “ 경제교육 봉사단 대학생 (재)광주광주광주원 경제교육센터 지원대상 모집일정 활동혜택 활동내용 지원시 유의사항
InstallShield Professional Services ( Services Pack / Education / Consulting ) ㈜소프트뱅크 커머스.
자동 소프트웨어 프로세스 구축을 위한 공개 소프트웨어 툴 체인 연구
Git 사용법 GitHub 가입 GitHub 새 저장소 만들기 Git 설치, 설정.
SPARCS 2012 boolgom 빨간 금광과 이슈 트래커
이슈관리와 Trac - 월요 주제 발표 작성자 : 한애연 작성부서 : 사업1팀
AMS (Application Management Service) Requester 사용자 Manual Ver 1.3
Trac By insung.
독도 바로알기 2. 사료와 지도로 보는 독도.
선진사 Benchmarking 결과보고 통합 ERP 구축 전담반.
PHP + Eclipse + Google Code를 이용한 개발환경
remote add origin <GitHub url>
제 37차 한•일 농림수산기술협력위원회 참석결과
운영체제 (Operating Systems)
트랜잭션(Transaction) I DBMS는 다수 사용자(Multi User) 용 대표적인 DB 응용
프로세스 마이닝을 통한 조달 프로세스 고도화 세미나
excel macro Arcview Geomania 조사
이종효 이슬기 강민수 송강산 이해인 은혁진.
제 1 장 소 개 시스템 분석 및 설계 허철회 2006학년도 2학기 상주대학교 컴퓨터공학과.
IT’S A MOLEHILL NOT A MOUNTAIN ! The Truth about the Changes
2018 봄학기 Pusan National University School of CSE
MEAN Stack Front to Back
강의 소개, 자료구조의 개념, SW 개발과 자료구조
GIT 설정 및 사용 방법 (윈도우 기반).
제 10 장 의사결정이란.
Downloading and Installing Software and Other Files
한국과학기술정보연구원 정보유통본부 지식기반실
1조 김성수 백현기 석광우 김지원 박광연.
요구사항 추적성을 위한 소프트웨어 프로세스 가시화 구축 자동화 (Automatic Construction of Software Process Visualization for Requirement Traceability) 홍익대학교 소프트웨어공학.
사용자 매뉴얼 Version 1.0 대금지급(외주)
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
업무 메뉴얼 1. 사무용품/소모품 청구의뢰서 작성요령 2. 법인 등기부등본/법인 인감증명 발급 요청서 작성요령
13.1 정보시스템의 개요 13.2 정보시스템의 개발 13.3 시스템 검사 13.4 시스템 문서화
의학도서관 기록물 보존 사업 원내 로 대용량 파일 첨부방법
( Personnel Decision Support System )
과제물 3호 1번 문제 설명자료 엑셀과 파워포인트의 기초 엑셀과 파워포인트를 접해본 적이 없다는 가정하에
회계감사 박 한 순.
안내선 교차점에 첫 번째 텍스트 설명 배치 안내선 교차점에 두 번째 텍스트 설명 배치 그림 배경 위의 투명한 애니메이션 도형
시스템 인터페이스 Lab#6 C 쉘 프로그래밍 실습.
Bug Localization Based on Code Change Histories and Bug Reports
Ingredion Korea Internship Program
1. 데이터베이스 환경.
차트 만들기 p.307 미리 x축의 항목과, 데이터 계열의 이름이 나타날 수 있도록 지정하는 것이 편리하다.
유예 X-FILE *조사자* 1301권희원 1315이예지 1317장아정 1322홍자현.
비축사업 전자계약시스템 도입 용역 사용자매뉴얼(업체담당자용) Version 1.0.
우수사원 연수 제안서 2-1. 항공, 호텔, 식사, 차량 세부 안내 (지역순서대로 작성 발리-싱가포르-괌)
한국디지털미디어 고등학교 번 조성혁 HTML 5는 HTML4의 다음 버전으로 특정 plug-in같은 것 없이 web에서 진보,발전된 application을 만들 수 있도록 HTML을 발전시킨 것이다.
Systems Engineering 충북대학교 토목공학부 토목시스템공학전공 시스템공학연구실
“용산복지재단과 함께 꿈을 이룹니다” 함 께 이 룸.
Presentation transcript:

Software development #5: Version Control System Combacsa’s SPARCS Web Seminar Software development #5: Version Control System

Version Control System

Recall) 문서, File 문서 … 설마 모르는 사람? File (파일) … … 설마 모르는 사람?

Version Control (버전 관리) 정의 (영어) Management of changes to documents, programs, and other information stored as computer files. 번역 (한국어) “관리 대상” 인 파일들의 버전을 관리하는 것 “관리대상” 인 파일들에 일어나는 변화들을 관리하는 것

Version (버전, 판) 정의 예를 들면 “관리 대상” 에 있는 파일이 변화를 겪을 때마다 그 파일에게 매겨지는 일련 번호 국기에 대한 맹세 “조국과 민족의 무궁한 영광을 위하여” … 판 “자유롭고 정의로운 대한민국의 무궁한” … 판  같은 문서였지만 개정되었다. 새 “판” 이 생긴 것.

국기에 대한 맹세 Version Version 1 (1968.03) Version 2 (1972) 나는 자랑스런 태극기 앞에 조국의 통일과 번영을 위하여 정의와 진실로서 충성을 다할 것을 다짐합니다. Version 2 (1972) 나는 자랑스런 태극기 앞에 조국과 민족의 무궁한 영광을 위하여 몸과 마음을 바쳐 충성을 다할 것을 굳게 다짐합니다. Version 3 (2007) 나는 자랑스러운 태극기 앞에 자유롭고 정의로운 대한민국의 무궁한 영광을 위하여 충성을 다할 것을 굳게 다짐합니다.

다시. Version Control 이란… Version 의 생성 옛날 Version 의 열람

Version Control 을 이용한 예 ARAra 프로젝트의 “아라의 정의” 페이지

Version 1

Version 2

Version 3

Version == 문서 발전의 기록? 새로운 버전의 생성 따라서 문서에 계속 새로운 내용 추가 전반적으로 점점 깔끔하게 정리 버전이 높아질 수록 더 나은 문서가 된다 따라서 버전 관리 == 문서 발전의 기록 문서 발전의 기록이 필요없다면 굳이 버전 관리 할 필요가 없다는 생각이 든다

Version != 문서 발전의 기록 그러나 예를 들어 다음과 같은 상황을 생각해 보자. 한참 AraDefinition 문서를 편집하던 도중 …

상황 1 “야 오늘도 세미나 일정이 변규홍되었대!!” 뭐? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

상황 2 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아 웃겨 … 아 맞다, 문서 고치던 중이지. Submit Changes 해야지.

상황 3 헉 !!! 나 뭐한거임? ㅠㅠㅠㅠㅠㅠ 미쳤나봐 ㅠㅠㅠㅠ

일반화된 상황 설명 문서를 편집하던 중 실수로 내용을 지웠다 경우 1 : 아직 편집 프로그램을 끄지 않았다 대책 : Ctrl + Z (실행 취소) 경우 2 : 이미 프로그램을 껐는데 다행히도 옛날에 복사해 둔 파일이 있었다 대책 : 옛날에 미리 복사해 둔 파일에서 지워버린 부분을 복원한다 경우 3 : 이미 프로그램을 껐는데 복사본 없ㅋ엉ㅋ

실수로 작업물 날릴 때 대책은? 1. 정신줄을 절대 놓지 않는다? 2. 작업할 때 중간 중간에 파일 백업한다? 아무리 웃기는 일이 있어도 ㅋㅋㅋ 치지 않는다 근데 인간적으로 인간이 이게 가능할 리가 없다 2. 작업할 때 중간 중간에 파일 백업한다? 메일에 첨부하든 다른 폴더에 모아놓든 한다 중간에 날리면 거길 뒤져서 원본을 복원해낸다 근데 수작업으로 일일이 파일 복사하는 건 끔찍해. 그리고 만약 파일이 여러 개라면 … … 꺄악!!!

2. 가 바로 버전 관리! 버전 관리가 있다면 아무 문제 없다 즉 버전 관리란 단순히 “발전 기록” 이 아닌 작업 중간 중간에 “버전” 을 생성한다 실수로 문서의 내용을 잘못 수정했을 경우, 버전 관리되고 있었으므로 해당 문서의 옛 버전으로 되돌려버리면 끝 즉 버전 관리란 단순히 “발전 기록” 이 아닌 언제든지 “옛날 버전” 을 열람할 수 있도록 하는 유용한 기술이다

앞의 상황의 예 문서 내용을 그냥 옛 Version (3번) 으로 되돌 리면 그만이다.

Summary Version 이란 하나의 파일에 지속적으로 일어난 변화들에 대하여, 특정한 변화가 일어난 뒤의 파일의 상태를 일컫는 말이다. Version Control 은 파일에 새로운 Version 이 생기면 이를 보관하고, 이미 저장된 Version 들의 상태로 파일을 되돌려주는 등의 역할을 통해 파일의 Version 을 관리해주는 것을 말한다. Version Control 을 이용하면 파일을 편집하다 발생하는 다양한 실수들에 능동적으로 대처할 수 있으며, 필요시 언제든 옛날 Version 을 불러올 수 있으므로 매우 편리하다.

Version Control System

Version Control System 정의 Version Control 을 해 주는 프로그램 Version Control System 을 쓰는 이유 복잡한 일은 버전 관리 시스템이 알아서 한다 새로운 버전이 생길 때 파일 일일이 백업하기, 백업하면서 버전 숫자 알아서 매겨주기 등 우리는 다만 “버전 생성” 기능을 실행하면 끝!

VCS 없이 Version Control? 버전의 생성? 옛 버전으로 되돌리기? 새로운 버전을 만들기 위해서는 파일을 저장할 때마다 “기존의 파일” 을 따로 복사하여 적당한 이름으로 보존해야 한다 또한 이 “보존” 하는 파일들을 적당한 장소에 수작업으로 모아두어야 한다 옛 버전으로 되돌리기? 자신이 각 버전을 어떤 파일 이름으로 저장했는지 기억해 두던가 따로 적어둬야 한다

Verson Control System Rocks! 버전 관리 시스템을 쓰면 귀찮은 영역은 프로그램이 전적으로 알아서! 인간이 신경써야 할 것은 오직 “버전 생성” 기능을 사용할 타이밍 고민 뿐!

VCS Everywhere Wikipedia (위키백과) Google Docs (Google 문서도구) 누군가 고칠 때마다 편집 기록을 모조리 보관 위키백과 이외의 다른 Wiki 대부분에서 제공 예) 아까의 AraDefinition 문서 … Google Docs (Google 문서도구) 문서 내용을 수정할 때마다 수정 이력 보관 누가 어떻게 고쳤는지 언제든 알 수 있다

보편적인 버전 관리 방식 버전 관리 대상 폴더를 설정한다 다음 작업 중 하나를 한다 새로운 파일을 버전 관리 대상으로 (폴더 속으로) 이미 버전 관리 대상인 파일을 편집하고 파일의 새로운 버전의 생성을 명령 관리 대상인 파일을 버전 관리 대상에서 제외 버전 관리 대상인/이었던 파일의 옛날 버전 열람 또는 복원

VCS AKA Revision Control System (RCS) Version 을 넘어 Revision 을 관리해준다 Revision? (뒤에 설명) Source Configuration Management (SCM) 프로그램 Source 코드의 상황을 관리한다 VCS 는 SCM 의 기능의 일부분이라고 보는 견해도 엄밀한 구분이 되기는 하는 모양이다

Change 정의 Change 없으면 새 Version 도 없다 버전 관리되고 있는 파일들에 일어난 변화 보통 파일 / 문서 단위로 매긴다 하나의 문서 내에 여러 곳이 변화한 것도 일단은 1개의 변화라고 보는 편 Change 없으면 새 Version 도 없다 바꿔 말하면 Change 가 있으면 Version 생성 가능

Changeset 정의 예를 들어 버전 관리되고 있는 파일들에 일어난 여러 Change 들을 하나로 합친 것 파일 1번에도 Change 가 있고 파일 2번에도 Change 가 있을 때 이 둘을 합쳐서 하나의 Changeset 이라고 볼 수 있다

Commit 정의 즉 Change 혹은 Changeset 으로부터 새로운 Version 을 만들어 내는 것 변화가 일어났다고 하더라도 Commit 을 하기 전까지는 새로운 Version 이 생기지 않는다 새로운 Version 의 생성은 명시적인 Commit 시에만!

Revision 정의 즉 Commit 에 의해 저장소 자체에 매겨지는 Version 파일들에게는 각 파일마다의 버전이 있고 저장소는 각 Changeset 에 의해 “여러 파일” 이 한꺼번에 바뀌는 경우가 있어서 그러한 한꺼번에 바뀜이 저장소 입장에서는 “하나” 의 Version 의 생성이라고 볼 수 있으니까. 예제를 보자

Revision 의 예 버전 관리중인 두 파일 Changeset 1 : A.txt change A.txt 와 B.txt 에 대하여 Changeset 1 : A.txt change Changeset 2 : A.txt change, B.txt change Changeset 3 : B.txt change 이제 A.txt, B.txt 에게 각각 2개의 버전이 생겼다

Revision 의 예 (Cont’d) 그러면 저장소 입장에서는 Revision 1 : A.txt 버전 1 Revision 2: A.txt 버전 2, B.txt 버전 1 Revision 3: A.txt 버전 2, B.txt 버전 2 이렇게 된다!

왜 Revision 이 필요한가? 저장소 차원에서의 “단위 변화” 는 “파일 하나” 보다 큰 단위여야 할 수 있다! 저장소 차원에서의 “단위 변화” 는 “파일 하나” 보다 큰 단위여야 할 수 있다! 판타지소설 작가가 소설 파일들을 버전 관리한다고 치자. (챕터마다 파일을 나눠둠) 주인공 이름을 바꾼다고 하자. 그럼 이 변화는 “한 파일” 에만 적용되어야 할까, 여러 파일 모두에 동시에 적용되어야 할까? 당연히 모든 파일에 대해서 동시에 바뀌어야 한다! 어느 파일에는 옛날 이름을 쓰고 어느 파일에는 새 이름을 쓰면 “소설” 의 레벨에서는 문제 발생!

Revision 개념이 없는 VCS Changeset 개념이 없는 경우 예 “한번” 에 동시에 일어나야 하는 변화, 라는 개념을 인정하지 않으면 Changeset 개념도 없고 따라서 Revision 개념도 존재할 수 없다 예 위키 백과사전에서는 각각의 서로 다른 항목들은 “독립”적인 항목들이므로 굳이 “여러 항목” 에 걸친 변화를 고려해줘야만 할 필요는 없다고 볼 수도 있다 (수동으로 맞춰야 한다는 의미)

Version Control System 중앙 집중형 VCS

중앙 집중형 버전 관리 시스템 목적 여러 사람이 공동으로 작업하면서 하나의 버전 관리 시스템을 공유한다 즉, 여러 명이 동시에 작업하는 파일들을 하나의 버전 관리 시스템에 집어넣고, 모든 사람들이 추가하는 버전들을 모든 사람들이 공유한다!

중앙 집중형 VCS 의 작동방식 User 1 User 2 Repository Version 1 Version 2 … … … Version n Checkout Checkout Working Copy Working Copy Commit Commit Change Change

주요 용어 (1/2) Repository (저장소) Working Copy (작업 사본) “관리 대상” 의 파일들과 파일들의 각 버전에 대한 정보가 모여 있는 폴더 Working Copy (작업 사본) 각 사용자들이 “저장소” 에 있는 파일들의 최신 버전의 복사본을 가져와서 작업하는 폴더 작업 사본에서 어떤 삽질을 해도 저장소에는 영향을 바로 끼치지는 않음. 따라서, 저장소는 안전하게 유지된다

VCS 주요 용어 (2/2) Checkout Checkin 저장소에서 작업 사본을 만들어 낸다 Change 를 Repository 에 반영 말하자면 Commit 이다

중앙 집중형 VCS 가 있으면 여러 사람이 작업하기 쉽다! 실수에 대응하기 쉽다! 각자가 일으킨 Change 를 Repository 경유하여 손쉽게 공유할 수 있다 누가 일으킨 Change 때문에 문제가 발생했는지 손쉽게 추적할 수 있다 실수에 대응하기 쉽다! 버그를 만들어냈을 때 언제든지 버그가 발생하기 이전의 소스코드로 돌아갈 수 있다

중앙 집중형 VCS 가 없다면 프로젝트 참여자들은 서로 각자의 컴퓨터에 서 소스 코드를 편집하다가 합쳐야 하는 상 황이 발생했다 E-Mail 을 이용해서 그때 그때 파일을 서로에게 전송하면 서로 서로 “바뀐 부분” 을 자기 소스코드에 반영하자! 결과 ) 헷갈리기 시작한 날부터 모든게 엉망이 됨 아까도 말했지만, 헷갈리면 말짱 황이다. 그냥 VCS 쓰자.

대표적인 VCS 중앙 집중형 VCS 분산형 VCS Subversion (압도적!) Perforce (Google 도 쓰는) CVS (Current Version System) – 오래된! 분산형 VCS Mercurial (동아리 프로젝트!) Git (압도적인 지지율!)

Summary Version Control System 은 여러 파일에 대하여 Version Control 을 쉽게 할 수 있도록 도와주는 프로그램이다. VCS 를 통해 여러 사람이 하나의 프로젝트를 좀더 쉽고 편리하게 작업할 수 있다. VCS 에는 중앙 집중형 VCS 와 분산형 VCS 가 있다. 대표적인 중앙 집중형 VCS 로는 Subversion, Perforce, CVS 등이 있으며 분산형 VCS 로는 Mercurial, Git 등이 있다.