태그 보관물: svn

svn

SVN에서 삭제 된 파일을 복원하는 올바른 방법은 무엇입니까? 복사 머리에 업데이트 파일을

리포지토리에서 파일을 삭제했고 이제 다시 되돌리고 싶습니다. 내가 알아낼 수있는 최선의 방법은 다음과 같습니다.

  • 삭제하기 전에 개정판으로 업데이트
  • 파일을 다른 곳에 복사
  • 머리에 업데이트
  • 파일을 다시 복사
  • 그들을 추가
  • 범하다

그것은 단지 나쁜 냄새가 나고 모든 역사를 잃어 버립니다. 더 나은 방법이 있어야합니다. 나는 이미 The SVN Book을 보았지만 아무것도 찾지 못했고 지금 SVN 태그 목록을 찾고 있습니다.



답변

svn merge 사용 :

svn merge -c -[rev num that deleted the file] http://<path to repository>

예 :

svn merge -c -12345 https://svn.mysite.com/svn/repo/project/trunk
             ^ The negative is important

TortoiseSVN (내 생각에 …)

  • Explorer에서 마우스 오른쪽 버튼을 클릭하고 TortoiseSVN-> Merge …로 이동합니다.
  • “수정 범위 병합”이 선택되어 있는지 확인하고 다음을 클릭합니다.
  • “병합 할 개정 범위”텍스트 상자에서 파일을 제거한 개정을 지정하십시오.
  • “역 병합”확인란을 선택하고 다음을 클릭합니다.
  • 병합을 클릭하십시오.

그러나 그것은 완전히 테스트되지 않았습니다.


OP 편집 : 이것은 TortoiseSVN의 내 버전에서 작동합니다 (다음 버튼이없는 이전 종류).

  • 항목이 삭제 된 폴더로 이동
  • Explorer에서 마우스 오른쪽 버튼을 클릭하고 TortoiseSVN-> Merge …로 이동합니다.
  • 에서 에서 부분 삭제했다 개정을 입력
  • 로의 섹션을 삭제하기 전에 수정을 입력합니다.
  • “병합”을 클릭하십시오.
  • 범하다

트릭은 거꾸로 병합하는 입니다. 했네 sean.bright 올바른 방향으로 날을 가리키는합니다!


편집 : 우리는 다른 버전을 사용하고 있습니다. 내가 설명한 방법은 TortoiseSVN 버전에서 완벽하게 작동했습니다.

또한 커밋에 여러 변경 사항이있는 경우 역 병합하는 경우 커밋하기 전에 병합이 완료되면 다른 변경 사항을 되돌리고 싶을 것입니다. 그렇지 않으면 이러한 추가 변경 사항도 취소됩니다.


답변

Sean Bright가 제안한 svn 병합을 수행하는 문제는 삭제와 동일한 개정판에서 다른 변경 사항을 다시 도입한다는 것입니다. svn 복사본은 삭제 된 파일에만 영향을 미치는보다 구체적인 작업입니다.

Tortoise SVN을 사용하면 다음과 같이 svn 복사본을 통해 작업 복사본 디렉터리와 이후 SVN 개정판에서 삭제 된 파일을 부활시킬 수 있습니다.

  • 이전에 파일이 포함 된 작업 복사본 폴더를 찾습니다.
  • 탐색기에서 폴더를 마우스 오른쪽 버튼으로 클릭하고 TortoiseSVN-> 로그 표시로 이동합니다.
  • 파일을 삭제 한 개정판 바로 앞의 개정 번호를 마우스 오른쪽 버튼으로 클릭하고 “저장소 찾아보기”를 선택합니다.
  • 삭제 된 파일을 마우스 오른쪽 버튼으로 클릭하고 “작업 복사본으로 복사 …”를 선택하고 저장합니다.

삭제 된 파일은 이제 작업 복사본 폴더에 있습니다. 다시 SVN에 다시 추가하려면 복원 된 파일을 마우스 오른쪽 버튼으로 클릭하고 SVN Commit을 선택합니다.

주의 :이 방법은 복원 된 파일의 이전 기록을 보존하지만 TortoiseSVN 로그에서 이전 기록을 보려면 로그 메시지 대화 상자에서 “복사 / 이름 변경시 중지”가 선택 해제되어 있는지 확인해야합니다.


답변

완전성을 위해, 이것은 당신이 무엇을 찾아야하는지 알고 있었다면 svn 책에서 발견했을 것입니다. 이미 발견 한 것입니다.

변경 취소

지운 편지함 부활

이 책의 더 최근 (그리고 상세한) 버전에서도 마찬가지입니다.

변경 취소

지운 편지함 부활


답변

Tortoise SVN 복사 기능을 사용하여 커밋 된 변경 사항을 되돌립니다.

  1. 삭제 된 파일 / 폴더가 포함 된 상위 폴더를 마우스 오른쪽 버튼으로 클릭합니다.
  2. “로그 표시”를 선택하십시오.
  3. 변경 / 삭제가 완료된 이전 버전을 선택하고 마우스 오른쪽 버튼으로 클릭합니다.
  4. “저장소 찾아보기”를 선택하십시오.
  5. 복원 할 파일 / 폴더를 선택하고 마우스 오른쪽 버튼을 클릭하십시오.
  6. 파일 / 폴더를 헤드 개정판에 복사 할 “복사 위치”를 선택하십시오.

도움이되는 희망


답변

나는 항상 svn copy를 서버 작업으로 사용하는 것처럼 보이므로 두 개의 작업 경로에서 작동하는지 확실하지 않습니다.

다음은 삭제 된 파일을 프로젝트의 로컬 작업 복사본으로 복원하는 예입니다.

svn copy https://repos/project/modules/module.js@3502 modules/module.js

프로젝트 디렉토리 안에있는 동안. 이것은 전체 디렉토리를 복원 할 때도 작동합니다.


답변

Tortoise SVN을 사용하는 경우 해당 개정판에서 작업 복사본으로 변경 사항을 되 돌린 다음 (효과적으로 역 병합 수행) 파일을 다시 추가하기 위해 다른 커밋을 수행 할 수 있어야합니다. 따라야 할 단계는 다음과 같습니다.

  1. 작업 복사본에서 파일을 삭제 한 폴더를 찾습니다.
  2. repo-browser로 이동하십시오.
  3. 파일을 삭제 한 개정판을 찾습니다.
  4. 변경 목록에서 삭제 한 파일을 찾습니다.
  5. 파일을 마우스 오른쪽 버튼으로 클릭하고 “이 개정판에서 변경 사항 되돌리기”로 이동합니다.
  6. 그러면 파일이 작업 복사본으로 복원되고 기록이 유지됩니다.
  7. 파일을 커밋하여 저장소에 다시 추가합니다.

답변

파일을 복원하고 수정 내역을 잃지 않는 가장 쉬운 방법은 SVN copy를 사용 하는 것입니다. 위의 병합 예제는 동일한 작업을 수행하는 더 복잡한 방법 인 것 같습니다. 단순히 개정을 복원 하려는데 병합이 필요한 이유는 무엇입니까?

이 경우 다음을 사용하고 꽤 잘 작동합니다.

svn copy -m 'restoring file' -r <rev_number_file_to_restore> http://from/file.cs http://pathTo/file.cs

나는 항상 svn copy서버 작업 으로 사용 하는 것처럼 보이 므로 두 작업 경로에서 작동하는지 확실하지 않습니다.