Search Results for 'svn 프로젝트 복사'

1 POSTS

  1. 2013.02.05 svn 저장소 변경/복사시 발생하는 오류 원인

기존 사용하던 프로젝트 패키지 및 프로젝트 이름을 변경해서 저장소를 달리해서 share project 하려고 하면 다음과 같은 에러 메시지를 만나게 되는 경우가 있습니다.


Share project was failed.

svn: E155000: 'D:\project\project_name' is already a working copy for a different URL; perform update to complete it


같은 svn 주소를 사용하면서 저장소를 옮기려고 하다보니(좀더 정확히는 복사가 맞습니다.) 발생하는 경우인것 같은데, 인터넷을 검색하면 세련된 방법이 많이 등장합니다만 저는 초간단 방법으로 처리해버립니다. 

로컬PC 해당 프로젝트 루트디렉토리로 이동해서 ".svn" 디렉토리를 삭제해버리면 끝.


Revision관리를 처음부터 할것이기 때문에 이 방법을 사용합니다만 혹시 기존의 Revision을 유지한체 저장소로 복사하고 싶은 경우는 copy 명령어를 사용합니다.


svn help copy 에 대한 설명입니다.


C:\Users\Administrator>svn help cp

copy (cp): 작업 사본 혹은 저장소의 내용을 이전 로그메시지와 함께 복사합니다.


사용법: copy SRC[@REV]... DST


여러개를 복사할 때, 이들은 모두 DST의 하위에 추가되며,

이때, DST는 반드시 디렉토리어야 합니다.


  SRC와 DST는 작업 사본(WC) 혹은 저장소 URL이 될 수 있습니다:

    WC  -> WC:   바로 복사하고 저장소에 이전 로그와 함께 추가하도록 스케쥴

    WC  -> URL:  작업사본을 URL에 복사하고 바로 커밋함

    URL -> WC:   URL로부터 체크아웃해서 현 작업 사본에 추가하도록 스케쥴

    URL -> URL:  서버상에서 바로 복사함; 브랜치,태그를 만들 때 사용됨

  모든 SRC들은 같은 종류의 것이어야 합니다.


경고: Subversion 이전 버전과의 호환성을 위해서, 작업 사본간의 복사

(WC -> WC)는 저장소를 경유하지 않고 수행됩니다. 이런 이유로 원본에서

사본으로 복사할 때, 병합되는 정보는 기본 동작으로는 전달되지 않습니다



옵션:

  -r [--revision] ARG      : ARG (어떤 명령은 ARG1:ARG2 와 같은 범위를 사용)

                             리비전은 다음 중 하나가 될 수 있습니다:

                                NUMBER       리비전 번호

                                '{' DATE '}' 리비전이 시작하는 시각

                                'HEAD'       저장소의 마지막 리비전

                                'BASE'       작업 사본을 꺼내온 리비전

                                'COMMITTED'  BASE 이전에 마지막 커밋된 리비전

                                'PREV'       COMMITTED 의 직전 리비전

  -q [--quiet]             : 아무것도 출력하지 않거나, 요약 정보만 출력합니다

  --ignore-externals       : 외부 모듈(svn:externals로 지정된)은 무시합니다

  --parents                : 중간 디렉토리를 만듭니다

  -m [--message] ARG       : 커밋 로그 메시지를 지정합니다

  -F [--file] ARG          : ARG에서 로그 메시지를 읽습니다

  --force-log              : 로그 메시지의 유효성을 확인하지 않습니다

  --editor-cmd ARG         : ARG를 외부 편집기로 사용합니다

  --encoding ARG           : 값을 ARG에 해당하는 문자코드로 취급합니다

  --with-revprop ARG       : 리비전 속성 ARG 를 새 리비전에 설정합니다

                             name[=value] 형식으로 사용합니다


글로벌 옵션:

  --username ARG           : ARG를 접속에 필요한 사용자 ID로 사용합니다

  --password ARG           : ARG를 접속에 필요한 패스워드로 사용합니다

  --no-auth-cache          : 인증 정보를 캐시에 저장하지 않습니다

  --non-interactive        : 대화식 사용자 입력을 기다리지 않습니다

  --trust-server-cert      : accept SSL server certificates from unknown

                             certificate authorities without prompting (but only

                             with '--non-interactive')

  --config-dir ARG         : ARG로 지정된 디렉토리에서 사용자 구성화일을 읽습니

  --config-option ARG      : 사용자 옵션의 포맷을 다음과 같이 지정합니다:

                                 FILE:SECTION:OPTION=[VALUE]

                             예:

                                 servers:global:http-library=serf



ex1. 저장소 내에서 프로젝트 복사하기

# export SVN_EDITOR=/bin/vi

# svn copy http://localhost/svn/aRepos/trunk/ori/aProject  http://localhost/svn/aRepos/trunk/copy

  ==> ori 밑에 있는 aProject 가 동일하게 copy 밑으로 생성됩니다.


ex2. 서로 다른 저장소끼리 프로젝트 복사하기

# svn copy http://localhost/svn/aRepos/trunk/aProject  http://localhost/svn/bRepos/trunk/bProject

  ==> svn: 서버가 예기치 않은 리턴 값 (403 Forbidden) 을 OPTIONS 을/를 'http://localhost/svn'에 요청한 것에 대한 응답으로 보냈습니다

  ==> 오류가 발생합니다. 원인을 찾아봅니다. SVN에서는 저장소간 복사를 지원하지 않는다고 나옵니다.

어떤방법으로 해야할까요? 

고민을 하다가 이부분은 DUMP & LOAD 를 사용해야 할것 같다는 결론으로 끝.

다른 방법을 찾게 되면 다시 업데이트 하겠습니다. 


Windows에서 사용할 경우엔 export 대신 set 을 사용합니다.

D:\>svn copy http://localhost/svn/project/trunk/aProject   http://localhost/svn/project/trunk/bProject
svn: E205007: 로그 메시지를 구하기 위해 외부 프로그램을 사용할 수 없습니다. 
SVN_EDITOR 환경변수를 설정하시거나 --message (-m) 또는 --file (-F) 옵션을 사용하세요.
svn: E205007: 환경변수 SVN_EDITOR, VISUAL, EDITOR 중 하나는 설정하거나, 'editor-cmd' 를 구성화일에 명시해야합니다.

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

D:\>svn copy http://localhost/svn/project/trunk/aProject http://localhost/svn/project/trunk/bProject

로그 메시지가 변경되지 않았거나 지정되지 않았습니다
취소(A), 계속(C), 수정(E):