Subversion 분기의 코드를 병합하는 동안 이해가 안되는 것을보고 있습니다.Subversion 병합 실패
우리는 일부 기능에 대한 수정 프로그램을 구현 한 'experimental'브랜치가 있습니다. 일반 개발 트렁크에 평소와 같이 진행하면서 우리는 지난 2 주 동안 실험 분기에 해킹 진행
svn cp https://..../trunk https://.../branches/experimental
: 우리는 함께 가지 작업을 시작. 지점에서의 작업은 특정 "루트"폴더에서만 발생합니다 (usermngmt-II).
이제 분기 작업을 트렁크에 다시 병합 할 시간입니다. 병합 중에 나타나는 문제는 "실험 분기에서 결코 변경되지 않은 파일은 트렁크에서 완전히 통합되지 않습니다"라고 설명 할 수 있습니다.
$ svn merge --reintegrate ^/branches/experimental/usermgmnt-II/
Conflict discovered in 'webservices/usermngmt-ws-api/src/java/gr.neuropublic.gaia.usermngmt.ws.api/IUserMngmtService.java'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: df
--- /tmp/svn-9vbG0j Πεμ Απρ 11 11:27:54 2013
+++ webservices/usermngmt-ws-api/src/java/gr.neuropublic.gaia.usermngmt.ws.api/.svn/tmp/IUserMngmtService.java.8.tmp Πεμ Απρ 11 11:27:54 2013
@@ -49,7 +49,16 @@
public Pair<Integer, String> numOfUsers();
+<<<<<<< .working
+ public Pair<List<Map<String, String>>, String> allSubsInfo();
+=======
+>>>>>>> .merge-right.r4900
+ public Pair<List<Map<String, String>>, String> allGaiaSubsInfo();
+
+ public Pair<List<Map<String, String>>, String> subsUsersInfo(int subs_id);
+
+
@Local
그래서 전복은 '작업보고 : 폴더의 트렁크의 버전을 미러링하는 작업 폴더에서 시작
...
$ cd workOnTrunk
$ svn info
Path: .
URL: https://x.x.x.x/.../trunk/usermgmnt-II
...
$ svn update
At revision 4900.
$ svn status
$
는 ... 우리는 병합 명령을 실행 '버전 - 우리 작업 폴더의 버전 (위에서 본 것처럼 "트렁크"를 미러링 함)은 라인이있는 것으로보고됩니다 ...
public Pair<List<Map<String, String>>, String> allSubsInfo();
... 실험 분기의 버전 (병합 충돌 메시지를 올바르게 해독하는 경우)이 (a) "allSubsInfo"행이없고 (b) 있지만 대신 다른 두 그러나
public Pair<List<Map<String, String>>, String> allGaiaSubsInfo();
public Pair<List<Map<String, String>>, String> subsUsersInfo(int subs_id);
, 이것은 사실이 아니다 - 그것을 증명하기 위해, 우리는보고 방법에 대한 실험 지점에있는 파일의 내용을 인쇄하고 그렙에 "svn의 고양이"를 사용 :
$ svn cat ^/branches/experimental/usermgmnt-II/webservices/usermngmt-ws-api/src/java/gr.neuropublic.gaia.usermngmt.ws.api/IUserMngmtService.java | grep 'all.*SubsInfo'
$
"conflicted"파일은 "experimental"브랜치의 형태로 "allSubsInfo"또는 "allGa"인스턴스가 없음이 분명합니다 iaSubsInfo ". 사실, "svn merge"명령을 통해 생성 된 출력 파일 ...
$ grep allSubsInfo IUserMngmtService.java.merge-right.r4900
$
... 중 하나가 아닙니다. 실제로 파일의 두 버전을 추출하면 다음과 같습니다.
$ svn cat -r4900 ^/branches/experimental/usermgmnt-II/webservices/usermngmt-ws-api/src/java/gr.neuropublic.gaia.usermngmt.ws.api/IUserMngmtService.java > /var/tmp/experimental.java
$ svn cat ^/trunk/usermgmnt-II/webservices/usermngmt-ws-api/src/java/gr.neuropublic.gaia.usermngmt.ws.api/IUserMngmtService.java > /var/tmp/trunk.java
$ diff -u /var/tmp/experimental.java /var/tmp/trunk.java
--- /var/tmp/experimental.java 2013-04-11 11:49:13.000000000 +0300
+++ /var/tmp/trunk.java 2013-04-11 11:49:58.000000000 +0300
@@ -49,6 +49,13 @@
public Pair<Integer, String> numOfUsers();
+ public Pair<List<Map<String, String>>, String> allSubsInfo();
+
+ public Pair<List<Map<String, String>>, String> allGaiaSubsInfo();
+
+ public Pair<List<Map<String, String>>, String> subsUsersInfo(int subs_id);
+
+
@Local
public interface ILocal extends IUserMngmtService {}
... 트렁크의 버전이 단순히 3 줄을 추가 한 것을 볼 수 있습니다. 그러므로 "병합"프로세스는 실험 브랜치에서이 파일의 버전과 관련하여 "아무 작업도하지 말아야합니다."- "실험 브랜치에서이 파일에 커밋 된 것이 아무것도 없습니다."그대로 두십시오.
도움/제안 사항에 미리 감사드립니다.
P. 중요 할 경우 Subversion 1.6을 사용하고 있습니다. 서버에서 버전 1.6.11을 더 spefically 사용하고 클라이언트 컴퓨터에서 명령 줄 인터페이스 1.6.17 버전을 사용합니다. 문제가되는 동작은 최신 TortoiseSVN을 사용할 때도 나타납니다 (그래서이 버전이 특정 버전인지 의심 스럽습니다).
재 통합하기 전에 트렁크 변경 사항을 지점에 병합 했습니까? – maxim1000
@ maxim1000 : 트렁크의 버전 "usermgmnt-II"를 experimental 브랜치 (--reintegrate없이)에 병합하려고하면 정확하게 동일한 충돌이 발생합니다 : https://gist.github.com/anonymous/5362364 – ttsiodras
Merge'trunk' 'experimental'으로,'trunk' 버전의 충돌 파일을 가져 와서'experimental'을 다시 트렁크에 병합 하시겠습니까? –