기존 여러개로 나뉜 저장소를 dump한뒤 하나의 저장소로 load 하기위한 방법입니다.

핵심은 load 옵션중에 --parent-dir 을 사용하는 것입니다.


svnadmin dump d:\svn\oldRepos_aaa > d:\aaa_dump.svn
svnadmin dump d:\svn\oldRepos_bbb > d:\bbb_dump.svn


svnadmin create newRepos

svn mkdir  http://localhost/svn/newRepos/aaa

svn mkdir  http://localhost/svn/newRepos/bbb


svnadmin load newRepos --parent-dir aaa < d:\aaa_dump.svn
svnadmin load newRepos --parent-dir bbb < d:\bbb_dump.svn



이렇게 되면 두개의 Revision 정보가 하나로 통합됩니다.


만약 aaa 밑에 bbb를 넣고 싶다면? 직접해봐야 하겠으나 각 aaa, bbb 단위로 trunk가 생기기 때문에 Revision충돌이 날것 같다.



참고자료 : http://stackoverflow.com/questions/375869/subversion-merging-repositories


P.S. 저장소 복원시 지원되지 않는 문자열 관련 오류가 난다면 다음의 옵션을 추가해서 복원하도록 하자.


--bypass-prop-validation


예) svnadmin load newRepos --parent-dir aaa  --bypass-prop-validation < d:\aaa_dump.svn



계속 window에만 설치를 하다가 CentOS에 설치해봤습니다.

윈도우와는 또다른 문제가 발생했습니다. 특히 권한부분에서...

 

Linux 버전 2.2.2 다운로드 : http://bitnami.org/ko/stack/redmine 

다운받은 파일이 설치파일이고 Text 기반 wizard 형식이라 어렵지는 않습니다.

실행권한을 부여한 다음 실행한다.

 

 

1. 언어선택 : 영어나 한국어를 선택. Default 는 영어입니다.

2. phpMyAdmin 설치여부선택 : Y (혹시 dB를 들여다봐야 할지 몰라 선택했습니다.)

3. Redmine 여부 : Y 

4. 상단의 선택이 맞는지 확인질문

5. 설치 위치 지정(Default를 선택함)

6. Login User 생성 : (처음 레드마인 실행후 관리자로 실행할 사용자를 의미합니다.)

7. 메일주소 입력

8. 레드마인 Default 언어선택(생성한 User가 레드마인을 어떤언어로 사용할것인지 선택합니다. 나중에 레드마인 페이지에서 변경 가능합니다.)

9. 메일발송세팅

(Gmail을 선택하면 Gmail 인증 입력후 자동으로 해줍니다. 별도의 메일서버를 사용중이라면 Custom을 선택후 메일정보를 입력합니다. 나중에 레드마인 설정파일에서 변경가능합니다.)

10. 계속해서 설치하겠냐고 질문합니다. Y

11. 설치 진행바가 100% 될때까지 기다립니다.

(설치하는 PC/Server 사양에 따라서 차이가 발생할 것입니다. 가상서버에 설치하느라 꽤 걸렸습니다.)

 

---------------------------------------------

CentOS 5.x 라면 여기까시 설치후 바로 사용가능했겠으나 CentOS 6.x 부터 추가된 보안강화 때문에 몇가지 설정을 해야 합니다.

 

1. iptables 를 확인합니다.

꺼놓았다면 상관없겠으나 기본적으로 켜져있으므로 다음의 항목을 추가합니다.

 

vi /etc/sysconfig/iptables

 

-I INPUT -p tcp --dport 80 -j ACCEPT
-I INPUT -p tcp --dport 443 -j ACCEPT

 

아파치 Root 디렉토리를 변경할 경우 CentOS 6 에서 권한을 해제해 주어야 한다.

 

phpmyadmin 을 Y로 했다면 다음의 파일을 변경합니다.

리눅스에 설치할 경우 대부분 서버모드일 것이고 접속하는 PC는 다른 IP일 것이기 때문에 접속 가능 IP를 바꿔줍니다.

 

vi /opt/redmine-2.2.2-0/apps/phpmyadmin/conf/phpmyadmin.conf

<IfVersion < 2.3 >
Order allow,deny
Allow from 192.168.0.130   <== 접근하려는 IP를 입력합니다.
Satisfy all

 

여기까지 설정하고 http://server-ip/  로 접속하면 레드마인이 보여집니다.

http://server-ip/redmine 으로 접속하면 바로 레드마인 화면이 나옵니다.

 

다음으로  svn 을 설정합니다.

기본적으로 http로 svn을 사용하는것이 편하기에 아파치에 subversion 을 연동합니다.

 

httpd.conf 파일을 수정합니다.

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

 

...

 

# Virtual hosts
Include conf/extra/httpd-vhosts.conf 

 

httpd-vhosts.conf 파일을 수정합니다.

<VirtualHost *:80>
  <Location /svn>
    DAV svn
    SVNParentPath "/opt/redmine-2.2.2-0/apps/repos"

    AuthType Basic
    AuthName "SVN Repository"
    AuthUserFile "/opt/redmine-2.2.2-0/apps/repos/htpasswd"
    Require valid-user
  </Location>
</VirtualHost> 

 

htpasswd파일을 생성합니다.

/opt/redmine-2.2.2-0/apache2/bin/htpasswd -cm ./svn.htpasswd [svnuser] [svnpasswd]

 

이후 사용자 추가는 -b옵션 대신 -c 옵션을 사용합니다.

shell script 파일로 만들어 두면 나중에 새로운 사용자 추가시 편합니다.

 

 

이렇게 세팅후 아파치를 재시작하면 이상하게 Syntax error가 나옵니다.

httpd: Syntax error on line 113 of /opt/redmine-2.2.2-0/apache2/conf/httpd.conf: Cannot load /opt/redmine-2.2.2-0/apache2/modules/mod_dav_svn.so into server: /opt/redmine-2.2.2-0/apache2/modules/mod_dav_svn.so: undefined symbol: svn_relpath_join

 

본인의 경우는 기본적으로 제공되는 .so파일이 뭔가 문제가 있었는지(혹시 32bit/64bit 차이?) 제대로 작동을 하지 않아 다른곳에서 사용중인 .so파일을 가져다가 교체했습니다.

 

아래 64bit CentOS 테스트에서 정상 작동한  모듈파일입니다.   

 mod_authz_svn.so mod_dav_svn.so

 

혹시 권한관련 오류가 발생할 경우 아래의 명령어를 실행합니다.

 

chcon -R -t httpd_sys_content_t /opt/redmine-2.2.2-0/apps/repos

chcon -R -t httpd_sys_rw_content_t /opt/redmine-2.2.2-0/apps/repos

 

레드마인 전체를 재시작 합니다.

다음의 명령어를 사용하면 apache, subversion, mysql 전체를 재시작합니다.

/opt/redmine-2.2.2-0/ctlscript.sh [start/stop/restart]

 

저장소를 생성합니다.

cd  /opt/redmine-2.2.2-0/apps/repos

svnadmin create test

 

브라우저에서 생성된 위치를 확인합니다. http://server-ip/svn/test  를 입력할 경우 사용자 계정정보를 물어봅니다.

 

하위 폴더를 생성합니다.

export SVN_EDITOR='/bin/vi'

svn mkdir http://server-ip/svn/test/trunk

처음엔 root 의 비밀번호와 생성할 사용자의 계정정보를 물어봅니다. 이후부터는 root는 물어보지 않습니다.

 

vi editor가 실행되면

:q

취소(C) 합니다.

revision 정보가 나옵니다.

branches, tags 도 같은 방법으로 처리합니다.

 

혹시 Permission 관련 오류가 발생한다면

svn: Can't open file '/opt/redmine-2.2.2-0/apps/repos/spring/db/txn-current-lock': Permission denied

 

chmod -R 777 test 를 줍니다.

 

그런데 본인의 경우 위와같이 했음에도 불구하고 초기에 생성한 svn 계정으로 디렉토리가 생성되지 않는 문제가 발생했습니다.

그래서 새로운 사용자를 생성했더니 정상 작동합니다. 이유가 참...

 

Bitnami 로고페이지 변경하기

뭐 간단하지만 그래도 혹시나 해서 ....

 

첫페이지가 Bitnami 로고 및 설명페이지가 나옵니다. index.html 파일을 수정합니다.

 

vi /opt/redmine-2.2.2-0/apache2/htdocs/index.html

<meta http-equiv="refresh" content="0; url=/redmine">

이후부터는 접속하면 자연스럽게 초기페이지가 /redmine로 변경됩니다.

 

이방법 외에 다른 방법은 아직 찾지 못했습니다.  혹시 방법 아시는 분 알려주세요.

 

 

끝.

 

 

P.S. 이전 윈도우에서 사용하던 svn 저장소를 덤프받는 방법

 

svnadmin dump "d:\subversion\dev > d:\dev_dump.svn

 

특정 리비전을 받고자 한다면 -r 옵션을 사용합니다.

svnadmin dump "d:\subversion\dev -r 1:1000> d:\dev_dump.svn

 

 



윈도우상에서 구동중인 svn 에 새로운 저장소를 추가한다.

도스커맨드 창에서 다음의 명령어를 수행하여 저장소를 추가한다.


1. 저장소 추가(by svnadmin create ~)

2. 하위 디렉토리 추가(svn mkdir ~ )

3. 그외 자세한 사용법은 "svnadmin or svn  help 명령어" 하면 자세히 나온다.


따라하기 (추가하려는 저장소 : test2 )


svnadmin create test2



set SVN_EDITOR=c:\windows\system32\notepad.exe


# http방식이 아닌 svn 방식으로 접속한다면 다음과 같이 지정한다.

#svn mkdir svn://localhost/test2/trunk


D:\Subversion>svn mkdir http://svn.testsvn.co.kr/svn/test2/trunk


로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E):

C

인증 영역(realm): <http://svn.testsvn.co.kr> SVN Repository

'Administrator'의 암호:***********

인증 영역(realm): <http://svn.testsvn.co.kr> SVN Repository

사용자명:test

'test'의 암호:****************


커밋된 리비전 1.


D:\Repository\Subversion>svn mkdir http://svn.testsvn.co.kr/svn/test2/branches


로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E):

C


커밋된 리비전 2.


D:\Repository\Subversion>svn mkdir http://svn.testsvn.co.kr/svn/test2/tags


로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E):

C


커밋된 리비전 3.