본문 바로가기
Python

한쿨에 끝내자고 SVN구축 (iptime NAS/Tortoise)

by Defaul+_+ 2020. 1. 21.

SVN Sever 구축(feat. iptime nas)

집에서 여러가지 이유로 코딩하기 싫으면 카페로 나가 노트북으로 코딩을 한다. 문제는 여기서 발생된다. 노트북과 데스크톱의 진행사항이 다르기 때문에 NAS가 없을때에는 매번 USB나 메일로 코드를 옮겨서 버전관리를 진행했다. 이조차도 귀찮던 와중에 집에 그냥 데이터 백업용으로 놀고 있는 NAS가 생각나버렸다. iptime NAS를 활용하여 SVN서버 구축 -> 쉽고 빠르게 코드들을 동기화할 수 있는 환경을 구축해보자.

SVN(Subversion)은 버전 관리 시스템이다. 여러 사람 혹은 여러 기기에서 동일한 프로젝트가 진행될 때, 소스나 관련 파일들을 관리하기 편리하도록 도와주는 도구(프로그램)이다. github과 많이 유사하다고 생각하면 편하다.

SVN Sever 설정

아래처럼 설정한다. censys라던가 shodan이라던가 이런 아이들의 존재로 인하여 기본포트를 사용하는 것을 별로 좋아하지 않아서 변경했다. 기본 포트 사용해도 무방하다.

이제 끝~하면서 접속하면 좋겠지만 몇 가지 더 설정해줘야한다. 새 Repository를 통해서 새로 만든 각각의 Repository별 설정(파일 내용 수정)를 해줘야한다. 설정 편의를 위해서 잠시 SVN폴더를 윈도우 파일공유 설정한다.

*Repository: Repository는 저장소라고 생각하면 된다. 각종 파일과 폴더들이 저장되는 공간을 의미한다.

윈도우 파일공유설정을 하지 않고 탐색기모드 > Repository 경로 > conf에서 passwdsvnserve.conf파일을 다운받아서 수정하여 업로드를 진행해도 된다.

윈도우에서 공유된 폴더로 접속한다. 실행창(단축키: 윈도우키 + r)에 \\[nas주소]\[repository root이름] 입력하면 접속할 수 있다. nas가 동일한 네트워크에 있다면 내부 주소를 써도 되고, 외부 주소를 써도 된다.

접속하면 3가지 파일을 볼 수 있는데 각 파일들은 아래 표와 같은 설정 정보를 포함하고 있다.

conf파일 Desc
passwd repository 계정설정
svnserve.conf repository설정
authz 계정별 권한 설정(혼자쓰면 설정 안해도 됨)

passwd파일을 텍스트 편집기로 열어 사용 할 계정정보를 ID=PW 형식으로 입력하고 저장

svnserve.conf 파일을 텍스트 편집기로 열어 편집하고 저장 뭐 여러 줄에 걸쳐 설명들과 설정이 있지만, 아래 처럼 설정 주석을 해제 하거나 변경한다.

# 비인증 계정 접근권한 설정 / none: 권한 없음 read: 읽기권한 write: 쓰기권한
anon-access = none
# 인증 계정 접근권한 설정 / none: 권한 없음 read: 읽기권한 write: 쓰기권한
auth-access = write
# passwd파일 내용을 계정으로 사용
password-db = passwd
# 레토지토리 설명
realm = Pycharm Project

저장하고 다시 관리툴모드 > 서비스관리 > SVN서버 설정에서 확인해보면 realm이 반영되어 있는 것을 확인할 수 있다.

SVN Client 설정

클라이언트 프로그램으로는 여러 종류가 있다.

사실 2개 밖에 모름.. 근데 2개 이상이면 여러개니까...

아직까지는 TortoiseSVN이 가장 편하기 때문에 TortoiseSVN를 사용한다.

TortoiseSVN 다운 및 설치

https://tortoisesvn.net/downloads.html 에서 클라이언트를 다운로드 할 수 있다. 스크롤을 조금 내려보면 한국어팩도 다운로드할 수 있으니 필요하면 다운로드를 진행한다.

설치파일이 다운로드 완료되면 실행한다. '아? 영어네?!' 하면서 다음다음 클릭 신공을 발휘하지 말고 command line client tools 다운 체크하고 설치를 완료한다.

SVN 서버연결

repository와 연결을 원하는 폴더를 오른쪽 클릭하면 아래 그림과 같이 컨텍스트 메뉴를 볼 수 있다. 서버 저장소와 폴더를 연동(연결)하기 위해서 SVN 체크 아웃을 누른다.

Checkout(체크아웃): 버전관리를 위해서 서버의 repository(저장소)와 연동하는 행위로 그 과정에서 파일들을 다운로드한다.

체크 아웃을 실행하면 저장소URL과 어디에 익스포트할 건지를 묻는 창이 하나 생성된다. 저장소URL은 svn://[nas주소]:[SVN포트]/[repository명] 형식으로 이루어진다. SVN포트를 기본포트로 사용했으면 생략가능하며, repository명에 잡다한 HDD1이나 repository root명은 생략한다.

저장소URL이 정확하다면 Server설정에서 저장한 계정정보를 묻는다. 계정정보를 입력하고 확인을 누르면 저장소와 연동을 시작한다.(기억안나면 다시 passwd파일을 확인하고 오자) 그 과정에서 repository에 파일이 존재한다면 repository와 동일하도록 파일 다운로드를 진행한다.

정상적으로 checkout이 완료되면 폴더에 "check"표시가 생기고 컨텍스트 메뉴에 SVN 업데이트SVN 커밋이 생성된다.

commit(커밋): 커밋은 Git에서와 동일한 의미를 지닌다. 연동(동기화)된 폴더 하위에 변경된 파일을 저장소(repository)로 메세지(수정사항 메모)와 함께 업로드하는 것을 말한다. Git에서는 commit 후 push명령을 추가적으로 수행해야 하지만 SVN에서는 그럴 필요가 없다.

update(업데이트): 커밋과 반대되는 의미로 저장소(repository)에서 변경된 파일을 연동(동기화/다운로드)하는 명령이다. Git에서는 pull과 동일하다고 볼 수 있다.

Pycharm SVN연동

아니 왜 한쿨에 한다고 해놓고 pycharm에 적용하는 부분을 빼먹었지.. 늦었지만 연결하여 다시 작성한다. 위에서 TortoiseSVN 설치 당시 command line client tools을 체크하여 설치한 이유는 Pycharm과 연동하기 위해서이다. Pycharm > File > Settings에서 pycharm에서 사용할 SVN command line client tools를 설정할 수 있다.

다시 Settings > Version Control > Subversion에서 아래 그림과 같이 설치한 command line client tools 경로를 입력해준다.

설정한 내용을 OK를 눌러 저장하고 아래 그림과 같이 Repository Location을 작성한다.

주소를 입력하면 pycharm화면 아래 주소가 추가된 것을 볼 수 있고 오른쪽클릭해서 Checkout을 뙇해주면 어디에 체크아웃 할래?라고 묻는다. Destination에 동기화할 폴더 경로를 설정해주고 OK하면 로그인을 하라고 묻고 로그인까지 싹해주면 끝이 난다.

P.S.

근데요.. 여기 있는 모든 내용은 컴퓨터와 NAS가 동일한 네트워크에 존재할 때 정상적으로 동작해요. 즉, NAS와 컴퓨터가 동일 네트워크에 있지 않다면 추가적인 설정과정이 필요해요. 외부에서 접속하기 위한 설정은 여러 방법이 있고, NAS가 외부네트워크에 오픈되는 것은 위험할 수 있기 때문에 여러분의 몫으로 남겨둘께요. 읽어주셔서 감사합니다.

'Python' 카테고리의 다른 글

티스토리에서 마크다운 자동 이미지 치환  (4) 2020.02.17

댓글