하나의 changeset에는 있지만 그 부모에는없는 버그가 있습니다. 문제가 시작되는 곳을보기 위해 조금씩 "업데이트"할 수있는 몇 가지 기능이 있습니까?Hg : 라인별로 업데이트 하시겠습니까?
예를 들어 diff가 함수 A, B 및 C의 변경 사항 인 경우 문제를 진단하기 위해 변경 사항을 적용한 후에 테스트 스위트를 실행합니다.
하나의 changeset에는 있지만 그 부모에는없는 버그가 있습니다. 문제가 시작되는 곳을보기 위해 조금씩 "업데이트"할 수있는 몇 가지 기능이 있습니까?Hg : 라인별로 업데이트 하시겠습니까?
예를 들어 diff가 함수 A, B 및 C의 변경 사항 인 경우 문제를 진단하기 위해 변경 사항을 적용한 후에 테스트 스위트를 실행합니다.
hg diff -r firstrev -r secondrev
을 사용하고 해당 기능과 관련된 비트로만 출력을 필터링 한 다음 패치를 차례로 단계별로 실행할 수 있습니다.
또는이 목적으로 설계된 bisect 확장을 사용할 수 있습니다. 특정 기능과 관련된 변경 사항이 아니라 코드베이스의 모든 변경 사항을 제공합니다. 함수를 변경하는 rev 만 추출한 다음 해당 개정에 대해서만 bisection 검색을 수행하면이를 개선 할 수 있습니다.
대답은 : 그것은 당신이 넣어 기꺼이 얼마나 많은 육체 노동 따라
당신 수 할이 소매를 걷어 및 대화식 모드에서 다락방 확장자를 사용합니다.. TortoiseHg를 사용하고 있다면 이미 가지고 있고 그냥 hgtk shelve
을 실행하면 한 번에 하나의 diff 행크를 중심으로 변경 사항을 이동할 수 있습니다. (덩어리가 일련의 연속적인 diff 파일이 됨)
단일 diff를 제공하는 다른 diff 패치 도구가 많이 있습니다. 자세한 내용이 필요한 경우 알려주십시오.
즐겁게, bisect
과 같은 자동화 된 솔루션을 사용할 수 없다는 점에 대해 이야기 해 봅니다. 변경 세트의 절반 만 컴파일해야하는 것은 아니기 때문입니다. 더 나쁜 것은, 만약 그들이 컴파일,하지만 논리 오류가 있습니까? 여기에 큰 커밋, 간단한 최악의 시나리오 ...
void main(){
Foo *x = malloc(128);
frobFoo(&x);
- free(x); //line 4 removed in changeset
}
void frobFoo(Foo ** x){
+ free(*x); //line 8 added in changeset
}
양분이이 변경 집합 수준 만의로 아래로 아래로 총에 맞았이야,하지만 난 많은 작은 커밋이 적은 선호하는 점을 지적거야 정확히 때문에 양분 같은 것들 (그리고 일반적으로 병합)은 더 큰 변경 집합으로 인해 더 어려워집니다. –