문제

나는 대부분의 고객 웹사이트의 기반이 되는 일종의 브로셔 웹사이트 템플릿을 개발했습니다.템플릿과 파생 사이트는 Subversion 저장소에 함께 저장됩니다.최첨단(그러나 안정적인) 코드가 존재합니다. /trunk;각 웹사이트에는 자체 분기가 있어 사용자 정의가 더 쉽습니다.이제 2.0 릴리스가 다가오고 있으므로 태그에 대한 용어를 이해해야 한다고 생각합니다.

제가 이해하는 바에 따르면, 중요한 릴리스에는 태그가 지정되어야 합니다.태그는 단지 특정 개정판에 대한 포인터일 뿐이며 절대로 항상 수정될 수 있습니다.따라서 템플릿 버전 2.0에 대한 태그가 있고 이미 트렁크에 새 코드가 있다고 가정해 보겠습니다.2.0 코드를 기반으로 새 브랜치를 생성하려면 어떻게 해야 합니까?

내가 분기하는 걸까 /tags/2.0?그건 옳지 않아요.변경 사항을 어디에 커밋해야 합니까?의도적으로 내 지점의 조상을 우회해야 할 것입니다.트렁크 개정판을 수동으로 찾아야 합니까? /tags/2.0 해당 개정판에 해당하고 트렁크에서 해당 개정판을 분기합니까?그런 것 같습니다 ...번거롭다.나는 최근까지 Subversion이 그 정보를 저장하지 않았다고 믿습니다!

분명히, 나는 근본적인 것을 놓치고 있습니다.태그가 어떻게 작동하는지에 대한 빠른 요약 실제로 사용된 (반대로 무엇 그들 ~이다) 도움이 될 것입니다.감사해요.

편집하다:내가 "가지쳐라"라고 말했던 곳 /tags/2.0", 내 말은 "들어봐"라고 말하려고 했어 /tags/2.0".하지만 그 실수는 내 질문에 대한 답이기도 했습니다.어떤 이유에선지 한번도 생각해본 적이 없었는데 사자 태그.바보 같죠?하지만 내 생각에는 태그가 "최종"이었습니다.

그건 그렇고, 나는 태그가 단지 관례일 뿐이라는 것을 완전히 이해합니다.제가 혼란스러워했던 것은 관례 자체였지 기본 구현이 아니었습니다.

도움이 되었습니까?

해결책

나는 최첨단 (그러나 안정적)을 /trunk에 넣었습니다.릴리스 기능이 마무리되면 /trunk를 /branches/Foobar-1.2.3.X에 복사합니다./branches/Foobar-1.2.3.X를 /tags/Foobar-1.2.3.0에 즉시 복사합니다(이렇게 하면 나중에 diff를 더 쉽게 할 수 있습니다. /branches/Foobar-1.2.3.X를 /tags/Foobar-1.2에 diff할 수 있습니다. 3.0을 설치하고 내 브랜치에서 무엇이 변경되었는지 확인하세요. 그때쯤에는 /trunk가 달라질 가능성이 높기 때문입니다.최종 개발은 /branches/Foobar-1.2.3.X의 기능에 대해 진행되며, 릴리스를 만들 때 /tags/Foobar-1.2.3.1, /tags/Foobar-1.2.3.2 등에 복사합니다.내 빌드 시스템은 /tags/Foobar-????에서만 코드를 가져오도록 설계되었습니다.

이는 "특수" 브랜치에도 적용됩니다:/branches/Foobar-WhizzBangFeature-1.2.X

다른 팁

과거 지점(과거 태그, 분기 또는 이전 트렁크 개정)에서 분기를 원하지 않는 한 항상 트렁크에서 분기를 생성하십시오.
또한 태그에 어떤 것도 쉽게 커밋할 수 없습니다.최소한 TortoiseSVN 클라이언트는 메시지로 사용자를 보호합니다.

예, 다음으로 지점을 만드세요. svn copy ~에 /branch 분기하려는 버전의 저장소 폴더입니다.

예를 들어:

/branch
/tags
  /1.0
  /2.0
/trunk

그런 다음 2.0의 분기에 대해 다음을 수행하십시오.

/branch
  /something2.0
/tags
  /1.0
  /2.0
/trunk

/branches(또는 브랜치를 저장하는 모든 위치) 아래에 태그 디렉터리의 복사본을 만듭니다('svn copy' 사용). 가능하면 2.0-hotfix 또는 브랜치 이름과 유사한 이름(태그 이름과 구별됨)을 사용합니다.

그것은 가능한 한 간단합니다.SVN에는 실제로 태그와 분기가 없고 디렉터리와 파일만 있습니다.그것은 모두 귀하의 정책에 달려 있습니다.

아마도 더 자연스러운 방법은 먼저 2.0 브랜치를 생성하고 브랜치의 코드를 안정화한 다음 브랜치에서 태그를 생성하는 것입니다.

나는 당신이 Tortoise SVN을 사용하고 있다고 가정하겠습니다.다음과 같은 상황이 있다고 가정해 보겠습니다.

/trunk
/braches
   /branch1
   /branch2
/tags
   /1.0
   /2.0

그런 다음 해야 할 일은 다음과 같습니다.

  • 거북이 저장소 브라우저를 엽니다.
  • 루트로 이동하여 작업을 확장하면 수행 중인 작업을 볼 수 있습니다.
  • /tag/2.0 폴더를 선택하세요
  • Ctrl 키를 누른 채 드래그하여 /branches 폴더에 복사하세요.
  • 새 폴더의 이름을 바꾸거나 바꾸지 마십시오.

그리고 그게 다야.그런 다음 작업을 위해 /branches/tag/2.0(또는 무엇이라고 부르든)을 확인해야 했습니다.

당신이 해야 할 일은 항상 SVN을 단순히 파일 시스템으로 생각하는 것입니다.해당 파일 시스템에 있는 항목에 부여하는 이름과 의미는 사용자에게 달려 있습니다.예를 들어, "태그"를 편집할 수 없다는 사실은 단지 관례일 뿐입니다. 기본 파일 시스템은 태그를 편집하든 안 하든 상관하지 않습니다.

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