버전관리 시스템은 개발에 필수적이다.
버전관리 시스템을 도입하지 않으면 실서버에 파일을 수정한다.
다른 사람이 그 파일을 또 수정한다.
그러다보면 전에 다른 유저가 작업한 내용이 사라지고 그런다.
왜냐하면 로컬에 있는 파일을 업로드 했기 때문이다.
이 사람이 조심한다면 다운로드를 먼저 받고, 그 기반으로 작업해서 업로드 하겠지만,
다른 사람의 결과물을 덮어쓸 수 밖에 없었다.
버전관리시스템이 관리를 하지 않으면 불안하다.
역사는 유구하다.
유저C가 파일을 수정하고 커밋.
업데이트를 하게 되면 다운이 됨.
같은 부분에 대한 수정을 업로드하는 경우가 발생할 수 있음.
버전 관리 시스템이 병합할 수 있는 내용을 알아서 자동으로 함
정교하게 패턴을 분석함.
기계가 판단하기 어려우면, 마지막한테 커밋한 사람한테 책임을 전가함.
알아서 판단해서 수정해야 함.
상상력이 이제 필요하다.
한대의 컴퓨터에서 여러 컴퓨터가 작업을 한 것처럼 할 것이다.
디렉토리 2개를 만들 것이다.
저장소에 있는 파일들을 체크아웃해서 동기화를 시켜놓고 각각의 디렉토리에 사람의 이름을 붙일 것이다.
이름들이 각자의 컴퓨터라고 생각하면 된다.
체크아웃 할 것은 영희라는 컴퓨터.
소스코드가 들어감.
철수도 들어감.
영희에 새로운 파일을 하나 만들어볼 것이다.
index.html
내용을 간단히 적는다.
연관된 기능을 추천해준다.
저장소에 파일이 업로드 된다.
영희는 index.html 파일을 저장소에 저장함.
철수는 작업을 하기 전에 업데이트하고, 커밋을 하기 직전에 업데이트를 해야 한다.
작업을 하기 전에 SVN Update를 해야 한다.
영희가 작업한 파일이 철수의 컴퓨터에 저장됨.
영희와 철수는 둘다 파일을 가지고 있는 상태임.
문제가 될 수 있는 상황을 연출해보겠다.
영희는 편집을 시작했다.
철수도 해당 파일의 수정을 시작했다.
중요한 건 수정하고 있고, 같은 파일을 수정하는 상황이다.
둘다 수정됐다는 내용이 나온다.
철수가 영희보다 먼저 commit
바뀐 내용을 확인하는 습관을 가져야 함.
저장소.
영희의 컴퓨터로 돌아가보자.
commit을 하기 전에 update를 해야 한다.
action에 merged가 되었다고 뜬다.
합치다 병합하다 라는 뜻이다.
영희의 파일과, 이전에 커밋해서 서버에 보관된 철수의 파일이 같은 파일이므로 병합된다.
영희의 <h1>과 철수의 <head>의 안 부분이 합쳐졌다.
영희는 신경쓰지않고 merge가 성공했으면 누가 수정했나보다 생각하고 수정을 다시 진행하면 됨.
물론 확인하는 게 좋은 습관임.
이건 totoise라고 하는 프로그램임.
차이점 비교하는 디프 툴.
working copy가 나의 컴퓨터
Revision에서 상대방이 커밋했던 내용을 볼 수 있다.
강조된 부분이 병합됨.
영희도 업데이트 함.
중간에서 질서를 유지해줌.
문제가 심각한 상황을 설명해주겠다.
이번에는 영희가 파일을 먼저 수정했다.
영희가 한 작업.
철수도 같은 시간에 작업.
프로젝트가 크면 자주 있는 경우.
철수는 업데이트를 해야 한다.
아까 영희는 index.html을 h3로 바꿨었다.
철수는 h4로 수정.
이 문제를 버전관리 시스템이 어떻게 처리하는지 확인.
커밋을 먼저 하는 것이 장땡.
나중에 커밋하는 사람이 처리해야 함.
영희는 업데이트했음.
철수가 늦게 커밋을 신청했기 때문에 커밋 안되고 충돌.
소스가 충돌했다.
충돌되는 경우에는 보통 병합하지만, 같은 내용은 사람에게 위임함.
철수가 theirs를 쓰면 철수의 내용이 버려진다.
저장소에 저장되어 있는 것이 theirs이다.
저장소에 있는 것이 올바르다.
mine은 내것이 올바르다.
아니면 둘 사이에서 절충안을 낸다.
3웨이 머지.
병합한다는 뜻.
theirs는 저장소에 저장된 것.
쪽났음.
Use this text block을 누르면 h3부분을 쓴 부분을 쓴다.
whole파일은 저장소에 있는 파일을 통째로 쓰는 것이다.
from mine before theirs를 누르면
내 것을 먼저 가져다 쓴다.
before mine을 쓰면 내 것이 밑으로 간다.
여러가지 옵션을 상황에 따라 쓰면 된다.
잘 수정했다는 것을 버전관리에 알려줘야 함.
r13에서 시작됨
mine
가장 최신 버전이 r14
해당 파일만 남게 됨.
충돌했을 때에는 resolve 등을 해서 해결함.
그냥 commit하면 오류 발생함.
메타버스란? (0) | 2022.07.12 |
---|---|
알고리즘 & 자료구조 - 큐(Queues), 스택(Stacks) (0) | 2022.07.07 |
[CS지식] www.naver.com을 주소창에 치면? (0) | 2022.07.06 |
데브옵스란?(DevOps) (0) | 2022.07.06 |
쿠버네티스란(Kubernetes)? (0) | 2022.07.06 |
댓글 영역