문제

본 이 말을 많이 주위에 전복(그리고 나는 일반적인 저장소)토의한다.사용 SVN 한 프로젝트가 지난 몇 년 동안,그러나 난 결코 파악 완전한 개념의 이러한 디렉토리입니다.

그들은 무엇을 의미합니까?

도움이 되었습니까?

해결책

Hmm,확실하지 않다 나도 동의 닉으로 다시 태그와 비슷하지.태그은 마커

  • 트렁크 주체의 개발,에서 발생하는 프로젝트의 시작할 때까지 존재한다.

  • 의 복사본 코드에서 파생된 특정 지점에서 트렁크에 사용되는 주요 변경 사항을 적용하는 코드의 무결성을 유지하면서 코드에서 트렁크가 있습니다.는 경우 주요 변경 내용 작업 계획에 따라,그들은 일반적으로 병합으로 다시 트렁크가 있습니다.

  • 태그 될 것입 시점에 줄기 또는 지점을하고자하는 보호구역도 있습니다.두 가지 주요 이유를 보존하는 것 중 하나 이것은 중요한 소프트웨어의 출시는지 여부,알파,베타,RC 또는 RTM,또는 이가 가장 안정적인 점하기 전에 소프트웨어의 주요 개정 트렁크에 적용되었습니다.

에서 오픈 소스 프로젝트,두 가지 구성으로 이루어져 있습니다 허용되지 않는 트렁크로 프로젝트에 의해 이해관계자가 될 수 있는 기초한 포크 --예를 들어,완전히 분리 프로젝트를 공유하는 일반적 원산지와는 다른 소스 코드입니다.

지 태그 하위 트리를 구별된 트렁크에서는 방식은 다음과 같습니다.

파괴할 수 있는 시스템 관리자를 만들기 스크립트를 연결 는가에 대해 트리거가 실행 특정 이벤트가 발생하는 경우;예를 들어,저지르고 변경합니다.그것은 매우 일반적인에 대한 일반적인 Subversion 저장소 구현을 치료하는 모든 경로를 포함하는"/tag/"을 작성된 후에는 창조;그 결과는,태그를 만든 후,경(적어도하여"일반"사용자)가 있습니다.이 수행을 통해 스크립트를 연결,을 적용하는 불변성을 방지하여 추가 변경하는 경우 태그 부모 노드로의 변경 개체입니다.

Subversion 또한 추가 기능을,이후 버전 1.5 관련"지점 병합 추적"이렇게 변하는 최선을 다하 병합할 수 있습으로 돌아와 트렁크에 대한 지원이 증가,"스마트"합병.

다른 팁

첫째,모든@AndrewFinnell 및@KenLiu 점에서 SVN 디렉토리의 이름 자체가 아무 의미가 없--",트렁크를 가지고 태그"는 단순히 일반적인 협약에 의해 사용되는 대부분의 저장소가 여기에 해당합니다.모든 프로젝트에 사용의 모든 디렉토리는(그것의 합리적으로 일반적인 사용하지 않는"태그에서"모든),그리고 사실 아무것은 당신을 중지에서 그들을 부르고 당신이 원하는 무엇이든지만,깨는 규칙은 종종 복잡하다.

에 대해 설명하겠습니다 아마도 가장 일반적인 사용 시나리오를 가지고 태그 및 예를 들의 시나리오 그들은 어떻게 사용됩니다.

  • 트렁크:주요 개발 영역입니다.이것은 당신의 다음 주요 해제 코드의 삶,그리고 일반적으로 모든 최신 특징이다.

  • :매번 릴리스는 주요 버전,그것은 지점이 만들어집니다.이것은 당신을 버그 수정하고 새로운 릴리스 해제하지 않고 최신-아마도 미완성 또는 검증되지 않은-특징이다.

  • 태그:매번 당신은 버전을 출시하(최종 릴리스 릴리스 후보자(RC),and betas)당신은 태그를 확인한다.이 시점에서의 복사본 코드로서 그 상태로 허용,당신을 다시 돌아하는 버그가 필요한 경우에는 과거 버전 또는 재 출시 과거의 버전 정확히 그대로 있었다.가지고 태그에서 SVN 가볍-서버에서,그것은 만들지 않는 전체의 복사본을 파일이 마커 말하는"이러한 파일 복사이 개정"하는 몇 가지 바이트입니다.이를 염두에두고,당신이하지 말았어야에 대한 우려를 만드는 태그에 대한 모든 발표 코드입니다.앞서 말했듯이,태그는 종종 생략하고 대신,변경 또는 다른 문서에 명확히정수 릴리스입니다.


예를 들어,당신 시작하는 새로운 프로젝트입니다.당신이 작업을 시작에서"트렁크에,"무엇이 결국 출시될 버전 1.0.

  • 간선/개발 버전,곧 1.0
  • 점/빈

한 1.0.0 가 완료되면,당신은 분지 트렁크에"새로 1.0"분기 만들기를"1.0.0"태그입니다.이제 작업에 어떤 결국 1.1 에서 계속됩니다.

  • 간선/개발 버전 곧 1.1
  • 점/1.0-1.0.0 버전 릴리스
  • 태그/1.0.0-1.0.0 버전 릴리스

당신이 몇 가지 코드 버그 수정이 그들에 트렁크,그리고 다음을 병합하는 수정에 이상 1.0 지점에 있습니다.당신은 또한 반대를 할 수 있고 버그를 수정에서 1.0 점 및 병합에 다시 트렁크,그러나 일반적으로 프로젝트 스틱 병합 방법만을 줄이기 위해 기회를 누락의 무언가이다.때로는 버그 수정에서 1.0 기 때문에 그것은에서 사용되지 않 1.1.그것은 정말 중요하지 않:당신만을 원하는지 확인을 하지 않 릴리스 1.1 동일한 버그가 수정되었습 1.0.

  • 간선/개발 버전,곧 1.1
  • 점/1.0- 곧 1.0.1 릴리스
  • 태그/1.0.0-1.0.0 버전 릴리스

일단 당신이 충분히 찾을 수 있 버그(또는 어쩌면 하나의 중요한 bug),당신은 결정을 할 1.0.1 릴리스입니다.그래서 당신은 태그를 확인"1.0.1"부터 1.0 점 및 릴리스의 코드입니다.이 시점에서,트렁크가 포함 될 것입니다 무엇 1.1,그리고"1.0"지점이 포함되 1.0.1 코드입니다.다음 시간 당신 업데이트 1.0,그것은 것 1.0.2.

  • 간선/개발 버전,곧 1.1
  • 점/1.0- 곧 1.0.2 릴리스
  • 태그/1.0.0-1.0.0 버전 릴리스
  • 태그/1.0.1-1.0.1 릴리스 버전

결국 당신은 거의 출시 준비 1.1,하지만 당신은 하고 싶은 베타 첫 번째.이 경우에,당신은 가능성이 높은"1.1"지"1.1beta1"태그입니다.이제 작업이 될 것입니다 무엇에 1.2(또는 2.0 아마도)에서 계속 트렁크,하지만 작업 1.1 에서 계속"1.1"지점에 있습니다.

  • 간선/개발 버전 곧 1.2
  • 점/1.0-다가오는 1.0.2 릴리스
  • 점/1.1-다가오는 1.1.0 릴리스
  • 태그/1.0.0-1.0.0 버전 릴리스
  • 태그/1.0.1-1.0.1 릴리스 버전
  • 태그/1.1beta1-1.1beta1 버전 릴리스

일단 당신이 출시 1.1 종,당신은"1.1"태그에서"1.1"지점에 있습니다.

수도 있습을 유지하기 위해 계속 1.0 고 싶은 경우에는,포팅하는 버그 수정 사이에 세 가지(1.0,1.1,트렁크).중요한 테이크 아웃에 대한 모든 것을 주요 버전의 소프트웨어를 유지 하는 지점을 포함하는 최신 버전에 대한 코드는 버전입니다.


다른 사용의 지점은 대한 특징입니다.이것은 당신이 지렁크(하나에 당신의 방출 지점은 불가)및 새로운 기능에서 격리됩니다.한 번의 기능이 완료되면,당신은 병합에서 그리고 제거합니다.

  • 간선/개발 버전,곧 1.2
  • 점/1.1-다가오는 1.1.0 릴리스
  • 점/ui 재작성-실험적인 기능점

이 아이디어 작업할 때에 무언가가 파괴적인(는 것을 잡거나 방해에서 다른 사람들과 그들의 일),무언가를 실험(수 있는지 그것을 만들에서),또는 아마 그냥 무언가를하는이 오래 걸리는 시간(그리고 당신은 두려워하면 그것을 들고 1.2 출시할 준비가 되면 지점 1.2 에서 트렁크),당신은 그것을 할 수 있습에 격리에서 분기.일반적으로 당신은 당신 상태로 유지하는 것으로 간선을 병합하여 변경 사항은 그것으로 모든 시간을 더 쉽게 다시 통합(merge 다시 트렁크)을 때 당신은 완성된다.


또한,주의 버전 관리 체계 난 여기 사용이 많습니다.일부 팀이 수행할 때 버그 수정/유지 보수 릴리스 1.1,1.2,etc., 고 주요 변경 사항 1.x,2.x,etc.사용은 여기가 동일한지만,당신의 이름을 지점"1"또는"1.x"대신에"1.0"또는"1.0.x".(제외, 의미의 버전 관리 은 좋을 수행하는 방법에 대한 가이드는 버전 번호).

외에 무슨 닉 수 있다고 말했다 자세한 내용을 알아보십시오 스트리밍 라인:분기 패턴에 대한 병렬 소프트웨어 개발

enter image description here

이 그림에서 main 은,트렁크 rel1-maint 가점 1.0 은 태그가 있습니다.

일반 (도구 불가지론보기),지부 메커니즘을 사용한 병렬 개발.는 SCM 에서 할 수 있습니다 0 를 가지입니다.전복은 0 입니다.

  • 트렁크 은 주요지점 추천 에 의해 파괴, 지만,당신은 강제로 그것을 만들 수 있습니다.도 할 수 있는'기본'또는'릴리스',또는지 하나가 있다.

  • 을 나타내는 개발 노력이다.그것이어야 하지 않는 자원을('vonc_branch')하지만 후:

    • 목적'myProject_dev'또는'myProject_Merge'
    • 릴리스 경계'myProjetc1.0_dev'or myProject2.3_Merge'또는'myProject6..2_Patch1'...
  • 태그 의 스냅샷하기 위해 파일을 쉽게 다시 얻을 수 있는 상태입니다.문제는 태그 및 브랜치에서 같은 파괴.면 편집증 접근 방식:

    중 하나를 사용할 수 있습의 액세스 제어에서 제공한 스크립트로 파괴를 방지하에서 사람이 아무것도 하지만 만드는 새로운 복사본에 태그 지역입니다.

태그 최종입니다.컨텐츠를 변경되지 않습니다.지 않습니다.니다.당신이 잊은 줄에서 릴리스 주입니까?새 태그를 만듭니다.사용되지 않거나 오래된 하나입니다.

지금,나는 많이 읽고"에 대해 병합하는 다시 등에서와 같은 지점,그리고 마침내 트렁크에는 지점".는 불 병합 워크플로아무 것도 필수기.그렇지 않기 때문에 당신은 트렁크는 지점을 병합해야 다시 니다.

컨벤션,트렁크에 지점을 나타낼 수 있습의 현재 상태의 개발,하지만 그에 대한 간단한 순차 프로젝트는 프로젝트는:

  • 아니오'에 사전에'개발(에 대한 준비-다음 버전을 뜻이 이러한 변경은 그들과 호환되지 않는 현재'트렁크 개발)
  • no 대규모 refactoring(테스트를 위한 새로운 기술 선택)
  • 더 장기적인 유지 관리의 이전 릴리스

기 때문에 하나의(또는)그 시나리오,당신은 자신을 얻을 네 가지의 줄기','네가 현재 발전',그리고 모든 당신에 사람들은 병렬 개발이 반드시 있어야 합병 뒤에'트렁크'.

에 SVN 태그하고 지점이 정말로 비슷합니다.

태그 =된 슬라이스에서는 시간,일반적으로 사용되는 릴리스

=도 정의 조각이 시간에 그 개발을 계속할 수 있는,일반적으로 사용되는 주요 버전과 같은 1.0,1.5,2.0,등,다음를 놓을 때 당신은 태그니다.이것은 당신이 지원하기 위해 계속 생산 출시 앞으로 이동하면서 가진 주요 변경 사항에 대해 설명 트렁크

트렁크 =개발 작업 공간,이것은 모두 개발이 일어나야 하며,그 변경 다시 병합되 지점에서 출시하였습니다.

그들이 없는 형식적인 의미입니다.폴더는 폴더 을 SVN.그들은 일반적으로 수용을 구성하는 방법에 대해 프로젝트입니다.

  • 트렁크는 메인 라인의 developmemt.지 폴더를 만들 수 있습니다,잘 지점은 열심히 설명하기에 게시합니다.

  • 지점의 사본의 일부 프로젝트에는 작업에 별도로에서 트렁크가 있습니다.어쩌면 그것은 실험지 않을 수도 있는 어디 가서나 어쩌면 그것은 다음 릴리스를 위해,당신이 나중에 병합으로 다시 트렁크가 되면 안정적입니다.

  • 및 태그 폴더를 만드는 태그의 사본은 귀하의 저장소에서 일반적으로 해제됩니다.

하지만 내가 말했듯이,을 SVN,폴더의 폴더입니다. branch, trunk 및 태그는 컨벤션.

내가 사용하는 단어를'복'만큼 발라주세요.SVN 지 않이 실제로 전체의 복사본에 있는 것들입니다.

트렁크 개발 라인을 보유하고 있는 최신 소스 코드 및 기능을 제공합니다.***이 기능은 다음과 같은 최신의 버그 수정에서뿐만 아니라 그것의 최신 기능은 프로젝트에 추가됩니다.

일반적으로 사용되는지 무언가가 간선에서(또는 다른 개발 라인)그렇지 않으면 휴식 버튼을 눌러 설치할 수 있습니다.새로운 기능은 종종에 내장되어 지고 병합된 후에 다시 트렁크가 있습니다.가지는 종종 코드가 포함되어 있지 않은 반드시 승인 개발을 위한 라인서 분기.예를 들어,프로그래머를 해볼 수 있었 최적화에서 뭔가를 지고 병합시 개발에선 한 번의 최적화는 만족입니다.

태그 은 스냅샷을 저장소의 특정 시간에.No 개발을 발생해야 합니다.그들은 가장 자주 사용하의 사본은 무엇이었을 출시하는 클라이언트할 수 있도록 쉽게 액세스하여 어떤 클라이언트가 사용하고 있습니다.

여기에 대한 링크를 매우 좋은 가이드를 저장소:

이 기사에서 위키백과도 읽을 가치가있다.

지금 하는 일이 소프트웨어 개발에 대해 없이 일치에 대한 지식이 아무것도 모두 보인 그것을 가지고 자신의 방법으로,하지만 그것 때문에 상대적으로 젊은 징계 어쨌든.

여기 나의 일반 간단한 방법으로,

트렁크 -트렁크 디렉토리의 포트,승인,그리고 병합체의 작동합니다.반대로 많은 고백,내 몸통이만 깨끗하고 깔끔한 승인 작업,그리고 개발한 지역이지만,오히려 릴리스 영역입니다.

에서 몇 가지 주점에서 시간이면 트렁크인 모든 출시 준비가 되어,다음은 태그를 지정하고 발표했다.

-가 디렉토리를 포함한 실험과 지속적인 일이 있다.에서 작동점이 될 때까지는 승인되는 것으로 병합니다.나를 위해,이 지역의 모든 작업이 완료됩니다.

예를 들어:내가 있을 수 있다 반복-5 에 대한 지점은 다섯번째 라운드의 개발,제품에 어쩌면 prototype-9 점에 대한 아홉 번째 라운드의 실험,그리고 그래서.

태그 -Tags 디렉토리 내용의 스냅샷 승인을 가지고 트렁크에 출시하였습니다.언제 지점의 승인을 병합으로 트렁크,또는 릴리스의 트렁크,스냅샷의 승인된 지점 또는 트렁크 릴리스로 만든 아래에 태그가 있습니다.

나는 가정으로 범주가 있습 앞뒤로 이동에 시간을 통해 포인트 관심은 매우 쉽습니다.

이 에 대한 훌륭한 SVN 했을 때 나를 찾 웹사이트의 저자OpenCV 2 컴퓨터 비전 응용 프로그램 프로그래밍 책과 생각을 공유해야 합.

그는 튜토리얼에서 사용하는 방법 SVN 및 문구'트렁크','태그'와'분기'의미합니다.

인용하는 직접에서의 튜토리얼:

현재 버전의 소프트웨어 프로젝트에서는 귀하의 팀은 현재 작업은 일반적으로 아래에 있는 라는 디렉토리 트렁크.프로젝트 진화,개발자는 업데이트 버전 수정,버그를 추가하는 새로운 기능)에 제출하고 변화하는 디렉토리에 있습니다.

주어진 시점에서,당신은 수를 동결하는 버전이 및 스냅샷 캡처하는 소프트웨어의 그대로 이 단계에서의 개발이다.이것은 일반적으로에 해당하의 공식 버전의 소프트웨어,예를 들어,사람들은 당신을 제공합니다.이 스냅샷은 아래에 있는 태그 디렉터리 프로젝트입니다.

마지막으로,그것은 자주 유용한을 만들고,어떤 점에서,새로운 라인의 발전에 대한 귀하의 소프트웨어입니다.이런 경우,예를 들어,당신을 테스트하는 대한 구현에서는 당신을 수정해야의 소프트웨어나고 싶지 않은 이러한 변경을 제출하는 메인 프로젝트를 결정할 때까지 당신이 채택한 새로운 솔루션입니다.메인 팀은 다음 작업을 계속하는 동안 프로젝트를 다른 개발에서 작동 프로토 타입입니다.당신은 이러한 새로운 라인 프로젝트 개발의 밑에 라는 디렉토리 .

트렁크 디렉토리가 있는 디렉토리 당신은 아마 가장 친숙하기 때문에,그것을 보관하는 데 사용됩니다.가장 최근의 변경합니다.귀하의 기본 코드베이스에 있어야 합니다.

가 디렉터리를 들고는 가지들은 무엇이든 있을 수 있습니다.

태그 디렉토리는 기본적으로 추가 특정의 설정 파일입니다.당신이 이렇게 같은 것들에 대한 자료,당신이 원하는 곳에"1.0"을 이 파일에서는 이러한 수정하고"1.1"을 이 파일에서는 이러한할 수 있습니다.당신은 일반적으로 수정하지 않는 범주면 그들이 만든 것입니다.태그에 대한 자세한 정보 참조하십시오 제 4 장.고 merge (에 버전으로 제어 Subversion).

는 이유 중 하나는 모든 사람이 약간 다른 정의하기 때문에 파괴를 구현하는 에 대한 지원이 가지고 태그가 있습니다.파괴적: 우리가 보았 -전체 추천 가지고 범주에서 다른 시스템과 발견되지 않았다 그들에게 유용한,그래서 우리는 우리 구현하지 않았습니다.다만 복사본을 만들어 새로운 디렉토리로 이름.다음의 코스는 모두 무료입하는 약간 다른 있습니다.의 차이를 이해하는 실시 태그와 단순한 복+naming convention 는 다음을 참조하십시오:Wikipedia 항목 Subversion 태그 및 가지.

Tag=된 슬라이스에서는 시간,일반적으로 사용되는 릴리스

내 생각에 이것은 무엇을 하는 일반적으로 의미"tag".하지만 파괴:

그들이 없는 형식적인 의미입니다.폴더는 폴더를 SVN.

내가 찾는 오히려 혼란:개정을 제어하는 시스템에 대해 아무것도 알고 지점 또는 태그이다.에서 구현 point of view,I think Subversion 방법을 만들기의"복"은 아주 영리한지만,저는 그것에 대해 알다시 새기 쉬운 지선 추출.

또는 아마이었어를 사용하여 CVS 너무 오래입니다.

나는 생각한 혼란의 일부에서 온 사이의 차이는 개념 태그의하고 구현에 SVN.을 SVN 태그가 있는 지점 사본을 얻으시기 바랍니다.수정하는 태그는 잘못된 것으로 간주되며 사실 같은 도구 TortoiseSVN 는 경고를 표시하려고 하면 아무것도 수정하는 자./태그/..에서 경로.

난 정말 무엇이'태그'는,그러나 지점은 일반적인 원인 제어의 개념입니다.

기본적으로,지점은 작동하는 방법에 코드를 변경에 영향을 미치지 않고 트렁크가 있습니다.하고 싶은 말 추가하는 새로운 기능이 매우 복잡합니다.당신이 원하는 것을 확인할 수 있에서 변경으로 당신은 그들을,하지만 그것을 원하지 않는 영향을 트렁크가 끝날 때까지 기능이 있습니다.

첫째로 당신은 당신을 만들었습니다.이것은 기본적으로의 복사본을 트렁크 등의를 만든 시간 지점에 있습니다.당신은 다음을 할 모든 당신의 작품에서는 지점에 있습니다.의 모든 변경 사항 지점에 영향을 미치지 않 트렁크,트렁크에는 여전히 사용할 수 있도록,다른 작업을 계속 있습니다(같은 일을 버그 수정 또는 작은 향상된 기능).한 번의 기능은 당신이 통합하는 지점으로 트렁크가 있습니다.이동의 모든 변경에서 지점을 트렁크가 있습니다.

가있을 수 있는 패턴의 사람들이 사용을 위해 가지입니다.이 있는 경우 제품과 함께 여러 주요 버전의 지원을 받고 있고,한 번에 일반적으로 각 버전이 될 것입니다.제가 작업하는 QA 점 및 생산 지점에 있습니다.을 발표하기 전에 우리의 코드를 QA 우리는 통합 변경 QA 점,배포합니다.을 발표 할 때를 생산에 우리는 통합에서의 QA 분기 생산 지점,그래서 우리는 알고 실행되는 코드에서 생산과 동일 QA 테스트합니다.

위키에서 항목을 가지, 이후,그들은 아마 설명하는 것보다 더 나은 내가 할 수 있습니다.:)

에 익숙한 사람을 위해 자식,마스터 GIT 에 해당하는 트렁크에서 SVN.

점 및 태그에는 동일한 용어를 모두 GIT 및 SVN.

트렁크 :의 완료 후 매 스프린트에서는 민첩한 우리는 나와는 부분적으로 휴대 제품입니다.이러한 자료 보관에서 트렁크가 있습니다.

:모든 병렬 개발에 대한 코드를 각각 진행중인 스프린트에 보관되는 가지입니다.

태그 :매번 우리는 부분적으로 휴대 제품 종류의 베타 버전을,우리는 태그를 확인한다.이것은 우리에게는 코드를 사용할 수 있었던 그 시점에서의 시간을 할 수 있도록,우리에 돌아가는 상태에서 필요한 경우는 동안 어떤 점을 개발.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top