문제

스크립트 기반 개발 시스템에서 Subversion을 사용하고 싶은데, 평소 상황(C#/.NET)과 어떻게 다르게 해야 할지 궁금합니다.

일반적인 일상적인 업데이트/커밋 주기는 변경 내용 추적 및 개정 비교와 마찬가지로 잘 작동합니다.제가 조언하고 싶은 부분은 배포 처리에 관한 것입니다.

이 스크립트 시스템을 사용하면 별도의 빌드 단계가 필요하지 않습니다. 대신 배포에는 선택한 스크립트를 호스트 애플리케이션에 직접 업로드하는 작업이 포함됩니다.

스크립트에 대한 변경 사항이 반드시 다음 릴리스에 포함될 필요는 없습니다. 그 이후 릴리스나 그 이후 릴리스에 적용될 수 있습니다.

이상적인 세계에서는 "2009년 9월" 릴리스와 같은 특정 릴리스에 스크립트를 할당하고 일단 테스트를 마친 다음 단일 명령으로 해당 릴리스에 대한 모든 스크립트를 꺼낼 수 있기를 바랍니다.

업데이트

내가 아는 한, 태그나 변경 목록 모두 답이 될 수 없습니다.

ChangeList는 영구적이지 않으며(저장소에 존재하지 않음) 나중에 검토할 수 있는 솔루션이 필요합니다.

태그는 사실상 분기와 동일합니다. 태그에는 다음이 포함됩니다. 모두 기본적으로 파일이 저장되어 있으며 어떤 개정판을 선택하기만 하면 됩니다.

나는 다음과 같은 접근 방식을 기대하고 있습니다. 빈 가지 필요에 따라 특정 파일 개정판을 배치할 수 있습니다.

업데이트 2

다른 도구의 기능을 사용하여 이러한 상황을 어떻게 해결할 수 있는지 보여주는 두 가지 예입니다.나는 Subversion을 사용하고 싶기 때문에 이러한 도구를 전혀 홍보하려는 것이 아니며 단지 방법을 찾으려고 노력하고 있습니다.

와 함께 QVCS, 파일의 특정 개정판에 레이블을 적용하여 원하는 결과를 얻을 수 있습니다.해당 레이블은 해당 파일의 해당 개정판에 첨부되어 그대로 유지됩니다.언제든지 빈 디렉터리로 깔끔하게 체크아웃하고 지정된 레이블이 있는 파일만 복사하도록 지정할 수 있습니다.

마찬가지로, 스타팀, 파일 개정판에 레이블을 적용하고 해당 레이블이 있는 파일만 체크아웃할 수 있습니다.

도움이 되었습니까?

해결책

"이상적인 세상에서, 나는 테스트 된 일단"2009 년 9 월 "릴리스에 주어진 릴리스에 스크립트를 할당 할 수 있기를 원합니다. "

이것이 바로 무엇입니다 태그 설계되었습니다.

다른 팁

Subversion 분기를 사용하여 "향후" 릴리스를 관리할 수 있습니다.향후 릴리스로 예정된 변경 사항을 적용하는 경우 해당 브랜치에 커밋하세요.모든 미래 기능을 트렁크로 가져와야 할 때가 되면 브랜치를 병합하세요.

이는 컴파일된 언어로 Subversion을 사용하거나 실제로 다른 목적으로 사용하는 작업 흐름과 크게 다르지 않습니다.

참조 일반적인 분기 패턴 자세한 내용은 Subversion 책의 섹션을 참조하세요.특히 "기능 분기" 섹션이 귀하의 상황에 가장 적합할 것 같습니다.

한 가지 해결책은 svn mkdir (대신에 svn copy), 그런 다음 메인 브랜치에서 필요한 파일을 svn copy

나는 SVN과 관련이없는 문제를 본다. 일부 파일을 릴리스 브랜치에 저장하려고하지만 다른 파일은 저장하려고합니다. 따라서 전체 릴리스 디렉토리를 분기 한 다음 표시하지 않으려는 파일을 삭제하십시오. 또는 새 빈 디렉토리를 만들고 원하는 파일 만 복사하십시오.

그것은 단순합니다. 변경리스트 나 태그 또는 복잡한 물건이 필요하지 않으며, 전복 시스템은 원하는 파일을 추측 할 수 없습니다. 개인적으로, 나는 당신이 파일을 다시 원한다면 나중에 삭제를 취소 할 수 있으므로 Branch+Delete 옵션을 수행 할 것입니다.

SVN 1.6을 사용하면 개별 파일을 가리키는 외부가있을 수 있다고 생각합니다. 따라서 원한다면 빈 트리 구조를 만들고 구조물에 원하는 파일을 가져 오는 외부 세트를 정의 할 수 있습니다. 이것은 당신에게 분기의 일종의 '라이브 뷰'를 줄 것입니다.

트렁크에서 직접 파일 버전을 참조하거나 접근 방식을 계층화하고 릴리스 브랜치를 사용하여 특정 개정판을 병합 한 다음 '라이브 뷰'의 외부에서 해당 브랜치를 참조 할 수 있습니다. 이렇게하면 정상 개정 제어를 유지하고 기록을 병합 한 다음 서버의 SVN 업데이트가 해당 파일을 라이브 구조로 끌어 올릴 수있는 개정을 병합하여 기능을 공개합니다.

단점은 회절 브랜치 (예 : 새 릴리스의 문제로 인해 오래된 태그)로 전환하기가 어렵다는 것입니다. 모든 외부 정의를 수동으로 수동으로 편집해야합니다. 그들이 모두 같은 디렉토리에 있다면 문제가되지 않을 수 있지만, 당신이 그들을 위해 사냥해야한다면 고통 일 수 있습니다.

파일 외부에 대한 작은 정보는 SVN에서 사용할 수 있습니다. 1.6 릴리스 노트

특정 스크립트에 대한 메타 데이터를 찾고있는 것 같습니다. 따라서 한 가지 옵션은 스크립트를 별도의 파일로 저장하고 사용하는 것입니다. SVN 특성. SVN 속성을 사용하면 파일과 관련된 키 값 쌍을 저장할 수 있습니다.

예를 들어, "레이블"예제를 미러링하려면 특정 릴리스에 포함하기로 결정한 각 파일에 대한 속성을 만들 수 있습니다. 이 경우 "2009 년 9 월"속성을 "true"로 만듭니다.

그런 다음 배포 패키지를 생성 할 때 "2009 년 9 월"속성으로 파일 만 선택할 수 있습니다.

태그와 가지를 사용하면 시간이 지남에 따라 저장소 변경 사항을 추적하고 Diff를 생성하여 해당 변경 사항이 무엇인지 확인할 때 유용합니다. 그러나 전체 저장소의 스냅 샷입니다.

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