2011-01-28 7 views
0

기존의 태그에 트렁크를 병합 : ProjectPool이 PROJECTA 및 ProjectB의 특정 태그가 포함Subversion은 내가 현재 내 SVN - 저장소에 다음과 같은 설정을 데

-Root 
--ProjectA 
----trunk 
----tags 
----branches 
--ProjectB 
----trunk 
----tags 
----branches 
--ProjectPool 
----projectA 
----projectB 

.

이제 ProjectPool의 태그가 수시로 변경됩니다. 즉, 특정 트렁크 버전의 ProjectA가 커밋됨을 의미하며이 수정본을 Root/ProjectPool/projectA에 복사하려고합니다. 새 태그는 이전 태그를 대체해야하지만 사용할 수있는 기록이 있어야합니다.

내 컴퓨터에는 분기가 없기 때문에 트렁크를 수시로 변경해야합니다. 그러나 저장소에서 완전히 수행되어야합니다. (체크인/체크 아웃 할 필요 없음)

이렇게하면 Root/ProjectPool/projectA의 기록을 살펴보고 변경 사항을 볼 수 있습니다. 높은 수준의 개정 기록의 종류.

UPDATE :
나는, 내가 ProjectPool의 프로젝트의 사본의 가지 것을 말할 것입니다 지금까지 도착 된 답변을 본 후 명확한 질문 -.-
물어 잊었 미안 해요 원래 프로젝트. 그런 다음 ProjectPool에서 새 버전이 필요할 때마다 트렁크에서 병합 할 수있었습니다.
작업 복사본을 먼저 만들 필요없이 "온라인"병합을 수행 할 수있는 방법이 있다면 지금 질문입니다.

답변

7

> 이제 ProjectPool의 태그가 수시로 변경됩니다.

Tags은 획기적인 변화입니다. 각 릴리스마다 새 태그를 만들어야합니다.

> >이 PROJECTA의 특정 트렁크 버전 최선을 다하고 의미 나는 루트/ProjectPool/PROJECTA에이 버전에서 사본을 만들려고합니다. 새 태그는 이전 태그를 대체해야하지만 사용할 수있는 기록이 있어야합니다.

은 당신이 여기에서 필요로하는 것은 당신이 반복적으로 ProjectAtrunk으로 병합 할 수 있습니다 ProjectPool에서 ProjectAbranch입니다. 이

svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH] 

같은 것을 함께 참조 : http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.merge.html

> >이 날 루트/ProjectPool/PROJECTA의 역사로보고 그것의 변화를 볼 수있다. 높은 수준의 개정 기록의 종류.

디렉토리 구조를 진행 한 것처럼 보입니다. 가능하면이 구조를 따르라고 제안합니다.

-Root 
    +--ProjectPool 
     +--ProjectA 
      +----trunk 
      +----tags 
      +----branches 
     +--ProjectB 
      +----trunk 
      +----tags 
      +----branches 

당신은 자신의 tag들에 PROJECTA 및 ProjectB을 해제 할 수 있습니다. 최신 개발은 trunk에서 계속됩니다. 모든 측면 개발 또는 스폿 릴리즈의 경우 분기 디렉토리에 branch을 만듭니다. 분기가 완료되면 다시 분기에 병합합니다. 이 방법으로 귀하의 trunk은 항상 모든 개정 및 변경 사항을 반영합니다. 그리고, 이것은보다 편리합니다 (그리고 전통적인 것입니다).

희망이 도움이됩니다.

특별한주의 :

+1

+1/안전한 레포 레이아웃에 대한 완벽한 설명 –

+0

트렁크와 반복적으로 병합해야하는 'ProjectPool'아래에 지점이 필요하다고 썼습니다. 바로 그 점이 내가'결코 바꿀 수없는 내 컴퓨터에 지사가있는 것과 같이, 때로는 트렁크를 그 안에 합친 것 '을 쓸 때 의미했던 것입니다. 나는 지금 작업 복사본을 얻을 필요없이 병합 된 "온라인"으로가는 길을 찾고있다. – MOnsDaR

+0

@MOnsDaR 원하는 것은'merge'와'commit' 콤보 명령입니다. 그게 가능하다면 나는 심각하게 의심한다. 병합 완료 프로세스는 그 순서대로'merge','resolve' 및'commit'입니다. 나는 당신의 경우'resolve'가 없지만'SVN'은 그 가능성을 짐작할 수 없다는 것을 이해합니다. 그래서, 당신이 명시 적으로 저지른다고 생각합니다. URL에 언급 된 명령은 현재 디렉토리에 병합됩니다. 따라서 자신감이 있다면 쉘 스크립트를 작성할 수 있습니다. 그것은 합병하고 커밋합니다. 그러나 여전히 다운로드가있을 것입니다. – Nishant

0

당신은 정말 내가 당신이 merge 하위 명령의 알고 있는지 모르겠어요하지만 당신이 필요로하는 하나의 질문을하지 않습니다 --accept 매개 변수로; 나는 또한 서브 버전 책의 Branching and merging 장을 읽어 보시기 바랍니다

C:\>svn help merge 
[...] 
    --accept ARG    : specify automatic conflict resolution action 
          ('postpone', 'base', 'mine-conflict', 
          'theirs-conflict', 'mine-full', 'theirs-full', 
          'edit', 'launch') 

: 당신은 자동화 된 분쟁 해결을 얻기 위해 필요.

관련 문제