이 자식 전용 동작입니까?
동료와 토론 한 후 방금 시도했지만 SVN은 문제없이 처리합니다 . 두 줄을 수정했습니다.
바자, darcs, 자식 및 수은에 대해 여러 VCS의 병합 기능이 여기에서 테스트됩니다 : https://github.com/mndrix/merge-this
darcs만이 "인접한 줄"사례를 성공적으로 병합 한 것 같습니다.
파일에 인접한 변경 사항을 적용하는 것은 어려운 문제가 아닙니다. 이 행동은 의도적으로 선택되었다고 생각합니다.
인접한 줄을 수정하면 충돌이 발생한다고 누가 결정합니까?
나는 이것이 당신이 그것을 보도록 강요하는 것이라고 생각 합니다 .
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
마스터의 수정 번호 1 :
int max = MAX_ITEMS/2; // Do stuff only on the first half
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
지점에서 병합 된 수정 번호 2 :
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max/2; i++) // max/2: only on 1st half
do_stuff(i);
병합 후에는 원하지 않습니다.
int max = MAX_ITEMS/2; // Do stuff only on the first half
for(unsigned int i = 0; i < max/2; i++) // max/2: only on 1st half
do_stuff(i);
이 동작을 기능으로보기
자식 병합 동작을 유리하게 설정할 수 있습니다. 두 줄의 일관성을 유지해야하지만 컴파일 시간에 (테스트 초기 또는 기타) 감지 할 수없는 경우 두 줄을 결합 할 수 있습니다.
이것을 다시 쓰십시오 ... :
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
// Need to do something else
do_something_else(r);
...이에:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
do_something_else(r); // Need to do something else
따라서 Modif 1을 병합하면 ... :
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i)/2; // we need only the half
do_something_else(r); // Need to do something else
... Modif 2와 함께 ... :
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
if(r < 0) // do_stuff can return an error
handle_error(r);
do_something_else(r/2); // Need to do something else
... git은 충돌을 일으키고 그것을 보도록 강요 할 것입니다.