development

SVN에서 업데이트 할 때 항상 (강제) 로컬 변경 사항을 덮어 쓸 수 있습니까?

big-blog 2020. 12. 3. 08:08
반응형

SVN에서 업데이트 할 때 항상 (강제) 로컬 변경 사항을 덮어 쓸 수 있습니까? 충돌을 무시 하시겠습니까?


나는 내 지점에서 작업해야한다는 것을 알고 있지만 우리 둘은 프로젝트의 같은 지점에 있습니다. Dev 중 하나가 커밋을했고 SVN의 최신 버전으로 로컬 사본을 업데이트하고 싶었습니다. 'svn update'를 실행하면 다음과 같은 결과가 나타납니다.

Restored 'index.html'
U    somescript.php
Conflict discovered in file.xml'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: 

로컬 변경 사항을 덮어 쓰고 Subversion에서 최신 파일을 가져오고 모든 충돌을 무시하는 옵션 / 방법이 있습니까?

Stack의 다른 게시물 중 일부를 살펴 봤는데 모두 질문에 답하지 않습니다. 그들은 프로젝트를 삭제하고 다시 체크 아웃하라고하는데, 그것이 최선의 방법인지 아닌지 ...하지만 왜 업데이트를 강제 할 수 없는지에 대해 더 자세한 정보를 원합니다. 감사

편집하다:

그래서 '모든 옵션 표시'를 선택했습니다.

(s) 모든 옵션 표시 : s

  (e)  edit             - change merged file in an editor
  (df) diff-full        - show all changes made to merged file
  (r)  resolved         - accept merged version of file

  (dc) display-conflict - show all conflicts (ignoring merged version)
  (mc) mine-conflict    - accept my version for all conflicts (same)
  (tc) theirs-conflict  - accept their version for all conflicts (same)

  (mf) mine-full        - accept my version of entire file (even non-conflicts)
  (tf) theirs-full      - accept their version of entire file (same)

  (p)  postpone         - mark the conflict to be resolved later
  (l)  launch           - launch external tool to resolve conflict
  (s)  show all         - show this list

'tc'옵션을 선택해야할까요?


정말로 HEAD 사본 (repos의 최신 개정판)을 원한다면

svn revert -R <path> // discard all your changes inside path (recursive)
svn update           // get latest revision of all files (recursive)

그게 다야.

마지막 '커밋'이후의 모든 변경 사항을 잃게됩니다.

편집 : 를 추가 -R <path>Isu_guy 응답 완전성을 위해 돕는 독자는 하나의 완전한 답변을 찾을


tato의 대답은 절대적으로 정확하며 그의주의에 유의하십시오. 모든 변경 사항을 잃게됩니다. 구문과 약간의 뉘앙스에 대한 설명

svn revert는 기본적으로 비재 귀적이며 작업 할 경로가 필요합니다. 만들려면 "-R"을 재귀 적으로 추가합니다. 현재 디렉토리에있는 경우 아래 "경로"에 "./"를 사용하거나 "/ path_to_your_folder"와 같은 절대 경로를 사용하십시오.

svn revert -R <path>

svn 업데이트는 재귀 적입니다. 디렉토리에있는 경우 경로가 전혀 필요하지 않습니다.

svn update

나는 이것을 할 것이다 :

svn up --accept tf

또는

svn up --accept theirs-full

즉, 작업 복사본의 루트에서 "svn revert -R"다음 "svn up"도 트릭을 수행합니다. 제 경우에는 다양한 프로젝트에 대해 여러 개의 WC가 있으므로 컴퓨터를 시작할 때 모든 것을 업데이트하는 쉘 스크립트를 실행합니다. 나는 accept를 사용하지 않고 자동 프로세스이기 때문에 해결을 연기하기 위해 "--accept p"를 사용합니다. 그런 다음 SVN이 자체적으로 자동으로 병합 할 수없는 충돌을 병합합니다 (보통 되돌림이 포함되지만 상황에 따라 다름). ).


svn 1.6.11 사용 (CentOS 6.4에서 제공) Carnix의 명령은 다음과 같습니다.

svn up --accept theirs-full

(평판이 부족하여 댓글을 달 수 없습니다)


Answering your first question. No. But you can override your local files by running the following commands from the root of your project:

svn revert -R .
svn update

This worked on my mac with svn 1.7.19 and ubuntu with svn 1.8.8

참고URL : https://stackoverflow.com/questions/3709197/is-it-possible-to-always-force-overwrite-local-changes-when-updating-from-svn

반응형