Subversion은 파일과 폴더의 이름 변경 및 이동을 허용합니다. 따라서 TortoiseSVN 하위 메뉴에 삭제 및 이름 변경 메뉴 항목이 있습니다.
Subversion에서 파일 또는 폴더를 제거하려면 → 를 사용하십시오.
파일 또는 폴더를 → 하면 즉시 작업 사본에서 제거되며 다음 커밋 시 저장소에서 삭제 대상으로 표시됩니다. 해당 항목의 부모 폴더에는 “수정됨” 아이콘 오버레이가 표시됩니다. 변경 사항을 커밋하기 전까지는 부모 폴더에서 → 를 사용하여 파일을 다시 가져올 수 있습니다.
항목을 저장소에서 삭제하되 로컬에는 버전 관리되지 않는 파일/폴더로 유지하려면 → 를 사용하십시오. 확장 상황에 맞는 메뉴에서 이 옵션을 보려면 탐색기 목록 창(오른쪽 창)에서 항목을 마우스 오른쪽 버튼으로 클릭하는 동안 Shift 키를 누르고 있어야 합니다.
TortoiseSVN 상황에 맞는 메뉴를 사용하지 않고 탐색기를 통해 항목을 삭제하면, 커밋 대화 상자에 해당 항목이 누락된 것으로 표시되며 커밋하기 전에 버전 관리에서 제거할 수도 있습니다. 그러나 작업 사본을 업데이트하면 Subversion이 누락된 항목을 찾아 저장소의 최신 버전으로 교체합니다. 버전 관리되는 파일을 삭제해야 하는 경우, Subversion이 사용자가 실제로 무엇을 하려는지 추측할 필요가 없도록 항상 → 를 사용하십시오.
파일이나 폴더를 삭제하고 해당 삭제 작업을 이미 저장소에 커밋했다면, 일반적인 → 로는 다시 되돌릴 수 없습니다. 하지만 파일이나 폴더가 완전히 사라진 것은 아닙니다. 파일이나 폴더가 삭제된 리비전을 알고 있다면 (모르는 경우 로그 대화 상자를 사용하여 확인) 저장소 브라우저를 열고 해당 리비전으로 전환하십시오. 그런 다음 삭제한 파일이나 폴더를 선택하고 마우스 오른쪽 버튼을 클릭한 다음 → 을 선택하고 해당 복사 작업의 대상으로 작업 사본의 경로를 선택하십시오.
파일 또는 폴더의 간단한 그 자리 이름 변경을 원하면 → 을 사용하십시오. 항목의 새 이름을 입력하면 완료됩니다.
작업 사본 내에서 파일을 이동하거나 다른 하위 폴더로 이동하려면 마우스 오른쪽 버튼 드래그 앤 드롭 핸들러를 사용하십시오.
이동하려는 파일 또는 디렉터리 선택
작업 사본 내의 새 위치로 오른쪽 드래그
마우스 오른쪽 버튼에서 손 떼기
팝업 메뉴에서 → 선택
이름 변경 및 이동은 삭제 후 추가 방식으로 이루어지므로, 이름 변경/이동 작업의 삭제된 부분이 커밋 대화 상자에 나타나도록 이름이 변경/이동된 파일의 부모 폴더를 커밋해야 합니다. 이름 변경/이동 작업의 제거된 부분을 커밋하지 않으면 저장소에 남아 있게 되고, 동료들이 업데이트할 때 이전 파일이 제거되지 않습니다. 즉, 이전 사본과 새 사본을 둘 다 갖게 됩니다.
폴더 내부의 파일을 변경하기 전에 폴더 이름 변경을 반드시 커밋해야 합니다. 그렇지 않으면 작업 사본이 심하게 엉망이 될 수 있습니다.
파일을 이동하거나 복사하는 또 다른 방법은 Windows 복사/잘라내기 명령을 사용하는 것입니다. 복사하려는 파일을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 탐색기 상황에 맞는 메뉴에서 → 를 선택하십시오. 그런 다음 대상 폴더로 이동하여 마우스 오른쪽 버튼을 클릭하고 → 를 선택하십시오. 파일을 이동하려면 → 대신 → 를 선택하십시오.
저장소 브라우저를 사용하여 항목을 이동할 수도 있습니다. 자세한 내용은 “저장소 브라우저” 섹션을 참조하십시오.
svn:externals를 사용하여 생성된 폴더에는 TortoiseSVN의 이동 또는 이름 변경 명령을 사용해서는 안 됩니다. 이 작업은 외부 항목이 해당 부모 저장소에서 삭제되도록 하여, 아마도 많은 다른 사람들을 혼란스럽게 할 것입니다. 외부 폴더를 이동해야 하는 경우 일반 셸 이동을 사용한 다음, 원본 및 대상 부모 폴더의 svn:externals 속성을 조정해야 합니다.
저장소에 이미 이름은 같지만 대소문자만 다른 두 파일(예: TEST.TXT 및 test.txt)이 포함되어 있다면, Windows 클라이언트에서는 부모 디렉터리를 업데이트하거나 체크아웃할 수 없습니다. Subversion은 대소문자를 구분하는 파일 이름을 지원하지만 Windows는 그렇지 않습니다.
이는 두 사람이 별도의 작업 사본에서 이름은 같지만 대소문자가 다른 파일을 커밋할 때 발생하기도 합니다. 또한 Linux와 같이 대소문자를 구분하는 파일 시스템을 사용하는 시스템에서 파일을 커밋할 때도 발생할 수 있습니다.
이 경우, 둘 중 하나를 유지하고 다른 하나는 저장소에서 삭제(또는 이름 변경)할지 결정해야 합니다.
대소문자 충돌을 일으키는 체크인을 방지하는 서버 후크 스크립트가 다음에서 제공됩니다: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/
때때로 사용자의 IDE는 리팩터링 작업의 일환으로 파일 이름을 변경하지만, 당연히 Subversion에는 이를 알리지 않습니다. 변경 사항을 커밋하려고 하면 Subversion은 이전 파일 이름을 누락된 것으로, 새 파일 이름을 버전 관리되지 않는 파일로 인식합니다. 새 파일 이름을 체크하여 추가할 수는 있지만, Subversion은 파일들이 관련되어 있다는 것을 모르기 때문에 기록 추적 기능을 잃게 됩니다.
더 나은 방법은 이 변경 사항이 실제로는 이름 변경임을 Subversion에 알리는 것이며, 이는 커밋 및 수정 사항 확인 대화 상자 내에서 수행할 수 있습니다. 간단히 이전 이름(누락됨)과 새 이름(버전 관리되지 않음)을 모두 선택한 다음 → 를 사용하여 두 파일을 이름 변경으로 묶으십시오.
일반적으로 모든 생성된 파일이 Subversion에서 무시되도록 무시 목록을 설정합니다. 하지만 깨끗한 빌드를 생성하기 위해 무시된 모든 항목을 지우고 싶다면 어떻게 해야 할까요? 일반적으로 makefile에서 설정하겠지만, makefile을 디버깅하거나 빌드 시스템을 변경하는 경우 모든 것을 정리할 방법이 있으면 유용합니다.
TortoiseSVN은 → 를 사용하여 그러한 옵션을 제공합니다. 확장 상황에 맞는 메뉴에서 이 옵션을 보려면 탐색기 목록 창(오른쪽 창)에서 폴더를 마우스 오른쪽 버튼으로 클릭하는 동안 Shift 키를 누르고 있어야 합니다. 이렇게 하면 작업 사본 내의 모든 버전 관리되지 않는 파일이 나열되는 대화 상자가 나타납니다. 그런 다음 제거할 항목을 선택하거나 선택 해제할 수 있습니다.
이러한 항목이 삭제되면 휴지통이 사용되므로, 여기서 실수하여 버전 관리되어야 했던 파일을 삭제하더라도 여전히 복구할 수 있습니다.