2009-06-15 3 views
1

나는 코드 플렉스에 대한 프로젝트를 가지고 있으며 트리 구조를 재구성하려고 노력 중이므로 좀 더 이해가 쉽고 작업하기가 쉽습니다.약간의 문제가있는 SVN 폴더 이동

이 내 현재 레이아웃입니다 :

TopLevel 
|-->src 
    |--->ProjectA //This is where all the files are held 
     |-->Core //plus three more folders 
|-->MyProject.Core 
    |--->trunk 
     |-->src // I want to move all the folders and files in ProjectA into here 

그래서 내가 ProjectA.Core/트렁크/SRC에 PROJECTA 아래에있는 모든 폴더와 파일을 이동합니다.

나는 전체 소스 트리를 체크 아웃하고 ProjectA 폴더 아래의 폴더를 마우스 오른쪽 버튼으로 클릭하고 "버전이있는 파일을 여기로 이동"을 선택하여 프로젝트의 폴더를 삭제 대상으로 표시했지만 src의 새 파일에는 여전히 녹색 플러스 버튼이 아니라 옆에있는 녹색 틱.

변경 사항을 적용한 후 repo 브라우저에서 한 번 보았을 때 폴더가 이동되지 않았고 ProjectA 폴더에 남아 있음을 확인했습니다.

폴더와 폴더의 파일을 Subversion의 다른 폴더로 이동하려면 어떻게해야합니까? 버전 기록을 잃지 않고.

나는 TortoiseSVN을 사용하고 있습니다.

EDIT : 코드 플렉스 였음에 틀림 없다. 내 프로젝트를 구글 코드로 옮겼다. 모든 것이 잘 작동한다.

답변

2

내가 파일을 내보내고 가져올 것을 제안했을 때 나는 무엇을 생각하고 있었는지 모른다. 나는 TortoiseSVN에서 너무 오랫동안 떨어져 있었다고 생각한다. 나는 거북이 svn 실제로 움직이는 전체 디렉토리 a really easy method을 가지고 기억합니다. 단지 명백한 것은 아니지만 결과가 저장소에 올바르게 적용되지 않는 이유는 분명하지 않습니다. 아마도이 모든 폴더의 부모에 대한 커밋을했을 것입니다.

다음은 요약이다 : 당신은 당신이 이동하고자하는 폴더 및 파일을 선택하고 그렇게 을 수행 한 후 오른쪽 선택을 클릭하고 새 위치로 오른쪽 버튼으로을 드래그해야합니다. 저장소의 파일을 재배치 할 것인지 묻는 컨텍스트 메뉴가 나타납니다. 이것은 역사를 유지합니다. 이제 이전 파일이 삭제 대상으로 표시되고 새 파일 이 (가)으로 추가되어야합니다. (상태 아이콘이 ... 항상 실제 상태를 나타내는 것은 아님). 이것을 하나의 커밋으로 저지하십시오. 나는 을 좋아하고 체크 아웃 된 파일의 루트에 수정을 확인한 다음 정확히하기 전에 커밋 할 변경 내용을 선택하십시오.

이와 같이 하나의 폴더 만 이동하는 경우이 폴더의 부모 인 창과이 폴더의 새로운 부모가 될 다른 창을 엽니 다. 마우스 오른쪽 버튼으로 클릭 한 번으로 하나의 동작으로 드래그하십시오. 간단한 마우스 동작을 설명하는 데 많은 텍스트가 필요하다고 생각할 수 없습니다.

+1

Subversion을 사용하면 주변에서 파일 및 심지어 전체 디렉토리 트리를 쉽게 이동할 수 있습니다. 수출/수입 방법은 Subversion에 전혀 부적합합니다. 그래서 -1. 자, 원래의 reorg 질문은 Subversion 커맨드 라인 클라이언트로하는 것이 쉽지만, TortoiseSVN을 사용하여 쉽게 할 수 있습니다. –

+0

좋아, 업데이트에서 더 이상 내보내기/가져 오기가 제안되지 않으며 이전 댓글이 더 이상 +1에 적용되지 않습니다. :) –

+0

나는 당신과 Greg가 제안한 것을 시도했지만, 커밋 한 후에는 폴더를 삭제하거나 새로운 것을 추가하지 않습니다. 나는 repo 브라우저에서 폴더를 옮기더라도 폴더를 움직이지 않기 때문에 codeplex 끝에서 문제가 될 수 있다고 생각합니다. 이것은 내 커밋 히스토리의 진짜 난장판을 만들기 시작합니다. ( –

0

불쾌한 움직임을 처리하기위한 표준 전략은 최악의 경우 모든 새 디렉터리를 만들고 이전 디렉터리의 파일 만 새 디렉터리로 이동 한 다음 모든 이전 디렉터리를 제거하는 것입니다. 이 문제는 거의 모든 문제를 해결해야하며 작동하는 바로 가기 (전체 디렉토리 및/또는 나무 이동)를 수행 할 수 있습니다.

이렇게하면 모든 파일의 기록이 유지됩니다. 디렉토리 생성에 대한 히스토리는 유지되지 않지만 일반적으로 이전 디렉토리와 새 디렉토리 이름을 포함하는 모든 파일 이동에 대한 히스토리가 있으므로 살 수있는 내용입니다.

+0

내가 그런 식으로해야 할 것처럼 보입니다. '(.이 모든 폴더를 움직이면 물건이 부서지는 것처럼 느껴지므로 –

+0

Subversion에서 디렉토리를 쉽게 이동할 수 있습니다. 역사를 잃지 않고 파일을 이동하십시오. –

+0

사실, 때로는 디렉토리를 이동하기가 쉽지 않고 여러 커밋을 통해 이동해야합니다. 예를 들어, foo/src를 제외한 foo를 bar로 이동하려는 경우 , 그리고 foo/src를 foo로 바꾼다. 디렉토리 이동을하지 않는 한 단일 커밋으로이 작업을 수행 할 수 없습니다. –

2

이 재구성 유형은 Subversion 명령 줄 클라이언트로 수행하기 쉽습니다.이 옵션은 실행 가능한 옵션 일 수 있습니다. 여기 (최상위 디렉토리에서) 할 것입니다 명령을이다 :

svn mv src/ProjectA MyProject.Core/trunk/src/ 
svn ci -m "relocate ProjectA" 

당신은 또한 소스와 대상으로, 자세한 내용은 svn mv 설명서를 참조 URL을 사용하여 하나에 두 명령을 결합 할 수 있습니다.

TortoiseSVN을 사용하여 이런 종류의 작업을 수행하는 쉬운 방법을 찾지 못했습니다. 따라서 명령 줄 클라이언트를 사용해야 할 때가 있습니다.

+0

나는 그것을 다운로드하고 시도해 볼 것이다. 명령 행을 사용하고 GUI를 버리는 것이 더 나을 때도 있습니다. –

+0

왜 이것이 다운 보트를 가지고 있습니까? –