programing tip

svn cp 또는 svn mv를 사용할 때 패치가 적용되는 svn diff 생성 파일을 만드는 방법은 무엇입니까?

itbloger 2020. 11. 21. 14:36
반응형

svn cp 또는 svn mv를 사용할 때 패치가 적용되는 svn diff 생성 파일을 만드는 방법은 무엇입니까?


시나리오는 다음과 같습니다.

  1. svn cp 또는 mv 일부 파일
  2. 그 파일을 수정
  3. svn diff> mypatch

다른 컴퓨터에서 (동일한 작업 복사본이지만 변경 사항 없음) :

  1. mypatch를 적용 해보십시오.
  2. 실패-> 존재하지 않는 파일을 수정하려고합니다.

이 경우 svn diff에서 패치 적용 가능한 패치를 생성하거나 svn diff에서 생성 한 패치를 깔끔하게 적용하려면 어떻게해야합니까? 커밋 할 수 없습니다. 저는 mergeinfo를 보존하고 싶습니다 (분명한 해결 방법은 이전 파일에 연결하지 않고 파일을 완전히 새로운 파일로 추가하는 것이므로).


Subversion을 사용하면 사용할 diff 바이너리와 전달할 매개 변수를 지정할 수 있습니다. svn diff에 대한 매뉴얼참조하십시오 .

svn diff에서 일반 패치 파일을 생성하고 싶으므로 svn diff가 일반 diff처럼 보이기를 원할 것입니다. 이 시도:

svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
...
patch -p0 < mypatch

개념의 증거:

echo "newline" >> README.txt
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
cp README.txt README.txt.patched
svn revert README.txt
patch -p0 < mypatch
diff README.txt README.txt.patched

패치 후 두 파일에 차이가 없습니다.


패치에서 svn 속성도 제거하려면 옵션이 있습니다.

svn diff --patch-compatible > mypatch.diff

svn help diff 말한다 :

  --patch-compatible   : generate diff suitable for generic third-party
                         patch tools; currently the same as
                         --show-copies-as-adds --ignore-properties

이 방법으로 만든 패치는 좋은 오래된 일반 patch유틸리티 와 호환되어야 합니다.


svn diff 웹 페이지 --show-copies-as-adds에 언급되고 svn 옵션 페이지 에 설명 된 옵션 을 사용해 보셨습니까 ?.


특정 시나리오를 이해하지 못한 상태에서이 작업을 수행하려는 이유를 식별하기 위해 열심히 노력하고 있습니다. 다른 사용자 / 애플리케이션에 영향을주지 않도록 격리 된 환경에서 제어 된 변경을 수행하려는 느낌을받습니다.

이 문제를 다음과 같이 해결할 수 있습니까?

  • 코드 변경을위한 브랜치 생성
  • 지점에서 복사 / 이동 및 변경 수행
  • 상대방이이 새 코드 분기로 전환하고이 분기를 계속 공유하도록합니다.

두 가지 모두 변경 사항에 동의하면 --reintegrate 인수와 rm 분기를 사용하여 트렁크로 다시 병합됩니까?

* 병합 정보 유지 * 버전 관리의 복사 / 이동 및 변경 사항 식별 * 다른 사용자로부터 변경 사항 격리 * 변경 사항을 더 추가하고 업데이트 할 수 있으므로 2 단계에서 불완전한 변경 사항이 문제가되는 것을 방지합니다.

참고 URL : https://stackoverflow.com/questions/317649/how-to-make-svn-diff-produce-file-that-patch-would-apply-when-svn-cp-or-svn-mv

반응형