문제

SVN 로그를 볼 때 릴리스가 완료된 시점을 알려주는 마커를 볼 수 있기를 바랍니다. 나는 PVC와 같은 다른 버전 제어 시스템에서 이것을 보았습니다. 억지로.

SVN에서 할 수 있습니까? 나는 약간의 연구를 해왔고 지금까지는 이런 종류의 일이 뒷받침되지 않는 것처럼 보입니다.

편집하다

우리는 릴리스마다 소스를 다른 폴더에 복사하고 싶지 않습니다. 이로 인해 엄청난 양의 불필요한 복제가 발생합니다 개발자 기계의 파일 그리고 각 릴리스의 개정 번호에 대한 기록 만 제공합니다. 텍스트 문서를 사용하여 할 수 있습니다!

edit2

저의 목표는 릴리스의 연대기를 보여주는 단일보기를 갖는 것입니다. 그 사이에 각 릴리스간에 발생한 모든 코드 변경 사항을 볼 수 있습니다. 그러면 릴리스 노트를 쉽게 컴파일 할 수 있습니다.

도움이 되었습니까?

해결책

Richard, 태그는 매우 가깝지만 필요한 것이 전용 릴리스 지점이 아닐지 궁금합니다.

이를 위해 'Release'와 같은 Trunk에서 일찍 지점을 만드십시오. 그런 다음 릴리스 할 준비가되면 트렁크를 정상적으로 작업하면 트렁크에서 변경 사항을 '릴리스'로 병합하십시오. 이것이 릴리스를 수정 해야하는 유일한 방법입니다.

그런 다음 원하는 경우 릴리스에서 태그를 붙일 수 있습니다.

그러나 이것이 당신에게 줄 수있는 것은 트렁크의 수정의 하위 집합이있는 지점입니다. 릴리스 날짜를 찾으십시오.

svn log --stop-on-copy svn://server/project/branches/release

이렇게하면 릴리스 날짜 목록이 제공됩니다 (개정판 포함). 각 릴리스의 내용을 확인하려면 다음과 같습니다.

svn mergeinfo --show-revs=merged "svn://server/project/trunk" "svn://server/project/branches/release"@<release revision>

또한 이런 식으로 작업함으로써 트렁크의 모든 것을 엄격히 순차적으로 릴리스하는 데 제한되지 않습니다. 아직 공개하고 싶지 않지만 여전히 후속 개정을 포함하여 수정을 제외하고 체리 선택 수정을 할 수 있습니다.

다른 팁

그렇지 않습니다. SVN에서 릴리스를 할 수있는 방법은 각 특정 릴리스마다 릴리스 소스가 복사되는 "태그"디렉토리를 갖는 것입니다. 예를 들어 /tags/release-0.11 ... 당신이 엉망이되는 것을 막는 것은 없습니다. tags 우연히, 상자 밖으로 디렉토리이지만 일부 사람들은 사전 커밋 후크를 설정하여 우발적으로 태그를 릴리스하는 것을 방지하는 것을 좋아합니다.

여기에 있습니다 괜찮은 기사 SVN의 릴리스 프로세스 설명.

저의 목표는 릴리스의 연대기를 보여주는 단일보기를 갖는 것입니다. 그 사이에 각 릴리스간에 발생한 모든 코드 변경 사항을 볼 수 있습니다.

거북이 SVN 개정 그래프를 조사 했습니까? 각 릴리스 태그 (다른 릴리스가 지적한대로 서버 또는 워크 스테이션에서 파일 복사를 포함하지 않음)라면 모든 수정 사항을 시간순으로 볼 수 있으며 태그는 실제 릴리스를 나타냅니다. 관심있는 두 가지 수정 사항을 히벨 라이트하고 상황에 맞는 메뉴와의 차이를 선택하여 릴리스 및/또는 트렁크를 차별 할 수 있습니다.

SVN 저장소의 태그 경로에 트렁크를 복사하는 것이이를 달성하는 방법입니다. SVN 사본이므로 SVN 리포지토리 서버의 파일 중복으로 끝나지 않습니다. 트렁크 이외의 SVN 경로를 체크 아웃하기로 선택한 경우 로컬에서만 중복 파일 만 있습니다. 작업 사본을 커밋 한 다음 체크 아웃 한 SVN 경로로 돌아갑니다.

이것은 본질적으로 SVN에서의 구체적인 기존의 구현입니다. 자세한 내용은 온라인 SVN 책을 살펴보십시오.

마커는 릴리스 태그가 만들어 질 때 작성된 커밋 메시지입니다 ( /태그에 대한 SVN 사본). 최소한 가장 일반적인 방법입니다.

Subversion은 그 자체로 릴리스 관리를 제공하지 않지만 버전 제어 도구는 일반적 으로이 활동을 수행하지 않습니다. 당신이 찾고있는 것은 전복과 상호 작용할 수있는 활동/문제/변경 관리 도구입니다.

이를 위해 우리는 직장에서 Jira를 사용하고 그것을 전복과 연결합니다. Jira는 각 릴리스의 문제를 포함하는 로드맵 및 변경 기록을 제공합니다. 이러한 문제 각각에는 소스 코드 제어의 변경 사항에 대한 링크가 있습니다. 따라서 소스 코드의 변경 사항을 릴리스 버전과 연결할 수 있습니다.

이 두 도구를 분리하는 것이 일반적으로 더 낫다고 생각합니다. 특히 두 가지를 함께 묶으려고하지만 간단하게 만 수행합니다. 문제 변경 사용자에게 이메일을 보내고, 문제에 댓글을 추가하고, Jira와 같은 전문 소프트웨어에서 훨씬 더 잘 수행되는 문제에 첨부 파일을 추가하는 것과 같은 몇 가지가 있습니다. 반면에 Jira는 버전 작성, 병합 및 분기 소스에 능숙하지 않습니다. 이는 Subversion과 같은 특수 소프트웨어에서 더 잘 처리됩니다.

전체 공개의 경우 Bugzilla, TRAC, IBM Rational Jazz 등과 같은 Jira 이외의 도구가 있습니다. 이는 Jira가 다양한 수준의 기능으로 수행하는 것과 동일한 일을 할 수 있습니다.

SVN 책의 주제를 살펴보십시오.

태그그리고저장소 탐색

태그와 브랜치는 "쓰기에 복사"되므로 저장소에 추가 사본이 없음을 의미합니다. 일반적으로 개별 개발자는 이유가 필요하지 않으면 (즉, 지점에서 개발) 로컬 사본을 가질 필요가 없습니다.

각 릴리스에 태그를 지정하면 저장소를 탐색하여 태그를 볼 수 있습니다. 위의 링크는 명령 줄 도구에 대해 직접 대화하지만 Windows에는 TortoisesVN과 같은 GUI 도구도 있습니다. 역사를 얻거나 비교 등을 할 수 있습니다.

릴리스에서 변경된 변경 사항을 보려면 이전 태그의 개정 +1로 다시 원하는 태그의 수정에서 트렁크 로그를 표시합니다. 추가 작업처럼 들리지만 익숙해지면 매우 간단합니다.

빌드 도구를 사용하면 일부 버전 번호 정보가 트렁크에 다시 제공되는 파일을 다시 커밋하며 주석에는 빌드 버전 번호가 있습니다. 기본 코드가 트렁크에있는 경우 빌드에있는 것 (버전 사이의 모습)에 대한 마커 역할을 할 수도 있습니다.

커밋 메시지를 사용하려면 +1.

프로젝트의 경우 Build라는 SVN 사용자를 만들었습니다. 빌드 머신은이 로그인을 SVN에 사용했습니다. 빌드 머신/프로세스가 빌드를 수행 할 때마다 파일도 업데이트되었으며 SVN 커밋 메시지는 빌드의 버전/기타 식별자였습니다.

그런 다음 해당 빌드에 대한 태그도 만들었습니다. 이런 식으로 트렁크에서 우리는 다른 변화와 산재 할 때/어디에서 빌드를 볼 수있었습니다.

따라서 내 제안 (가장 간단한 방법)은 Build (또는 원하는 다른 것)라는 다른 파일을 만들고이를 추가하거나 빌드 스크립트/프로세스에서 수정 한 다음 이름으로 다시 확인/커밋하는 것입니다. 릴리스 버전의 커밋 메시지. 단순한. 그런 다음 역사 쿼리에 나타납니다.

또한 SVN Diff를 수행 할 수있는 수정 사항을 알고 있으면 어떤 파일이 변경되었는지, 두 개정판 사이의 방법을 볼 수 있습니다.

총 설정에 대해 잘 모르겠지만 누군가가 거북이를 언급했습니다. 그것은 확실히 좋은 시작입니다. 나는 서브 클립 플러그인과 함께 Eclipse를 개인적으로 사용하며 개정 사이의 그래픽 환경에서 차이를 수행 할 수 있습니다. 프로젝트가있는 한 모든 개정판을 다른 개정판과 비교할 수 있으므로 모든 종류의 파일 복제가 필요하지 않습니다.

또한 일반적으로 각 저장소에서 세 가지 디렉토리를 설정합니다. 가지, 트렁크 및 태그. 누군가가 언급했듯이 태그는 릴리스를 식별하는 데 특별히 사용됩니다.

동일한 문제가 발생하고 회사를 위해 문제를 해결하려고 시도한 방식은 트렁크에 '릴리스'폴더를 갖는 것입니다.이 폴더에는 실제 실행 파일 또는 배포의 일부가 필요한 것이 포함되어 있습니다.

'릴리스'폴더에서 '1.0.0.0'으로 시작하여 각 릴리스마다 새 폴더를 만들고 동일한 릴리스 폴더 이름, 즉 1.0.0.0으로 코드를 태그합니다.

그것이 올바른 방법인지 확실하지 않지만 배치 한 실행 파일을 찾기 위해 내 문제를 해결합니다.

저장소의 루트에있는 "Tags/Branches/Trunk"의 일반 SVN 협약을 따르면 개발자는 일반적으로 트렁크 다운에서만 전체 저장소를 체크 아웃하고 싶지 않을 것입니다.

언급 된 문제를 해결하는 데 도움이되는 다른 접근 방식을 제공하고 싶습니다. 릴리스 노트 생성 및 릴리스 간의 코드 차이보기.

우리는 거북이 SVN과 함께 제공되는 subwcrev라는 유틸리티를 사용합니다. 우리는 SVN 개정 번호를 잡고 파일로 고정시키는 구축 후 이벤트가 있습니다. 웹 사이트의 경우 version.html이라는 파일에 넣습니다. 그런 다음 언제든지 릴리스 (현재 QA, Prod 또는 기타 환경에있는 릴리스이든)을 SVN의 정확한 개정 번호에 묶을 수 있습니다. 더 이상 태깅이없고, 더 이상 릴리스에 포함되어 있는지 궁금하지 않으며 더 이상 버그를 버는 개발자가 버전 파일을 업데이트하지 않습니다.

릴리스에 포함 된 내용을 결정하려면 개정 X에서 수정 y로 SVN 로그를 가져 와서 댓글을 문서로 복사하고 편집하여 예쁜 릴리스 노트를 작성할 수 있습니다. 코드 검토 또는 릴리스를 차단하는 것도 마찬가지입니다. version.html, properties.cs, readme.txt 등에 묶인 개정 번호를 사용하기 만하면됩니다.

또한 빌드를 유지하기 위해 일종의 아티팩트 저장소를 갖는 것이 좋습니다. SVN 개정 번호를 버전 번호로 사용하는 경우 SVN의 정확한 개정판으로 돌아갈 수 있습니다. 즉, SVN에 놓인 각 릴리스에 대해 소스의 태그 나 사본이 필요하지 않음을 의미합니다.

참고,

SVN 사본은 하드 카피가 아니므로 연결되어 있으므로 변경된 파일 이외의 공간을 차지하지 않습니다. 그리고 그 버전은 어쨌든 공간을 차지할 것입니다. 따라서 모든 릴리스에 대한 사본을 작성해도 공간이 필요하지 않습니다.

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