Tortoise의 비재 귀적 커밋은 어떻게 작동합니까?


110

다른 브랜치 (폴더 구조가 완전히 다른)에서 병합 한 SVN 브랜치 (내 브랜치)의 복사본을 로컬로 체크 아웃했습니다. 따라서 기본적으로 많은 삭제 (오래된 파일)와 추가 (새 파일)가 있습니다.

저장소 (내 브랜치)에 병합을 커밋하려고 할 때 Tortoise는 말합니다.

이 커밋은 재귀 적이 지 않으며 커밋을 위해 선택된 이동 / 이름 변경된 폴더가 있습니다. 이러한 이동 / 이름 변경은 항상 저장소에서 재귀 적으로 수행됩니다. 그래도 커밋 하시겠습니까?

이 커밋을 진행해도 괜찮습니까? 그렇지 않다면 문제가 없도록 어떻게해야합니까?

또한 내가 추가 한 일부 파일의 경우 추가 한 후 변경했습니다 (성능에 영향을 미치는 경우).

답변:


129

Google에서 해결 방법을 찾았습니다. 커밋 창 ( "경고 팝업"이 아님)에서 F5를 누릅니다.

자세한 내용은 http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 를 참조하십시오.

26.08.2011 22:39에 Ryan J Ollos는 다음과 같이 썼습니다.

몇 달 동안 Commit을 시작할 때 다음 대화 상자가 나타나는 것을 보았습니다. 병합 후 커밋을 시도 할 때 자주 발생합니다.

하지만 최근에 제가 알아 차린 점은 취소 한 다음 파일 목록을 수동으로 새로 고치면 (F5) 두 번째 커밋을 시작할 때 메시지가 다시 표시되지 않는다는 것입니다. 커밋은 잘 성공하고 더 이상 문제가없는 것 같습니다.

커밋 대화 상자는 변경 알림을 위해 백그라운드 스레드에서 작업 복사본을 모니터링합니다. 이러한 알림은 파일이 수정 / 이동 / 이름이 변경된 경우 OS에 의해 전송됩니다. 이러한 알림이 수신되면 커밋 대화 상자에서 먼저 몇 가지 검사를 수행하여 대부분을 삭제할 수 있습니다. 알림이 확인되지 않고 커밋 대화 상자에 표시되지 않는 파일이 어떻게 든 변경되었음을 나타내는 경우 비 재귀 커밋으로 다시 전환됩니다. 예를 들어 다른 편집기에서 파일을 열고 커밋 대화 상자가 열려있는 동안 변경 사항을 저장하면 커밋 대화 상자에서 확인하지 않았더라도 해당 파일이 커밋됩니다 (표시되지 않음). F5 키를 눌러 대화 상자를 새로 고칠 때까지).

따라서 경고 대화 상자가 자주 표시되면 작업 복사본의 파일을 수정하는 다른 도구 / 앱이 실행 중인지 확인하십시오.

아시다시피 F5 키를 누르면 '비 재귀 플래그'가 재설정됩니다. 새로 고침 후 모든 파일을 다시 볼 수 있기 때문입니다. 대화 상자를 시작한 후에 수정 한 파일도 마찬가지입니다.

스테판


1
답변의 링크가 죽은 것 같습니다. 여기에 인터넷 아카이브에서 유효한 하나 web.archive.org/web/20150306224932/http://...은
buzz3791

1
방금 F5를 눌러 보았습니다. 결과는 이제 커밋 대화 상자 파일 목록에 대부분의 파일이 두 번 (정확히 동일한 경로와 이름으로) 표시되고 커밋을 시도 할 때 경고 메시지가 계속 나타납니다.
OR Mapper

26

동일한 문제가 있었지만 '커밋시 무시'로 표시 한 파일의 변경 사항을 되돌려 문제를 해결했습니다.

이 파일을 되 돌리면 tortoisesvn은 병합에서 다른 모든 파일을 커밋 할 수있었습니다.


실제 이유는 무엇입니까? 이러한 파일이 문제를 일으키는 이유 또는 방법은 무엇입니까?
Mannoj

5

이 커밋을 진행해도 괜찮습니까?

아니요, 커밋은 WC- 트리의 모든 변경 사항을 무시하고 루트 수준 변경 사항 (깨진 병합) 만 반영합니다.

처음에 비재 귀적으로 체크 아웃 할 때 오류가 발생했습니다. 당신은 할 수 전체 커밋, 좋은을 수행하려고 사용 --depth infinity하는 CLI에서 매개 변수 또는 TortoiseSVN을 GUI에서이 스위치를 찾을 수 있습니다.

svn commit --depth infinity . -m "Merge"

1
"초기에 비 재귀 체크 아웃시 오류가 발생했습니다." 아니요, 반드시 그런 것은 아닙니다. 평소와 똑같은 방식으로 화장실을 확인했지만 갑자기이 문제가 계속 발생합니다. 사실, 이것은 아래의 대체 솔루션의 경우에는 전혀 해당되지 않는 것 같습니다.
Keith M

이것은 완전히 거짓입니다. 나는 때때로이 메시지를 받고, 나는 항상했던 것과 같은 방식으로 내 작업 카피를 재귀 적으로 체크 아웃했다
1800 INFORMATION

1

또한 SVN을 추가 한 일부 파일의 경우 추가 한 후 변경했습니다 (성에 영향을 미치는 경우).

제 경우에는 정확히 메시지가 나타나는 원인이었으며 커밋을 위해 해당 파일을 선택 취소했습니다.

몇 개의 파일 만 영향을받는 경우에만 안전하게 작동하는 추악한 솔루션 :

  1. 변경된 파일의 복사본 만들기
  2. 변경된 파일 되돌리기
  3. 병합 / 재 통합 커밋
  4. 변경된 파일을 원래 위치로 다시 복사

자신에게 알림 : 대상 (트렁크)이 깨끗한 경우에만 분기를 다시 통합하십시오.


1

TortoiseSVN이 커밋을 호출하기 전에 일종의 유효성 검사를 수행하는 것처럼 보입니다. 좋지만 오류 메시지는 매우 명확하지 않습니다.

이 문제에 직면했을 때 다시 svn 명령 줄을 사용하여 커밋했습니다. 폴더 중 하나가 최신 상태가 아니기 때문에 커밋에 실패했습니다. 해당 폴더 만 업데이트 한 후 "svn commit"을 다시 한 번 실행했습니다.

편집 : 추신 : 사용하기 전에 "커밋시 무시"로 표시된 파일이 없는지 확인하십시오. "Ignore on commit"은 거북이와 관련이 있으며 SVN commit은 이러한 변경 사항도 선택합니다.


1

나를 위해 일했기 때문에 이것을 게시 할 것이라고 생각했습니다 ...

그 이유는 내가 만든 새 프로젝트 중 하나의 이름을 부분적으로 변경했고 어떤 이유로 든 모두 커밋 화면에 "Missing"으로 표시 되었기 때문입니다.

프로젝트와 폴더 (SVN이 체크 표시)를 제거하고 다시 새 프로젝트로 넣은 후 갑자기 모든 "Missing"이 "Added"로 바뀌었고 커밋은 아무런 경고없이 잘 실행되었습니다. .

도움이 되었기를 바랍니다!


1

이 문제를 보았고 원인은 명백한 이유없이 추가 된 상태가없는 몇 개의 추가 된 파일이었습니다. 상위 폴더가 '추가됨'으로 올바르게 표시되었지만 '정상'이었습니다. 나는 그 '정상적인'변경 사항을 되 돌린 다음 수동으로 다시 수행했습니다. 이로 인해 추가 된 각 항목이 커밋 목록에 두 번 표시되지만 오류가 해결되고 모든 것이 현재 작동하는 것처럼 보입니다.

다른 답변에서와 같이 커밋시 무시와 관련이 없었으며 TortoiseSVN의 버그처럼 보였습니다.


내가 알 수 있듯이 TortoiseSVN은 파일을 재귀 적으로 이동하지 않습니다. 폴더를 이동하면 폴더 기록이 변경되지만 그 안의 파일은 변경되지 않습니다. 즉, TortoiseSVN을 사용하여 폴더를 이동하려면 원하는 대상에 폴더를 다시 만들고 폴더를 추가 한 다음 원본 폴더의 내용을 새 폴더로 이동해야합니다. 또는 명령 줄을 사용하십시오.
Bradley Singer

나는 이것이 이동이 아니라 병합에서 나온 것이라고 믿습니다. 유사한 작업이 아니면 나는 따르지 않습니다.
Chris

0

문제는 정보가 트리에서 위로 이동했기 때문에 병합 정보가 누군가에 의해 또는 자동으로 삭제된다는 것입니다. 다시 병합하려면 당분간 작동합니다. 그러나 다른 모든 분기는 병합되지 않은 분기에 문제가 발생합니다. SVN은 일부 코드를 풀고 이미 제출 된 코드를 다시 병합합니다.

따라서 해당 파일을 되돌리고 다시 변경하면 작동 할 수 있지만 변경 사항을 커밋해서는 안됩니다.


0

나는 똑같은 문제가 있었다. 모든 파일을 선택하는 대신 버전 관리를 클릭했고 모든 것이 잘 작동했습니다. 제 경우에는 버전 관리 옵션이 모든 파일을 선택 했으므로 이제 모든 것이 정상입니다.


-4

tortoisesvn에 대한 옵션을 모르지만 명령 줄을 사용할 수 있습니다.

svn commit --non-recursive [folder]

greeings 작업을 좋아하는 것처럼 영혼이 작동합니다.


다른 답변은 이것이 실제로 커밋하려는 것을 커밋하지 않을 것이라고 말합니다.
Keith M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.