하나의 가능한 설명은 변경 세트의 일부를 잊어 버릴 수 있다는 것입니다.
체크 아웃 한 하위 디렉터리 외부의 표지 파일을 병합하는 변경 집합이 있으면 해당 파일을 병합하는 것을 잊어 버릴 가능성이 항상 있습니다. 예를 들어
, 당신은 트렁크에이 같은 커밋이있는 경우 :
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Change some stuff
그리고 당신은 다음 지점에서 디렉토리 subdir1의 체크 아웃을 "안정적"다음과 같이 R5를 변경 세트를 병합 할 수 있습니다 : 다시 가서 로그를 보면
$ svn co http://example.com/svn/branches/stable/subdir1
$ cd subdir1
$ svn merge -c 5 http://example.com/svn/trunk/subdir1 .
--- Merging r5 into '.':
U main.c
$ svn ci -m"Merged r5 from trunk"
그러나 이것은 단지, 여전히 개정 5. 나쁜의 절반을 병합합니다, 지금이 표시됩니다 :
$ svn log -g http://example.com/svn/
...
------------------------------------------------------------------------
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Merged via: r6
Change some stuff
전체 커밋을 병합 한 것처럼 보입니다. 사실 커밋을 병합 한 것 같습니다. 물론 r6은 stable 브랜치에서 오직 하나의 파일 만 변경되었음을 보여줍니다.
------------------------------------------------------------------------
r6 | rich | 2009-04-16 22:28:16 +0200 (Thu, 16 Apr 2009) | 1 line
Changed paths:
M /branches/stable/subdir2
M /branches/stable/subdir2/main.c
Merge revision 5 from trunk
누군가가 변경 세트의 일부만 병합되고 나머지는 수행해야한다는 것을 기억하거나 주목해야합니다. 하위 디렉토리 병합을 사용하지 않으면이 문제가 발생하지 않습니다.
실제로 이전 커밋을 모두 병합하지 않으려는 경우가 있으며 위의 시나리오는 의도 한대로입니다. 이 경우 의도를 설명하는 커밋 메시지를 추가하는 것이 가장 좋습니다.
나는 제목을 좋아한다. – Dunaril