문제

Subversion을 소스 제어로 사용하는 오픈 소스 프로젝트에 로컬 변경 사항이 있습니다.(원래 프로젝트 저장소에 대한 커밋 액세스 권한이 없습니다.)

내 변경으로 파일이 추가되었지만 이 파일은 "svn diff" 출력에 포함되지 않았습니다.(새 파일이 일반 텍스트가 아닌 바이너리라는 점은 주목할 가치가 있습니다.)

어떻게 만들 수 있나요? 반점 새 파일이 포함되어 있습니까?


 $ svn st
   A      tests/foo.zip
 $ svn diff
 $
도움이 되었습니까?

해결책

귀하의 파일이 바이너리라는 사실 때문에 파일이 표시되지 않는 것 같습니다.Subversion의 diff 명령은 텍스트 diff/패치만 수행합니다(Subversion이 내부적으로 버전 간 바이너리 파일 차이를 효율적으로 처리할 수 있음에도 불구하고).

다른 팁

나는 Pozsar와 비슷한 행동을 경험했습니다. 그리고 그의 대답은 정상적인 SVN Diff -Force보다 저를 위해 더 잘 작동했습니다. 그러나 DOS 기계 (예 : Cygwin을 통해)에서 실행하는 경우 그의 답변을 약간 수정해야 할 수도 있습니다. 다음 diff + 패치는 -이진 arg를 사용하여 Cygwin에서 내 텍스트 + 이진 파일을 패치하는 데 작동했습니다.

svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff

patch -p0 --binary -i mybinarydiff.diff

diff 명령에는 -포스 옵션이 있지만 내 컴퓨터의 바이너리에 대한 잘못된 패치 파일을 생성합니다. -diff-cmd 옵션과 함께 사용하면 다음과 같이 작동합니다.

svn diff --force --diff-cmd /usr/bin/diff -x -au

나는 이것이 당신이 원하는 것을 정확하게 생산한다고 생각합니다.

패치를 구축하는 경우 누락 된 파일을 비어있는 것으로 취급하는 -new-file 옵션과 함께 일반 오래된 'diff'를 사용할 수 있습니다.

이 옵션의 구문은 실제로 사용중인 일반 기존 Diff 버전에 따라 달라질 수 있습니다.

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