2010-11-23 7 views
3

저는 개정 제어 시스템에 초보자입니다. 용서해주십시오.SVN : 이전 버전의 폴더를 만드십시오.

내 프로젝트는 자신의 SVN 저장소에있는 두 개의 작은 응용 프로그램으로 구성됩니다. 또한 하나의 저장소 (svn : externals)는 해당 응용 프로그램간에 공유합니다.

새 버전이 출시되면 해당 버전의 폴더 (소스, 문서 등 포함)를 만들고 싶습니다.

.UI 
    . "old versions" 
     . 1.0 
     . 2.0 
     . 2.5 
    . trunk (current development version 3.0) 

그래서 제 질문은 다음과 같습니다 :

  1. (SVN)에 구조 이런 종류의 올바른 이름은 무엇입니까 하나의 응용 프로그램에 대한 저장소는 다음과 같이 보일 것이다?
  2. 어떻게 만들 수 있습니까?
  3. 이전 버전을 고정 할 수 있습니까 (해당 폴더가 변경되지 않도록 할 수 있습니까)?
  4. 더 좋은 방법이 있나요?

답변

3
  1. "tags"는이 폴더의 표준 및 올바른 이름입니다.
  2. "svn copy"는 귀하의 친구입니다. 많은 연속 통합 제품에는 옵션이 자동으로 빌드에 태그로 표시됩니다.
  3. 예, "미리 커밋 후크"로 고정 할 수 있습니다 (아래 참조).
  4. 이것은 일을하는 표준 방법입니다. 지나치게 벗어나면 다른 사용자를 혼동하게됩니다. (Windows 용)

이 예 사전 COMIT 후크 우리는 여기에 사용

@echo off 
SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe 
SET GREP=D:\SVN\REPO\hooks\grep.exe 

REM Prevent changes to tags. 
("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit an update to a tag.>&2 && exit 1) 

REM Prevent commits without comments. 
("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment for all actions.>&2 && exit 1) 

exit 0 

수동 태그를 만들려면 다음과 같은 명령을 사용하려면 :

svn copy "http://your/repo/UI/trunk" "http://your/repo/UI/tags/v3.0" -m "Tagging v3.0" 
+0

좋은 사전 커밋 스크립트! 나는 그것을 고용해야 할 수도 있습니다, 항상 코멘트를하지 않는 사람이 있습니다! – Martin

+0

답변 해 주셔서 감사합니다! – Routa

+0

@Routa : 도움이 되었으면 답장을 보내고 답변을 수락하십시오. :) –

1
  1. 가지, 태그 및 트렁크
  2. 은 체크 아웃에 폴더를 만든 다음 커밋, 다음
  3. 당신이 특정에 트렁크에 태그를 트렁크의 태그를 만들 수 "브랜치/태그"(TortoiseSVN을) 또는 cmd를 라인 SVN에 대한 "SVN 복사"를 사용 예를 들면 V1, V2, V3 -이 현재 시간에서 저장소의 기록을 유지하고 당신은 항상이 지점은 주요 변경에 사용되는이

달성 할 수있는 방법들을

  • 로 돌아갈 수있는 당신이해야 트렁크에서하지 마십시오 (개발자 그룹과 함께 작업하는 경우). 나중에 분기 병합을 방지하기 위해 분기를 만들고 분기에 매일 트렁크를 병합합니다. 그런 다음 지점의 주요 변경 사항을 완료하면 트렁크로 다시 병합됩니다.

    릴리스 준비가되면 전체 트렁크의 태그를 만듭니다. 그런 다음 거기에서 석방하십시오. 앞으로 특정 버전으로 돌아가고 싶다면 태그에 역사적인 참조가 있어야합니다.태그는 특정 시점에 저장소를 가리키고 있습니다 (예 : 예를 들어, 트렁크가 35335 번에있을 때의 rev 25123.

  • +0

    나는 당신이 "svn copy"를 의미한다고 생각하는데, 2 번 지점에서 "svn tag"가 아닙니다. –

    +0

    해답을 가져 주셔서 감사합니다! – Routa

    +0

    블레어 덕분에 거북이를 가리키고있었습니다. – Martin

    1

    http://svnbook.com에있는 Subversion 온라인 참조의 처음 몇 장을 읽어야합니다. 이렇게하면 버전 관리와 Subversion 모두에서 빠르고 쉽게 시작할 수 있습니다.

    당신이하고있는 일은 Subversion이 작동하는 방식에 매우 가깝습니다. 아직 그 디렉토리가 있습니까?

    표준 Subversion 설정에서는 "tags", "branches"및 "trunk"디렉토리를 설정합니다. 어떤 사람들은 이것을 저장소의 루트에 설정하고, 다른 사람들은 각 프로젝트의 루트 아래에 설정합니다.

    예를 들어

    : 내가 본

    svn://svn/trunk/proj1 
    svn://svn/trunk/proj2 
    svn://svn/branches/proj1/1.2 
    svn://svn/branches/proj2/3.4 
    

    또는

    svn://svn/proj1/trunk 
    svn://svn/proj2/trunk 
    svn://svn/proj1/branches/1.2 
    svn://svn/proj2/branches/3.4 
    

    대부분의 사이트는 그것을 마지막 방법으로 할 수 있지만, 주로 사용하는 (그에게 첫 번째 방법을 수행하는 장점이있을 수있다 svn:externals 사실 체크 아웃을 수행하는 경우 체크 아웃은 기본적으로 trunk이 아닙니다.

    당신이 당신의 "오래된 버전의"디렉토리 tags를 호출하기 만하면 모든 설정이 끝난 것입니다 : 당신이 태그를 만들 너희를하지 패닉 잊어 버린 경우

    svn://svn/UI/tags/1.0 
    svn://svn/UI/tags/2.0 
    svn://svn/UI/tags/2.5 
    svn://svn/UI/trunk 
    

    ! Subversion의 가장 큰 장점 중 하나는 저장소의 개정 번호입니다. 그것은 커밋을 할 때마다 태그를 만드는 것과 같습니다. 당신이 볼 수 있듯이, 당신이 만들 수 svn cp 명령을 사용

    $ svn cp -r1234 svn://svn/UI/trunk svn://svn/UI/tags/2.0 
    

    : (일반적으로 svn log보고를 통해) 릴리스를했을 때 당신이 개정 번호를 찾을 수 있다면 당신은 다음 태그를 만들 수 리비전을 복사 할 수 있습니다 태그 및 분기. 그건 그렇고, 그것을 실현하지 않고 태그를 수정하는 것은 매우 쉽습니다. 대부분의 사이트에서 사용자는 태그 디렉토리 아래에서 커밋하는 대부분의 사용자를 막을 수있는 사전 커밋 고리를 가지고 있거나 (사용자가 태그를 만들어야 함을 의미 함) 사용자가 (svn cp을 통해) 태그를 만들도록 허용하지만 사용자는 일단 태그가 생성되면 수정하십시오. 당신이 그것을보고 싶다면 나는 http://dl.dropbox.com/u/433257/new_svn_hooks.zip에 미리 - 커밋 후크의 펄 버전이 있습니다.

    +0

    답장을 보내 주셔서 감사합니다. 나는 특정 폴더를 자동으로 생성하는 VisualSVN을 사용하고 있습니다. 불행히도, 나는 그 의미를 이해하기에는 너무 어리 석고/워드 프로세서로부터 대답을 읽었다. :) – Routa

    관련 문제