SVN 저장소 URL 변경


116

내 현재 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 를 전환해야 합니까?

답변:


208

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

36
svn relocate는 1.7 이전 버전에서 사용할 수 없습니다. 1.7 이전의 경우svn switch --relocate OLD NEW
ColinM 2013 년

추가 TortoiseSVN을 링크는, 그 주셔서 감사합니다 매우 도움이됩니다
MOnsDaR

switch온라인에서 찾은 모든 문서가 최신 버전 에 대한 명령 인지 몰랐습니다 .
더스틴 쿡

이것은 + ssh URL에서 비 SSH로 또는 그 반대로 재배치해야 할 때 유용합니다. 예 : svn switch --relocate svn + ssh : // _ svn_server _ / _ svn_project _ / _ svn_branch_ svn : // _ svn_server _ / _ svn_project _ / _ svn_branch_. 마지막 방법은 Jenkins API를 사용하여 여러 노드에서 svn + ssh로 자동 체크 아웃을 수행하고 일부 노드 (Windows 노드)에 SSH가없는 경우 특히 유용하지만 빌드 시스템에 로그인하고 수동으로 "svn 업데이트"를 수행해야합니다. 빠른 수정을 테스트하십시오.
Alexander Samoylov

11

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

5

제 경우에는 어떤 이유로 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 테이블을 찾은 다음 rootuuid열 값을 새 값으로 변경하십시오 . 를 발행하여 새 저장소의 UUID를 찾을 수 있습니다 svn info NEW_SERVER.

다시 말하지만 이것을 최후의 수단으로 취급하십시오.


@IgorGanapolsky : 좀 더 구체적으로 말씀해 주시겠습니까?
Martin Pecka

1
내 게시물을주의 깊게 읽으면 명령을 실행하지 않는 것이 좋습니다. SQLite DB를 편집하는 것이 좋습니다.
Martin Pecka

그러나 SQLite DB를 편집하려면 명령을 실행해야합니다. SQL 명령.
Peter Flynn

sqlite를 사용할 수 없다는 것이 밝혀졌습니다. 제안 된대로 sqlitebrowser를 사용해야합니다. 기묘한.
Peter Flynn

1

새 빈 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"


이것이 역사에 어떤 영향을 미칠까요?
MattBianco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.