문제

Repo에서 파일을 삭제했는데 이제 다시 넣고 싶습니다. 내가 알아낼 수있는 최선은 다음과 같습니다.

  • 삭제 전에 개정판으로 업데이트하십시오
  • 다른 곳에서 파일을 복사하십시오
  • 헤드로 업데이트
  • 파일을 다시 복사하십시오
  • 추가하십시오
  • 저지르다

그것은 단지 나쁜 냄새가 나고 모든 역사를 느슨하게합니다. 이 작업을 수행하는 더 좋은 방법이 있어야합니다. 나는 이미 바라 보았다 SVN 책 그러나 아무것도 찾지 못했고 이제는 SVN 태그 목록을 내려다보고 있습니다.

도움이 되었습니까?

해결책

SVN 병합 사용 :

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로 이동하십시오 ...
  • "다양한 개정판 병합"이 선택되었는지 확인하고 다음을 클릭하십시오.
  • "수정 범위를 병합하기"텍스트 상자에서 파일을 제거한 개정판을 지정합니다.
  • "Reverse Merge"확인란을 확인하고 다음을 클릭하십시오.
  • 병합을 클릭하십시오

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


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

  • 물건이 대감 된 폴더로 이동하십시오
  • Explorer를 마우스 오른쪽 버튼으로 클릭하고 TortoisesVN-> Merge로 이동하십시오 ...
  • 에서 에서 섹션 삭제 한 개정판을 입력하십시오
  • 에서 에게 섹션 삭제 전에 개정을 입력합니다.
  • "병합"을 클릭하십시오.
  • 저지르다

트릭은 병합하는 것입니다 뒤로. kudos to Sean.bright 올바른 방향으로 나를 가리키기 위해!


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

또한 커밋에 여러 번의 변경 사항이있는 경우 리버스 병합이 발생하면 커밋하기 전에 병합이 완료되면 다른 변경 사항을 되돌릴 것입니다. 그렇지 않으면 추가 변경 사항도 반전됩니다.

다른 팁

Sean Bright가 제안한대로 SVN 병합의 문제는 삭제와 동일한 개정판에서 다른 변경 사항을 재 도입한다는 것입니다. SVN 사본은 삭제 된 파일에만 영향을 미치는보다 타겟팅 된 작업입니다.

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

  • 이전에 파일을 포함했던 작업 카피 폴더로 찾아보십시오.
  • Explorer의 폴더를 마우스 오른쪽 버튼으로 클릭하고 TortoisesVN-> 로그 표시로 이동하십시오.
  • 파일을 삭제 한 개정 직전 개정 번호를 마우스 오른쪽 버튼으로 클릭하고 "저장소 찾아보기"를 선택하십시오.
  • 삭제 된 파일을 마우스 오른쪽 버튼으로 클릭하고 "작업 복사본 복사 ..."를 선택하고 저장하십시오.

삭제 된 파일은 이제 작업 카피 폴더에 있습니다. SVN에 다시 다시 구매하려면 복원 된 파일을 마우스 오른쪽 버튼으로 클릭하고 SVN 커밋을 선택하십시오.

NB :이 방법은 복원 된 파일의 이전 기록을 보존하지만 TortoisesVN 로그의 이전 기록을 확인하려면 로그 메시지 대화 상자에서 "Copy/Rename의 정지"가 확인되지 않도록해야합니다.

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

변경 사항 변경

삭제 된 항목이 부활합니다

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

변경 사항 변경

삭제 된 항목이 부활합니다

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

  1. 삭제 된 파일/폴더가 포함 된 상위 폴더를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. "로그 표시"를 선택하십시오.
  3. 변경/삭제가 완료된 버전을 선택하고 마우스 오른쪽 버튼으로 클릭하십시오.
  4. "브라우즈 리포지토리 찾기"를 선택하십시오.
  5. 복원 해야하는 파일/폴더를 선택하고 마우스 오른쪽 버튼으로 클릭하십시오.
  6. 파일/폴더를 헤드 개정에 복사하는 "복사"를 선택하십시오.

도움이되기를 바랍니다

항상 SVN 사본을 서버 작업으로 사용하는 것 같습니다. 두 개의 작업 경로에서 작동하는지 확실하지 않습니다.

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

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

프로젝트 디렉토리에있는 동안. 이것은 전체 디렉토리를 복원하는데도 좋습니다.

Tortoise SVN을 사용하는 경우 해당 개정에서 작업 사본 (효과적으로 리버스 머지를 수행)으로 변경 사항을 되돌릴 수 있어야합니다. 다음 단계는 다음과 같습니다.

  1. 파일을 삭제 한 작업 사본의 폴더로 찾아보십시오.
  2. Repo-Browser로 이동하십시오.
  3. 파일을 삭제 한 곳에서 개정을 찾아보십시오.
  4. 변경 목록에서 삭제 한 파일을 찾으십시오.
  5. 파일을 마우스 오른쪽 버튼으로 클릭하고 "이 개정판에서 변경 사항을 되돌리십시오"로 이동하십시오.
  6. 이렇게하면 파일을 동작을 유지하면서 작업 사본으로 복원합니다.
  7. 파일을 저장하여 저장소에 다시 추가하십시오.

와 함께 거북이 SVN:

아직 변경 사항을 커밋하지 않은 경우 파일이나 디렉토리를 삭제 한 상위 폴더에서 되돌릴 수 있습니다.

이미 삭제 된 파일을 커밋 한 경우 리포지토리 브라우저를 사용하여 파일이 존재하는 개정판으로 변경 한 다음 Context 메뉴에서 명령 사본을 사용할 수 있습니다. 대상이 대상으로 작업 사본의 경로를 입력하면 삭제 된 파일이 저장소에서 작업 사본으로 복사됩니다.

파일을 복원 할 수 있었고 개정 내역을 잃지 않는 가장 쉬운 방법은 사용하는 것입니다. SVN 사본, 위의 합병 예는 같은 것을 달성하는 더 복잡한 방법처럼 보입니다. 단순히 개정을 복원하고 싶을 때 합병 해야하는 이유는 무엇입니까?

나는이 인스턴스에서 다음을 사용하며 아주 잘 작동합니다.

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

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

복원하려는 하나의 파일 만 확인할 수 있어야합니다. 같은 것을 시도하십시오 svn co svn://your_repos/path/to/file/you/want/to/restore@rev 어디 rev 파일이 존재하는 마지막 개정입니다.

나는 조금 전에 이것을 정확하게해야했고, 내가 정확하게 기억한다면 -r 옵션 svn 작동하지 않았습니다. 나는 그것을 사용해야했다 :rev 통사론. (거꾸로 기억했을지 모르지만 ...)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top