상세 컨텐츠

본문 제목

Raspberry Pi jessie - svn subversion install eclipse

raspberrypi/etc

by ZelKun 2016. 11. 16. 10:00

본문

반응형

전혀 쓰지않고 있었지만 네이버 개발자센터에서 메일이 왔네요

안녕하세요.

   

네이버 개발자센터 운영자입니다. 

   

기존에 안내드렸다시피 오픈프로젝트가 오는 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

   

오픈프로젝트 관련 기타 문의는 아래로 부탁드립니다.

   

dl_openproject@navercorp.com 

추운데 감기 조심하시길 바라며, 오늘도 좋은 하루 보내세요.

   

감사합니다.

네이버 개발자센터 운영자 드림 

출처 : 네이버 메일

   

SVN을 지원해주던 오픈프로젝트가 드디어 종료됨에 따라.. (백업은 이미해놨...)

개인 SVN서버를 만들고 이관하기로 했습니다

   

git은 아직 적응을 못했으니... SVN을 쓰면서 조금씩 적응 해야죠

   

근데 말이 SVN이지...

CVS 처럼 써서 사실 잘모릅니다..

   

trunk, branches, tags 를 쓸일이 없으니...

뭐 버전관리의 이유는 변경사항 추적이니 문제만 없음 되겠죠...

   

  • svn 계정 생성

편의를 위해 svn계정을 생성하고 svn계정을 사용할거에요 pi써도 전혀 상관은 없습니다

pi@rasp2-dev:~ $ sudo useradd svn -d /mnt/svn

pi@rasp2-dev:~ $ sudo passwd svn

useradd 명령은 계정만 만들어주기 때문에 홈디렉토리 등등 직접설정해야 하는 불편함이 있지만

mount한 외장하드를 홈디렉토리로 쓸거라 useradd로 진행하고 passwd도 지정해줍니다

-d 옵션은 홈 디렉토리 설정을 위해 사용했습니다 (현재는 없는 디렉토리입니다, 안만들었으니까요)

addusesr 로 진행해도 전혀 상관없어요 그냥 개인 취향인거에요

   

  • svn mount 디렉토리 생성

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는 보기 편하게 해놨는데 실제로는 유니크한 값이 보일거에요

   

  • mount

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를 진행합니다

   

  • svn을 설치합니다

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 실행 && 종료

svnserve -d -r /mnt/svn/

svn@rasp2-dev:~ $ svnserve -d -r /mnt/svn/

repository 설정까지 하고 하면 되지만 아래있으니 잘안보이니 올려줍니다

종료는 killall svnserve 로 하면 됩니다

   

  • svn 프로젝트 추가

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 권한이 없는거죠

   

설정을 변경합니다

  • svn 설정

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 형식으로 추가하면 됩니다

   

  • SVN 테스트

다시 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을 사용할 수 있습니다

반응형

관련글 더보기

댓글 영역