[svn] SVN, Branch를 사용하는 방법? 꼬리표? 트렁크?

나는 약간의 인터넷 검색을하고 있었고 “어떻게 명령을 사용 하는가”라는 의미가 아니라 SVN 에 대한 “초보자”안내서를 찾을 수 없었다 . 소스 코드를 어떻게 제어합니까?

정리하고 싶은 것은 다음과 같습니다.

  • 얼마나 자주 커밋합니까? 자주 Ctrl+를 누르는 것처럼 s?
  • 지점이란 무엇이며 태그는 무엇이며 어떻게 제어합니까?
  • SVN에는 어떤 것들이 있습니까? 여기에서만 소스 코드 또는 다른 파일을 공유합니까? (버전이 지정된 파일로 간주되지 않습니다..)

나는 브랜치와 태그가 무엇인지 전혀 모른다. 그래서 목적을 알지 못한다. 그러나 나의 추측은 트렁크에 물건을 업로드하고 주요 빌드를 할 때 브랜치로 옮기는 것이라고 생각한다. 그렇다면이 경우 주요 빌드로 간주되는 것은 무엇입니까?



답변

서브 버전 책은 , 저장소를 배치 분기 및 태그에 대한 전략에 대한 정보의 훌륭한 소스입니다.

또한보십시오:

지점 또는 트렁크에서 개발을 계속합니까

분기 전략


답변

Subversion을 구현할 때도 같은 질문을했습니다. 4-6 개의 프로젝트에 약 20 명의 개발자가 있습니다. 나는“답변 ”으로 좋은 소스를 찾지 못했습니다. 지난 3 년간 Google의 답변이 어떻게 발전했는지에 대한 일부 내용은 다음과 같습니다.

-유용한만큼 자주 커밋; 우리의 경험 법칙은 수정 작업을 잃어버린 경우 다시해야하는 문제가 될만큼 충분한 작업을 수행 할 때마다 커밋됩니다. 때로는 15 분마다 커밋하고 다른 경우에는 며칠 일 수 있습니다 (예, 때로는 한 줄의 코드를 작성하는 데 하루가 걸립니다)

-우리는 다양한 개발 경로에 대해 이전 답변 중 하나에서 제안 된 분기를 사용합니다. 현재 우리 프로그램 중 하나에 대해 3 개의 활성 브랜치가 있습니다.

-태그를 거의 사용하지 않지만 프로덕션 릴리스를 식별하기 위해 태그를 사용해야한다고 생각합니다.

단일 경로를 따라 개발이 진행되는 것을 생각하십시오. 어느 시점 또는 개발 상태 마케팅에서 제품의 첫 번째 버전을 릴리스하기로 결정하므로 ‘1’(또는 ‘1.0’또는 무엇을 가지고 있는지)이라는 경로에 플래그를 설치하십시오. 다른 때에 약간의 밝은 불꽃이 프로그램을 병렬화하기로 결정했지만 몇 주가 걸리고 사람들이 그 동안 계속해서 주요 길을 가고 싶어하기로 결정했습니다. 그래서 당신은 길에 포크를 만들고 다른 사람들이 다른 포크를 헤매고 있습니다.

도로의 깃발을 ‘태그’라고하며 도로의 포크는 ‘분기’가 나뉘는 곳입니다. 때때로, 가지도 함께 돌아옵니다.

-실행 파일 (또는 시스템)을 구축하는 데 필요한 모든 자료를 저장소에 넣습니다. 즉, 최소한 소스 코드와 파일 (또는 Visual Studio 용 프로젝트 파일)을 만들어야합니다. 그러나 아이콘과 구성 파일 및 기타 모든 것들이 있으면 저장소에 들어갑니다. 일부 문서는 저장소에 들어갑니다. 프로그램에 필수적 일 수있는 도움말 파일과 같은 문서는 물론 개발자 문서를 저장하는 데 유용한 장소입니다.

심지어 소프트웨어를 찾는 사람들에게 단일 위치를 제공하기 위해 프로덕션 릴리스 용 Windows 실행 파일도 넣었습니다. Linux 릴리스는 서버로 이동하므로 저장할 필요가 없습니다.

-리포지토리가 항상 빌드하고 실행하는 최신 버전을 제공 할 필요는 없습니다. 어떤 프로젝트는 그런 식으로 작동하지만 어떤 프로젝트는 그렇지 않습니다. 결정은 프로젝트 관리자에게 달려 있으며 많은 요인에 달려 있지만 프로그램을 크게 변경할 때 결정이 내려 진다고 생각합니다.


답변

* How often do you commit? As often as one would press ctrl + s?

가능한 한 자주. 소스 제어하에 있지 않으면 코드가 존재하지 않습니다 🙂

빈번한 커밋 (이후 더 작은 변경 세트)을 사용하면 변경 사항을 쉽게 통합하고 무언가를 중단하지 않을 가능성을 높일 수 있습니다.

다른 사람들은 함수형 코드가있을 때 커밋해야한다고 언급했지만 조금 더 자주 커밋하는 것이 좋습니다. 몇 번이나 소스 컨트롤을 빠른 실행 취소 / 다시 실행 메커니즘으로 사용하는 것으로 나타났습니다.

내 자신의 지점에서 일할 때 나는 가능한 한 많이 커밋하는 것을 선호합니다 (문자 그대로 Ctrl + s를 누를 때마다).

* What is a Branch and what is a Tag and how do you control them?

SVN 서적 읽기 -SVN을 배울 때 시작해야하는 곳입니다.

* What goes into the SVN?

문서화, 빌드에 필요한 작은 바이너리 및 일부 가치가있는 기타 것들이 소스 제어로 이동합니다.


답변

커밋 빈도, 커밋 메시지, 프로젝트 구조, 소스 제어 및 기타 일반적인 지침에 대한 리소스는 다음과 같습니다.

이 스택 오버플로 질문에는 다음과 같은 유용한 정보가 포함되어 있습니다.

분기 및 태그 지정과 같은 기본 Subversion 개념에 대해서는 Subversion 책 에서 잘 설명되어 있다고 생각합니다 .

이 주제에 대해 조금 더 읽은 후에 알 수 있듯이이 분야의 모범 사례에 대한 사람들의 의견은 다양하고 때로는 상충됩니다. 가장 좋은 방법은 다른 사람들이하는 일을 읽고 자신에게 가장 적합한 지침과 관행을 선택하는 것입니다.

연습의 목적을 이해하지 못하거나 그 근거에 대한 이론적 근거에 동의하지 않는 경우 연습을 채택하는 것은 좋은 생각이 아닙니다. 따라서 맹목적으로 조언을 따르지 말고 자신에게 가장 잘 맞는 것에 대해 스스로 생각하십시오. 또한 여러 가지 일을하는 방법을 실험하는 것이 자신이 가장 잘 일하는 방법을 배우고 찾는 좋은 방법입니다. 이에 대한 좋은 예는 저장소를 구성하는 방법입니다. 옳고 그른 방법은 없으며 실제로 실제로 시도하기 전에는 어떤 방법을 선호하는지 알기가 어렵습니다.


답변

커밋 빈도는 프로젝트 관리 스타일에 따라 다릅니다. 많은 사람들이 빌드 (또는 기능)를 깨뜨릴 경우 커밋을 자제합니다.

분기는 일반적으로 다음 두 가지 방법 중 하나로 사용될 수 있습니다. 1) 개발을위한 하나의 활성 분기 (및 트렁크는 안정적으로 유지됨) 또는 2) 대체 개발 경로를위한 분기.

태그는 일반적으로 릴리스를 식별하는 데 사용되므로 믹스에서 손실되지 않습니다. ‘릴리스’의 정의는 귀하에게 달려 있습니다.


답변

주된 문제는 소스 제어의 정신적 그림이 혼란 스럽다고 생각합니다. 우리는 보통 트렁크와 브랜치를 가지고 있지만 태그 / 릴리즈와 관련이없는 아이디어 나 그에 영향을주는 것을 얻습니다.

당신이 나무의 아이디어를 더 완전하게 사용한다면 그것은 적어도 더 나아질 것입니다.

우리는 줄기를 얻습니다.

아이디어는 트렁크에서 프로젝트를 확장 한 다음 트렁크가 분기를 보유 할 수있을만큼 안정적이되면 분기를 작성한다는 것입니다. 그런 다음 지점에서 과일을 생산하면 지점에서 과일을 뽑아서 태그로 해제합니다.

태그는 본질적으로 결과물입니다. 줄기와 가지가 생산하는 반면.


답변

다른 사람들이 말했듯이 SVN Book 은 시작하기 가장 좋은 곳이며 일단 바다 다리를 얻은 후에는 훌륭한 참고 자료입니다. 자, 당신의 질문에 …

얼마나 자주 커밋합니까? ctrl + s를 누르는 빈도는?

ctrl + s를 누르는 것처럼 자주는 아니지만 개인적인 취향 및 / 또는 팀 정책의 문제입니다. 개인적으로 나는 기능적인 코드 조각을 완성 할 때 커밋이라고 말하고 싶습니다.

지점이란 무엇이며 태그는 무엇이며 어떻게 제어합니까?

첫째, 트렁크는 당신이 적극적으로 개발하는 곳입니다. 코드의 메인 라인입니다. 브랜치는 메인 라인과 약간의 편차입니다. 이전 릴리스와 같이 큰 편차이거나 시도하려는 약간의 조정일 수 있습니다. 태그는 코드의 스냅 샷입니다. 특정 개정판에 레이블 또는 책갈피를 첨부하는 방법입니다.

또한 서브 버전에서 트렁크, 브랜치 및 태그는 컨벤션 일뿐입니다. 태그에서 작업을하거나 메인 라인 인 브랜치를 가지거나 태그 브랜치 트렁크 구성을 모두 무시하지 않아도됩니다. 그러나 그럴만한 이유가 없다면, 관습을 지키는 것이 가장 좋습니다.

SVN에는 어떤 것들이 있습니까? 여기에서만 소스 코드 또는 다른 파일을 공유합니까?

또한 개인 또는 팀 선택. 빌드와 관련된 모든 것을 내 저장소에 유지하는 것을 선호합니다. 여기에는 구성 파일, 빌드 스크립트, 관련 미디어 파일, 문서 등 이 포함됩니다. 각 개발자의 컴퓨터에서 다른 파일을 체크인 해서는 안됩니다 . 또한 코드의 부산물을 체크인 할 필요도 없습니다. 나는 주로 빌드 폴더, 객체 파일 등을 생각하고 있습니다.