SVN
1. 기본 개념
- 원격 저장소(Remote Repository)와 Local PC 구분 필요
![](https://velog.velcdn.com/images/ynjch97/post/d0b7f037-f510-4b21-838d-325ca3be1603/image.png)
2. Branch 생성
- 프로젝트 폴더 우클릭 > TortoiseSVN > Branch/tag
![](https://velog.velcdn.com/images/ynjch97/post/18dab499-4e3a-4d3f-8445-0aa5d6e91c87/image.png)
- To path 우측
...
클릭 > https://192.168.1.000/svn/TestProj
뒤에 Branch명을 붙이고 OK
![](https://velog.velcdn.com/images/ynjch97/post/36419da6-2ab6-4d57-bb1e-bd78df59d002/image.png)
- 최종 경로 :
https://192.168.1.000/svn/TestProj/ynjch
- 나머지 설정은 그대로 (
Specific revision in repository
체크) 두고 OK
- 프로젝트 폴더 우클릭 > TortoiseSVN > Update
- master에
ynjch
Branch가 생성되면서 하위 폴더가 생성됨
C:\Users\YNJCH\YNJCH\TestProj
> ynjch
폴더 생성
3. VS Code 에서 SVN 사용
- SVN 확장 프로그램 설치
- 좌측
Source Control
아이콘 클릭
3-1. Source Control 탭
- 아래 내용은 Commit 과 무관함
Changes
> Local PC 에서 수정된 파일
Unversioned
> 버전 관리에서 제외되는 파일
Remote Changes
> 원격 저장소(Remote Repository) 에서 수정된 파일
![](https://velog.velcdn.com/images/ynjch97/post/3b07362e-7cf1-4388-aacd-ce6e7ae7ad15/image.png)
3-1-1. 관련 참고 사항
Changes
파일은 Commit 하기 전까지는 원격 저장소(Remote Repository)에 반영되지 않음
Unversioned
파일은 Add 하기 전까지는 버전 관리에서 제외되며, 아무리 수정해도 원격 저장소(Remote Repository)에 반영되지 않음
Changes
, Remote Changes
에 모두 포함되는 파일은 Local PC 와 원격 저장소에서 모두 수정이 일어난 파일이므로 Conflict 발생 가능성 有
4. Update
- 원격 저장소(Remote Repository)에 새롭게 반영된 Commit 건을 가져오는 것을 의미
- Local PC 에 아직 반영되지 않은 Commit 건이 해당
4-1. Source Control 탭
- 우측
···
아이콘 클릭 > Update
![](https://velog.velcdn.com/images/ynjch97/post/15cfb0b9-6565-4da9-a72b-69a6bcafa56b/image.png)
5. Commit
- Local PC 에서 수정한 내용을 원격 저장소(Remote Repository)에 반영
5-1. Source Control 탭
Changes
> Commit 할 파일 선택 후 우클릭 > Commit Selected
![](https://velog.velcdn.com/images/ynjch97/post/acf36c7c-4e11-4578-b98e-e944e5c74115/image.png)
6. Conflict 해결
- 상황 가정 history
- Branch
ynjch
, tester
는 모두 가장 최신의 소스를 Update
- Branch
ynjch
에서 text.txt
파일 Commit
text.txt
파일을 Commit 받지 않은 Branch tester
에서 text.txt
파일을 수정
6-1. Branch ynjch
text.txt
파일을 Commit
![](https://velog.velcdn.com/images/ynjch97/post/3448806e-4498-4ab5-ab04-890ea0317a0f/image.png)
최신 update 소스
ynjch 에서 수정 후 commit 수행
6-2. Branch tester
- Update 로 원격 저장소(Remote Repository) 변경 사항을 반영하지 않은 채
text.txt
파일을 수정
![](https://velog.velcdn.com/images/ynjch97/post/7d1c3e88-bd7b-4330-9fec-d3768129b2d5/image.png)
최신 update 소스
ynjch 소스를 update 받지 않고 수정 진행
6-2-1. Source Control 탭
Changes
: text.txt
파일을 수정하여 생김
Remote Changes
: 원격 저장소(Remote Repository) 변경 사항이 있어서 생김
Changes
, Remote Changes
에 모두 포함
- Local PC 와 원격 저장소에서 모두 수정이 일어난 파일임을 의미
- 즉, Merge 를 진행해야 함
6-2-2. Merge
- Update 후 Merge 해도 되지만, 아래와 같은 수정 화면이 나타나기 때문에 Merge 부터 진행
![](https://velog.velcdn.com/images/ynjch97/post/f34269cb-ef7a-42dd-838d-5d7997a3d841/image.png)
Changes
> text.txt
파일을 선택 > text.txt (HEAD)
열림
- 적합한 소스를 우측으로 반영
- 위치가 바뀌어 나타나도, 어차피 원격 저장소(Remote Repository) 소스는
Cannot edit in read-only editor
문구가 뜨면서 수정 불가함
- 저장
![](https://velog.velcdn.com/images/ynjch97/post/cafa6fc6-896d-4f44-bc6a-c7981173d7d0/image.png)
![](https://velog.velcdn.com/images/ynjch97/post/e8398456-91d0-4a0f-92f8-304b29a64090/image.png)
최신 update 소스
ynjch 에서 수정 후 commit 수행
ynjch 소스를 update 받지 않고 수정 진행
6-2-3. Update 및 Commit
- Source Control 탭 > 우측
···
아이콘 클릭 > Update
- Conflicts 발생 확인
![](https://velog.velcdn.com/images/ynjch97/post/538e7d33-b41f-4350-8cb2-c3a7dda272cd/image.png)
text.txt
파일 우클릭 > Resolve conflicts for selected
선택
mine-full
선택하여 6-2-2. 에서 수정한 내용대로 반영
base
: Local PC 의 가장 최신 Update 버전으로 되돌아감
Changes
> Commit 할 파일 선택 후 우클릭 > Commit Selected