내 현재 SVN 구조 :
Path: .
URL: svn://someaddress.com.tr/project
Repository Root: svn://someaddress.com.tr
Repository UUID: -------------------------------------
Revision: 10297
Node Kind: directory
Schedule: normal
Last Changed Author: ----
Last Changed Rev: 9812
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010)
그러나 우리의 프로젝트 (따라서 SVN 서비스)는 sub.someaddress.com.tr
대신 작동 할 것입니다 someaddress.com.tr
(someaddress.com.tr은 곧 다른 곳으로 리디렉션됩니다).
개발 서버이기 때문에 무엇을 해야할지 확신 할 수 없었습니다. 나는 사용해야합니다 svn switch
또는 svn switch --relocate
? 또한 svn root someaddress.com.tr 또는 프로젝트 브랜치 someaddress.com.tr/project 를 전환해야 합니까?
답변
Apache Subversion 서버가이 새 DNS 별칭으로 이동된다는 점을 감안할 때 sub.someaddress.com.tr
:
-
Subversion 1.7 이상에서는
svn relocate
. Relocate는 SVN 서버의 위치가 변경 될 때 사용됩니다.switch
로컬 작업 복사본을 다른 분기 또는 다른 경로로 변경하려는 경우에만 사용됩니다. TortoiseSVN을 사용하는 경우 TortoiseSVN 설명서의 지침을 따를 수 있습니다 . SVN 명령 줄 인터페이스를 사용하는 경우 SVN 설명서의이 섹션을 참조하십시오 . 명령은 다음과 같아야합니다.svn relocate svn://sub.someaddress.com.tr/project
-
/project
저장소의 실제 내용이 변경되지 않을 수 있으므로 계속 사용하십시오 .
참고 : svn relocate
버전 1.7 이전에는 사용할 수 없습니다 (정보에 대해 ColinM 덕분에). 이전 버전에서는 다음을 사용합니다.
svn switch --relocate OLD NEW
답변
URL을 앞뒤로 그리면 안심할 수 있습니다.
svn info | grep URL
URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
Relative URL: (...doesn't matter...)
버전 (> 1.7)을 확인 svn relocate
하여 사용하는 것이 올바른지 확인 하십시오.
svn --version
마지막으로, 저장소 URL 변경에 프로토콜 변경이 포함 된 경우 위의 내용을 추가하면 이전 및 이후 URL 을 명시해야 할 수도 있습니다 ( 여기 참조 ).
svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
https://svngate.mycompany.org/svn/repos/trunk/DataPortal
물론 한 줄에 모두 포함 된 후 모든 것이 순조롭게 진행되었다는 좋은 느낌을 받으십시오.
svn info | grep URL:
좀 더 자신감이 있다면 새로운 svn repo URL이 연결되어 작동합니다.
svn status --show-updates
svn diff
답변
제 경우에는 어떤 이유로 svn relocate
명령 (뿐만 아니라 svn switch --relocate
)이 실패했습니다 (레포지토리가 올바르게 이동되지 않았거나 다른 것). 이 오류가 발생했습니다.
$ svn relocate NEW_SERVER
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46'
전체 저장소를 다시 다운로드하고 싶지 않았기 때문에 해결 방법을 찾았습니다. 제 경우에는 효과가 있었지만 일반적으로 많은 일이 망가질 수 있다고 상상할 수 있습니다 (작업 복사본을 백업하거나 문제가 발생하면 전체 저장소를 다시 체크 아웃 할 준비를하십시오).
저장소 주소와 해당 UUID는 .svn/wc.db
작업 복사본 의 SQLite 데이터베이스 파일에 저장됩니다 . 데이터베이스를 열고 (예 : SQLite 브라우저에서) REPOSITORY 테이블을 찾은 다음 root
및 uuid
열 값을 새 값으로 변경하십시오 . 를 발행하여 새 저장소의 UUID를 찾을 수 있습니다 svn info NEW_SERVER
.
다시 말하지만 이것을 최후의 수단으로 취급하십시오.
답변
새 빈 Repo에 커밋하려면 새 빈 Repo를 확인하고 새 원격 저장소에 커밋 할 수 있습니다.
새로운 빈 Repo를 확인하면 로컬 파일이 삭제되지 않습니다.
이것을 시도하십시오 :
예를 들어, 원격 저장소 URL : https://example.com/SVNTest
cd [YOUR PROJECT PATH]
rm -rf .svn
svn co https://example.com/SVNTest ../[YOUR PROJECT DIR NAME]
svn add ./*
svn ci -m"changed repo url"