들어오는 변경 사항을 수락하기 전에 동료가 변경 한 내용을보고 싶습니다.
그래서 나는 상태를 얻는 것으로 시작합니다
svn st -u
… 수신 변경 사항이 있음을 알려줍니다.
* 9803 incomingChanges.html
M 9803 localChanges.html
M * 9803 localAndIncoming.html
내가 바꾼 것을 볼 수 있습니다
svn diff localChanges.html
… 그러나 localAndIncoming.html
변경된 내용과 작업 사본과 다른 점을 어떻게 보여줄 수 있습니까?
답변
나는 당신이 필요로하는 것이 믿습니다.
svn diff -rBASE:HEAD
답변
FYI svn diff
는 .svn
라이브 리포지토리 버전이 아닌 디렉토리에 저장된 수정되지 않은 파일을 기반으로 diff를 제공합니다 .
svn update
subversion을 사용하여 업데이트를 시도하고 병합 할 수는 있지만 실행할 수는 svn diff
있지만 원하는대로 깨끗하지는 않습니다.
마지막으로 svn diff
repo에서의 diffing을 지원합니다. 예:
svn diff svn://svnserver/repo/localChanges.html -r REV_NO
HEAD와 전달 된 개정판을 비교하는 기본값입니다.
답변
와 TortoiseSVN을 (Windows를 사용하는 경우)
-
로그 화면을 불러옵니다
-
헤드 리비전 선택
-
localAndIncoming.html을 마우스 오른쪽 버튼으로 클릭하십시오.
-
작업 사본과 비교를 선택하십시오.
답변
실제로 새 버전을 다운로드 할 때까지는 실제로 할 수 없습니다. 이와 같은 제한은 최근 새로운 유형의 소스 제어가 대중화되는 큰 이유 중 하나였습니다. 이를 분산 소스 제어라고합니다.
이 새로운 양식을 사용하면 자체 로컬 리포지토리가 있으며 기본 리포지토리에서 변경 사항을 가져 와서 diff를 실행할 수 있습니다. 변경 사항이 마음에 들지 않으면 자체 리포지토리를 되돌릴 수 있습니다.
그리고 그래, 나는 당신이 제품을 전환하는 것이 최적의 해결책은 아니라고 제안하지만 그것은 결코 해결책이 아닙니다.
답변
새 폴더에서 다른 체크 아웃을 수행하십시오.
cd ..
svn checkout /path/to/repo clean_working_copy
clean_working_copy를 재사용하는 경우 전에 업데이트하는 것을 잊지 마십시오
svn update clean_working_copy
그런 다음 파일을 clean_working_copy의 파일과 비교하십시오.
diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html
또는 선호하는 3-way diff (광산은 kdiff3)
kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
답변
나는 생각한다
svn diff -r HEAD
거의 원하는 것을 제공합니다. 유일한 것은 +와-가 당신이 기대하는 것에 비해 반대로된다는 것입니다.