문제

CVS에서는 작업 사본 (WC)이 특정 지점에 있습니다 ( "FOO"라고합니다). 다른 개발자에 의해 다른 변경 사항이 Foo로 확인되었습니다. 나는 내 WC와 업스트림 상태의 FOO 사이에 차이를하고 싶습니다. 일반적으로 트렁크 (머리)에서 작업 할 때는 CVS 차이 만 수행합니다. 괜찮습니다. 그러나 어떤 이유로 든 분기에서 평범한 CVS 차이가있을 때는 차이가 비어 있습니다. "CVS Diff -r foo"를 사용하려고하면 Diff가 나타나지만 반전됩니다. 업스트림 첨가는 마이너스로 표시되며 상류 제거는 플러스로 표시됩니다.

(1) CVS가 "다른 방법으로"(상류 추가의 경우) 또는 (2) 패치 (일반적으로)를 뒤집는 것입니다.

도움이 되었습니까?

해결책

이것의 주요 목적이 Central Repo에서 "What 's Up"을 확인하는 것이라면, 업데이트하기 전에 최신 변경 사항을 탐색하고 최신 변경 사항을 볼 수있는 기능적 CVS 뷰어/브라우저/웹 사물을 스스로 할 것을 제안합니다. 그러나 당신이 가진 모든 것이 명령 줄 CV라고 가정하면, 나는 당신에게 어쨌든 해결책을 주려고 노력할 것입니다 :)

그래서, 당신이 여기있는 것은 지점입니다 foo 그게 나왔습니다 A -> B, 어디 B 다른 개발자의 체크인 후 (서버에서) 지점의 상태이며 A 마지막으로 작업 사본을 업데이트 한 상태입니다.

평원을 할 때 cvs diff 이 상황에서는 지역 변경 사항이 표시됩니다 비교 A ~부터 A 당신이 체크 아웃 한 것입니다. 로컬 CVS 상태는 각 파일이 FOO 지점의 A 개정판에서 나오고 CVS 클라이언트가 서버에서 해당 개정을 다운로드 할 때 발생 함을 보여줍니다. 귀하의 경우에 나는 당신이 당신의 이후로 지역 변경이 없다고 생각합니다. cvs diff 비었다.

그런 다음, 당신이 할 때 cvs diff -r foo 당신은 당신의 현지에서 확산되고 있습니다 A 서버의 (또는 A+변경) foo (현재 B) - 서버에서 얻는 데 필요한 변경 사항 B 너의 ~에게 A+changes 다른 개발자의 체크인과 정확히 반대이며 자신의 로컬 변경 사항입니다.

이제 B (또는 Tip-of-Foo)가 A (현재 체크 아웃 한 모든 것의 깨끗한 버전)와 어떻게 비교되는지 정말로 알고 싶다면, 내가해야 할 것은 작업 사본에 태그를 설정하는 것입니다. 그런 다음 해당 지점의 상태에 따라 해당 태그가 다릅니다. 이 같은:

cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1

다른 팁

아마도 Patchutils 패키지의 Interdiff를 사용하여 원하는 작업을 수행 할 수 있습니다.

주어진 파일의 트렁크에서 무엇이 변경되었는지 확인하기 위해 종종이 방법을 사용합니다.

cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null

분기에서 일부 임시 파일로 파일을 내보내고 작업 사본 과이 임시 파일을 차이로 내보낼 수 있습니다. 가장 쉬운 방법 인 것 같습니다.

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