전혀 쓰지않고 있었지만 네이버 개발자센터에서 메일이 왔네요
안녕하세요.
네이버 개발자센터 운영자입니다.
기존에 안내드렸다시피 오픈프로젝트가 오는 2016년 12월 26일에 종료됩니다.
이에 오픈프로젝트의 이슈 및 게시판 백업 모듈을 아래와 같이 배포합니다.
공식 배포: https://github.com/naver/devcenter-open-project-migration
해당 모듈은 2가지 기능을 제공합니다.
1. 네이버 오픈프로젝트 백업: 로컬PC에 개인의 오픈 프로젝트 데이터 (이슈/게시판/첨부 파일 포함)를 백업 2. Github로 마이그레이션: 로컬PC에 백업한 데이터를 GitHub의 프로젝트로 마이그레이션
설치 및 실행은 Windows, Mac, Linux OS 모두를 지원하며 자세한 사용 방법은 아래 Readme를 참고하시길 바랍니다.
https://github.com/naver/devcenter-open-project-migration
해당 모듈은 Python 으로 만들어져 있으며, 모듈에 이슈가 있으면 아래에 올려주시면 감사하겠습니다.
https://github.com/naver/devcenter-open-project-migration/issues
오픈프로젝트 관련 기타 문의는 아래로 부탁드립니다.
추운데 감기 조심하시길 바라며, 오늘도 좋은 하루 보내세요.
감사합니다. 네이버 개발자센터 운영자 드림 |
출처 : 네이버 메일
SVN을 지원해주던 오픈프로젝트가 드디어 종료됨에 따라.. (백업은 이미해놨...)
개인 SVN서버를 만들고 이관하기로 했습니다
git은 아직 적응을 못했으니... SVN을 쓰면서 조금씩 적응 해야죠
근데 말이 SVN이지...
CVS 처럼 써서 사실 잘모릅니다..
trunk, branches, tags 를 쓸일이 없으니...
뭐 버전관리의 이유는 변경사항 추적이니 문제만 없음 되겠죠...
편의를 위해 svn계정을 생성하고 svn계정을 사용할거에요 pi써도 전혀 상관은 없습니다
pi@rasp2-dev:~ $ sudo useradd svn -d /mnt/svn pi@rasp2-dev:~ $ sudo passwd svn |
useradd 명령은 계정만 만들어주기 때문에 홈디렉토리 등등 직접설정해야 하는 불편함이 있지만
mount한 외장하드를 홈디렉토리로 쓸거라 useradd로 진행하고 passwd도 지정해줍니다
-d 옵션은 홈 디렉토리 설정을 위해 사용했습니다 (현재는 없는 디렉토리입니다, 안만들었으니까요)
addusesr 로 진행해도 전혀 상관없어요 그냥 개인 취향인거에요
mount와 svn 계정 겸용으로 사용할 디렉토리입니다
sudo mkdir /mnt/svn
sudo chown -R /mnt/svn
pi@rasp2-dev:~ $ sudo mkdir /mnt/svn pi@rasp2-dev:~ $ ls -al /mnt total 12 drwxr-xr-x 4 root root 4096 Nov 13 12:10 . drwxr-xr-x 21 root root 4096 Feb 10 2016 .. drwxr-xr-x 2 root root 4096 Nov 13 12:10 svn drwxrwxr-x 1 pi root 10 Nov 13 11:46 TimeMachine pi@rasp2-dev:~ $ sudo chown svn /mnt/svn/ pi@rasp2-dev:~ $ ls -al /mnt total 12 drwxr-xr-x 4 root root 4096 Nov 13 12:10 . drwxr-xr-x 21 root root 4096 Feb 10 2016 .. drwxr-xr-x 2 svn root 4096 Nov 13 12:10 svn drwxrwxr-x 1 pi root 10 Nov 13 11:46 TimeMachine |
디렉토리 생성과 소유권을 svn을 넘겼습니다 그룹도 넘길까했는데 그냥 두었습니다
TimeMachine 외장디스크를 같이 쓸거니 파티션을 나눠줬습니다 (맥에서 진행했습니다)
TimeMachine 과 git, svn 이렇게 3개의 파티션을 가지겠네요
blkid 로 외장하드 정보를 확인합니다
pi@rasp2-dev:~ $ blkid /dev/sda2: UUID="f2472f4b-3e8c" LABEL="hdd" TYPE="hfsplus" PARTUUID="test-timemachine" /dev/sda3: UUID="6aa304d0-7c72" LABEL="GIT" TYPE="hfsplus" PARTUUID="test-git" /dev/sda4: UUID="1a7f4b54-7044" LABEL="SVN" TYPE="hfsplus" PARTUUID="test-svn" |
UUID, PARTUUID는 보기 편하게 해놨는데 실제로는 유니크한 값이 보일거에요
sudo mount -t hfsplus -o force,rw,users,auto /dev/sda4 /mnt/svn
파일시스템 포멧이 hfsplus 로 되어 있어 하드 자체를 읽기만 되게 mount되서...
강제로 읽고 쓰는 옵션이 추가되있습니다
mkdir: cannot create directory 'test': Read-only file system |
그냥 mount만 하면 외장하드자체를 Read-only 만 가능합니다...
맥용 파일시스템을 사용하려면 (sudo apt-get install hfsplus hfsprogs hfsutils) 을 추가 설치해야합니다
다른 포멧은 mount만 해도 될거에요...
pi@rasp2-dev:~ $ sudo mount -t hfsplus -o force,rw,users,auto /dev/sda4 /mnt/svn/ pi@rasp2-dev:~ $ ls -al /mnt total 8 drwxr-xr-x 4 root root 4096 Nov 13 12:10 . drwxr-xr-x 21 root root 4096 Feb 10 2016 .. drwxrwxr-x 1 root root 8 Nov 12 15:05 svn drwxrwxr-x 1 pi root 10 Nov 13 11:46 TimeMachine pi@rasp2-dev:~ $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 15G 5.3G 8.5G 39% / devtmpfs 459M 0 459M 0% /dev tmpfs 463M 4.0K 463M 1% /dev/shm tmpfs 463M 6.4M 457M 2% /run tmpfs 5.0M 8.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p1 60M 25M 36M 41% /boot tmpfs 93M 0 93M 0% /run/user/1000 /dev/sda2 745G 176G 570G 24% /mnt/TimeMachine /dev/sda4 94G 204M 93G 1% /mnt/svn |
mount 를 하고 보니 svn디렉토리가 root 소유로 되버리네요
역시나 svn계정으로 잠깐 테스트 하니 권한이 없네요
pi@rasp2-dev:~ $ sudo su - svn svn@rasp2-dev:~$ pwd /mnt/svn svn@rasp2-dev:~$ ls -al total 8200 drwxrwxr-x 1 root root 8 Nov 12 15:05 . drwxr-xr-x 4 root root 4096 Nov 13 12:10 .. drwx------ 1 99 99 5 Nov 12 15:05 .fseventsd dr-xr-xr-t 1 root root 2 Nov 12 15:04 .HFS+ Private Directory Data? ---------- 1 root root 8388608 Nov 12 15:05 .journal ---------- 1 root root 4096 Nov 12 15:04 .journal_info_block drwx------ 1 99 99 5 Nov 12 15:05 .Spotlight-V100 svn@rasp2-dev:~$ mkdir test touch: cannot touch 'test': Permission denied |
진행하다 에러나면 귀찮으니 다시 소유권을 svn으로 넘겨버립니다
sudo chown -R svn /mnt/svn/
pi@rasp2-dev:~ $ sudo chown -R svn /mnt/svn/ pi@rasp2-dev:~ $ ls -al /mnt total 8 drwxr-xr-x 4 root root 4096 Nov 13 12:10 . drwxr-xr-x 21 root root 4096 Feb 10 2016 .. drwxrwxr-x 1 svn root 8 Nov 12 15:05 svn drwxrwxr-x 1 pi root 10 Nov 13 11:46 TimeMachine pi@rasp2-dev:~ $ ls -al /mnt/svn total 8200 drwxrwxr-x 1 svn root 8 Nov 12 15:05 . drwxr-xr-x 4 root root 4096 Nov 13 12:10 .. drwx------ 1 svn 99 5 Nov 12 15:05 .fseventsd dr-xr-xr-t 1 svn root 2 Nov 12 15:04 .HFS+ Private Directory Data? ---------- 1 svn root 8388608 Nov 12 15:05 .journal ---------- 1 svn root 4096 Nov 12 15:04 .journal_info_block drwx------ 1 svn 99 5 Nov 12 15:05 .Spotlight-V100 |
소유권이 svn으로 넘어갔네요
이제 sudo apt-get update && sudo apt-get upgrade를 진행합니다
sudo apt-get install subversion
pi@rasp2-dev:~ $ sudo apt-get install subversion Reading package lists... Done Building dependency tree Reading state information... Done libapache2-svn is already the newest version. subversion is already the newest version. The following packages were automatically installed and are no longer required: cracklib-runtime libcrack2 libpam-cracklib rc Use 'apt-get autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 245 not upgraded. |
이미 설치해서 설치할게 없는...
pi@rasp2-dev:~ $ svnadmin --version svnadmin, version 1.8.10 (r1615264) compiled Apr 29 2016, 16:45:06 on arm-unknown-linux-gnueabihf
Copyright (C) 2014 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
* fs_fs : Module for working with a plain file (FSFS) repository. * fs_base : Module for working with a Berkeley DB repository. |
버전을 보니 1.8.x 네요
설치는 끝났으니 설정을 해야죠
svn 계정으로 변경합니다
su - svn
svnserve -d -r /mnt/svn/
svn@rasp2-dev:~ $ svnserve -d -r /mnt/svn/ |
repository 설정까지 다 하고 하면 되지만 아래있으니 잘안보이니 올려줍니다
종료는 killall svnserve 로 하면 됩니다
svnadmin create --fs-type fsfs /mnt/svn
svn@rasp2-dev:~ $ svnadmin create --fs-type fsfs /mnt/svn svnadmin: E200011: Repository creation failed svnadmin: E200011: Could not create top-level directory svnadmin: E200011: '/mnt/svn' exists and is non-empty svn@rasp2-dev:~ $ mkdir repos svn@rasp2-dev:~ $ svnadmin create --fs-type fsfs /mnt/svn/repos/ |
마음같아서는 /mnt/svn/ 을 사용하고 싶은데 top-level directory라고 거절당하네요
그리고 잡다한 파일들도 있어서 그런가보네요 망할..
repos 폴더 하나만들고 지정해줬습니다
svn@rasp2-dev:~/repos $ ls -al total 8 drwxr-xr-x 1 svn svn 8 Nov 13 15:40 . drwxrwxr-x 1 svn root 12 Nov 13 15:40 .. drwxr-xr-x 1 svn svn 6 Nov 13 15:40 conf drwxr-sr-x 1 svn svn 15 Nov 13 15:40 db -r--r--r-- 1 svn svn 2 Nov 13 15:40 format drwxr-xr-x 1 svn svn 11 Nov 13 15:40 hooks drwxr-xr-x 1 svn svn 4 Nov 13 15:40 locks -rw-r--r-- 1 svn svn 246 Nov 13 15:40 README.txt svn@rasp2-dev:~/repos $ ls -al conf/ total 16 drwxr-xr-x 1 svn svn 6 Nov 13 15:40 . drwxr-xr-x 1 svn svn 8 Nov 13 15:40 .. -rw-r--r-- 1 svn svn 1080 Nov 13 15:40 authz -rw-r--r-- 1 svn svn 885 Nov 13 15:40 hooks-env.tmpl -rw-r--r-- 1 svn svn 309 Nov 13 15:40 passwd -rw-r--r-- 1 svn svn 4002 Nov 13 15:40 svnserve.conf svn@rasp2-dev:~/repos $ ls -al db total 32 drwxr-sr-x 1 svn svn 15 Nov 13 15:40 . drwxr-xr-x 1 svn svn 8 Nov 13 15:40 .. -rw-r--r-- 1 svn svn 2 Nov 13 15:40 current -r--r--r-- 1 svn svn 22 Nov 13 15:40 format -rw-r--r-- 1 svn svn 6838 Nov 13 15:40 fsfs.conf -rw-r--r-- 1 svn svn 5 Nov 13 15:40 fs-type -rw-r--r-- 1 svn svn 2 Nov 13 15:40 min-unpacked-rev drwxr-xr-x 1 svn svn 3 Nov 13 15:40 revprops drwxr-xr-x 1 svn svn 3 Nov 13 15:40 revs drwxr-xr-x 1 svn svn 2 Nov 13 15:40 transactions -rw-r--r-- 1 svn svn 2 Nov 13 15:40 txn-current -rw-r--r-- 1 svn svn 0 Nov 13 15:40 txn-current-lock drwxr-xr-x 1 svn svn 2 Nov 13 15:40 txn-protorevs -rw-r--r-- 1 svn svn 37 Nov 13 15:40 uuid -rw-r--r-- 1 svn svn 0 Nov 13 15:40 write-lock svn@rasp2-dev:~/repos $ ls -al hooks/ total 36 drwxr-xr-x 1 svn svn 11 Nov 13 15:40 . drwxr-xr-x 1 svn svn 8 Nov 13 15:40 .. -rwxr-xr-x 1 svn svn 2107 Nov 13 15:40 post-commit.tmpl -rwxr-xr-x 1 svn svn 1663 Nov 13 15:40 post-lock.tmpl -rwxr-xr-x 1 svn svn 2344 Nov 13 15:40 post-revprop-change.tmpl -rwxr-xr-x 1 svn svn 1592 Nov 13 15:40 post-unlock.tmpl -rwxr-xr-x 1 svn svn 3510 Nov 13 15:40 pre-commit.tmpl -rwxr-xr-x 1 svn svn 2434 Nov 13 15:40 pre-lock.tmpl -rwxr-xr-x 1 svn svn 2818 Nov 13 15:40 pre-revprop-change.tmpl -rwxr-xr-x 1 svn svn 2122 Nov 13 15:40 pre-unlock.tmpl -rwxr-xr-x 1 svn svn 3235 Nov 13 15:40 start-commit.tmpl svn@rasp2-dev:~/repos $ ls -al locks/ total 8 drwxr-xr-x 1 svn svn 4 Nov 13 15:40 . drwxr-xr-x 1 svn svn 8 Nov 13 15:40 .. -rw-r--r-- 1 svn svn 139 Nov 13 15:40 db.lock -rw-r--r-- 1 svn svn 139 Nov 13 15:40 db-logs.lock |
많이도 생겼네..
일단 eclipse 를 통해 붙어봐야겠네요
http를 통해 접속하는게 아니니 svn으로 연결합니다
테스트용 프로젝트를 하나 선택해서 Share Project
위에 마스킹한건 네이버 svn.. 없어질거지만
이제 Finish를 누르면
뭔가 붙긴하지만 결국 인증에러가 뜨네요
된긴하는듯 합니다 write 권한이 없는거죠
설정을 변경합니다
svnserve.conf 파일을 수정합니다
svn@rasp2-dev:~ $ vim /mnt/svn/repos/conf/svnserve.conf |
설정을 보니 전부 주석처리 되있네요
1 ### This file controls the configuration of the svnserve daemon, if you 2 ### use it to allow access to this repository. (If you only allow 3 ### access through http: and/or file: URLs, then this file is 4 ### irrelevant.) 5 6 ### Visit http://subversion.apache.org/ for more information. 7 8 [general] 9 ### The anon-access and auth-access options control access to the 10 ### repository for unauthenticated (a.k.a. anonymous) users and 11 ### authenticated users, respectively. 12 ### Valid values are "write", "read", and "none". 13 ### Setting the value to "none" prohibits both reading and writing; 14 ### "read" allows read-only access, and "write" allows complete 15 ### read/write access to the repository. 16 ### The sample settings below are the defaults and specify that anonymous 17 ### users have read-only access to the repository, while authenticated 18 ### users have read and write access to the repository. 19 # anon-access = read 20 # auth-access = write 21 anon-access = none 22 auth-access = write 23 ### The password-db option controls the location of the password 24 ### database file. Unless you specify a path starting with a /, 25 ### the file's location is relative to the directory containing 26 ### this configuration file. 27 ### If SASL is enabled (see below), this file will NOT be used. 28 ### Uncomment the line below to use the default password file. 29 # password-db = passwd 30 password-db = passwd 31 ### The authz-db option controls the location of the authorization 32 ### rules for path-based access control. Unless you specify a path 33 ### starting with a /, the file's location is relative to the 34 ### directory containing this file. The specified path may be a 35 ### repository relative URL (^/) or an absolute file:// URL to a text 36 ### file in a Subversion repository. If you don't specify an authz-db, 37 ### no path-based access control is done. 38 ### Uncomment the line below to use the default authorization file. 39 # authz-db = authz 40 ### The groups-db option controls the location of the groups file. 41 ### Unless you specify a path starting with a /, the file's location is 42 ### relative to the directory containing this file. The specified path 43 ### may be a repository relative URL (^/) or an absolute file:// URL to a 44 ### text file in a Subversion repository. 45 # groups-db = groups 46 ### This option specifies the authentication realm of the repository. 47 ### If two repositories have the same authentication realm, they should 48 ### have the same password database, and vice versa. The default realm 49 ### is repository's uuid. 50 # realm = My First Repository 51 realm = SVN Repository 52 ### The force-username-case option causes svnserve to case-normalize 53 ### usernames before comparing them against the authorization rules in the 54 ### authz-db file configured above. Valid values are "upper" (to upper- 55 ### case the usernames), "lower" (to lowercase the usernames), and 56 ### "none" (to compare usernames as-is without case conversion, which 57 ### is the default behavior). 58 # force-username-case = none 59 ### The hooks-env options specifies a path to the hook script environment 60 ### configuration file. This option overrides the per-repository default 61 ### and can be used to configure the hook script environment for multiple 62 ### repositories in a single file, if an absolute path is specified. 63 ### Unless you specify an absolute path, the file's location is relative 64 ### to the directory containing this file. 65 # hooks-env = hooks-env 66 67 [sasl] 68 ### This option specifies whether you want to use the Cyrus SASL 69 ### library for authentication. Default is false. 70 ### This section will be ignored if svnserve is not built with Cyrus 71 ### SASL support; to check, run 'svnserve --version' and look for a line 72 ### reading 'Cyrus SASL authentication is available.' 73 # use-sasl = true 74 ### These options specify the desired strength of the security layer 75 ### that you want SASL to provide. 0 means no encryption, 1 means 76 ### integrity-checking only, values larger than 1 are correlated 77 ### to the effective key length for encryption (e.g. 128 means 128-bit 78 ### encryption). The values below are the defaults. 79 # min-encryption = 0 1,1 Top |
anon-access = none #익명 엑세스 불가
auth-access = write #write 권한
password-db = passwd #계정관리
realm = SVN Repository #코멘트
이렇게 수정해줬습니다 (첫글자 공백제거)
그리고 passwd 파일을 수정합니다
svn@rasp2-dev:~ $ vim /mnt/svn/repos/conf/passwd |
접근허가할 계정을 추가합니다
1 ### This file is an example password file for svnserve. 2 ### Its format is similar to that of svnserve.conf. As shown in the 3 ### example below it contains one section labelled [users]. 4 ### The name and password for each user follow, one account per line. 5 6 [users] 7 # harry = harryssecret 8 # sally = sallyssecret 9 svn = passwd ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 1,1 All |
user = passwd 형식으로 추가하면 됩니다
다시 eclipse 에서 commit을 시도해보니
인증정보를 입력하도록 요청하네요
id / pw를 입력하니 좀전에는 권한에러가 발생했는데
무리없이 commit 되네요
오.. 성공이다
trunk, branches, tags 추가는
svn mkdir svn://rasp2-dev/trunk
svn mkdir svn://rasp2-dev/branches
svn mkdir svn://rasp2-dev/tags
근데 안쓰는(?) 기능 이라 잘 모르겠네요
이제 SVN을 사용할 수 있습니다
댓글 영역