2009-03-20 4 views
5

몇 가지 사항을 변경하고 커미트 (버전 2)하고 몇 분 후에 내 프로그램에 새로운 버그가 있음을 알았습니다. 그래서 일부 파일을 이전 버전으로 전환하여 로컬 플랫폼에서 파일의 일부를 다시 버전 1로 가져 왔습니다. 그 이후로 나는 잃고 싶지 않은 많은 변화를 만들었고 커밋 (버전 3)을 사용하여 서버에서 로컬 변경 사항을 얻었습니다.로컬 버전을 SVN에 최신 버전으로 만드는 방법

필자가 로컬에 가지고있는 버전은 파일 중 일부가 공식적으로 "버전 1"인 경우에도 헤드 개정판으로 저장소에 저장하려는 버전입니다. 어떤 방식 으로든 SVN 병합을 사용해야한다고 가정합니다. 그러나 어떻게해야 할 지 잘 모르겠습니다. 어떤 충고?

편집 : diff를 사용하면 로컬 버전에서 담당자 버전으로의 변경 사항이 표시됩니다. 업데이트를 할 수는 있지만 로컬에 다시 작동하지 않는 버전이있을 것입니다. 그래서 제가 원한 것은 단지 "이것은 최신 버전, 기간"이라고 말하는 일종의 강제 커밋입니다.

edit2 : "커밋"을 수행 할 때 SVN은 변경 사항이 없다고보고합니다. Neil Butterworth에게 감사드립니다.

edit3 : 내가 마지막으로 한 것은 FY의 제안이었을뿐입니다.하지만 저는 뭘하고 있었는지 정말로 생각하지 않고 업데이트를 할 정도로 바보였습니다. 물론 수리를 넘어 모든 것이 엉망이되었습니다. 그래서 마침내 프로젝트를 새로운 디렉토리로 내보내는 것이 었습니다. 그건 분명히 당신이 그것을 해야하는 방법이 아니지만, 나는 더 이상이 물건을 망쳐 놓고 싶지 않았어. 결국 나는 실제 프로젝트에서 실제 진행으로 돌아 가야했다 ;-) 내가 더 큰 팀에서 일할 때 나는 그런 것을 할 수 없다는 것을 안다. 그러나 나는 그렇지 않다. :)

+0

변경 사항을 커밋하면 어떻게됩니까? –

+0

그것은 말합니다 : 변경 사항이 없습니다. 좋은 질문 – panschk

답변

9

무작위 방식 :

  1. 로컬 파일의 사본을 만드십시오.
  2. 모든 디렉토리에서 모든 .svn 파일을 삭제하십시오.
  3. HEAD 버전을 확인하십시오.
  4. 로컬 파일을 체크 아웃 된 머리글로 복사하십시오.
  5. 로컬 파일을 저장소로 다시 체크인하십시오.

올바르게 입력 한 경우 SVN 클라이언트는 변경된 파일을 저장소의 업데이트로 해석해야합니다. 그러나 이것은 다른 사람들이 여러분이 간직하기를 원하는 모든 변경 사항을 덮어 씁니다. 이러한 변경 사항을 유지하려면 모든 파일에 대해 diff를 수행하고 최종 커밋을 만들기 전에 모든 최근 변경 사항을 통합하십시오. 변경된 각 파일에 대해

  • ,
    1. 유지하려는 DIFF, 주 변화를 비교를하고 그에 따라 로컬 복사본을 변경

      역 원래 버전으로 다시 병합합니다.

    2. 로컬 파일의 사본을 만드십시오.
    3. 역 병합 HEAD를 원하는 원래 버전으로 되돌립니다.
    4. 로컬 파일 복사본을 병합 된 로컬 복사본에 붙여 넣습니다. (삭제.SVN 첫번째)
    5. 방금 ​​변경 확인하지 않고 다시 모든 것을 되돌릴하지 않는 한 이것은 아마 더 사용 설명서입니다

커밋합니다.

Subversion (AFAIK)은 아직 지워진 명령을 제공하지 않으므로 모든 변경 사항은 항상 HEAD의 로컬 복사본에 발생합니다.

되돌리기는 단지 역 병합이며 모든 병합은 항상 로컬 복사본에서 수행됩니다. 이상적인 시스템에서는 병합은 추적되지만 Subversion은 병합 정보를 추적하지 않으므로 방법 1을 수행하고 커밋 로그에 주석을 추가 할 수 있습니다.

일부 URL을 찾아 볼 수 있습니다 :

+0

그밖에 아무것도 작동하지 않는 경우에 그것은 계획 B 일 것입니다. 그러나 꽤 육체 노동 일 것입니다. 나는 더 영리한 방법으로 그것을하고 싶다 ;-) – panschk

+0

그래, 약간 성가신 수행 할 수 있지만, 그것은 항상 작동합니다. –

+0

정말 그 매뉴얼이 아닙니다. 나는 여러 번 전에 그것을 해왔다. 가정하면, 모두 선택, 복사, 다른 곳에 붙여 넣기. 모든 .svn을 검색하고 삭제하십시오. 헤드로 업데이트하십시오. 이전 버전을 복사하고 붙여 넣습니다. 범하다. – Tim

3

을 두 가지 가능성이 여기에 있습니다 :

  • 당신은 효과적으로 전환 이전 버전의 repo로 변경되었으므로 버전 1에서 작업했습니다.
  • 또는 버전 2 이상의 이전 버전 파일을 체크 아웃하고 변경 한 다음 새 버전으로 커밋했습니다.

어떤 경우에도 변경 사항을 성공적으로 커밋 한 경우 서버에 있어야합니다. 당신이 확실하지 않은 경우

그러나, 나는 권하고 싶습니다 :

  • 현재 파일의 백업을 유지;
  • 새 저장소 사본을 확인하십시오.
  • 사본과 동일하면 아무 것도하지 않습니다.
  • 그렇지 않을 경우, (을 .svn 숨겨진 폴더를 제외!)
+0

이것은 실제로 허용 된 답변보다 나에게 더 의미가 있습니다. 나는 이것을 몇 번 나 혼자 했어. – WakeUpScreaming

2

백업에 새 복사본에있는 모든 파일을 덮어 그래서 나는 몇 가지를 얻을 수 에 파일의 일부 이전 버전으로 전환 내 로컬 플랫폼에서 파일을 버전 1로 복원하십시오.

대신이 특정 버전의 변경 사항을 되돌려 놓아야합니다. 그 후에도 그 개정판의 변경 사항을 되돌릴 수 있어야합니다.

관련 문제