버전 관리 코드는 어떻게 저장해야합니까?


19

버전 관리 코드는 어떻게 저장해야합니까?

친절한 개발자 ? 프로그래머가 최신 정보를 빠르게 가져 와서 많은 변경없이 편집기에서 실행할 수 있습니까? (dev DB..etc를 가리키는 설정 파일과 같은)

또는

생산 친화적 이어야 합니까? 소스는 프로덕션 환경에 배포하기 쉬운 방식이어야하며 개발자가 최신 버전을 사용하는 경우 개발 요구에 따라 변경을 수행해야합니다.

답변:


56

왜 선택합니까? 둘 다되어야합니다.

개발 환경은 체크 아웃, 열기, 빌드, 실행, 디버그 (예 : 절대 경로 없음)를 수행하는 것처럼 쉽게 구성 할 수 있어야합니다. 컴파일 지시문, 구성 클래스 + 종속성 주입 또는 ASP.NET의 perso.config와 같은 트릭으로 쉽게 수행 할 수 있습니다.

자동화 된 빌드 스크립트는 특정 프로덕션 구성, 정리, 패키징 등을 처리 할 수 ​​있도록 사용자 정의해야합니다.


Perso.config은 (는) 무엇 이죠? 빠른 Google은 도움이되지 않았습니다.
Tim Murphy

1
.NET 응용 프로그램 구성 파일에서 발견되면 지정된 설정을 재정의하는 다른 응용 프로그램 구성 파일을 참조 할 수 있습니다. 따라서 연결 문자열 및 기타 항목을 재정의하고 repos에서 제외하는 dev.config 파일을 만들 수 있습니다.

5
+1-개발자는 올바른 소스를 얻는다고 생각 해서는 안됩니다 . 또한 프로덕션 배포는 소스 제어에서 직접 수행하지 말고 올바르게 빌드하고 테스트하고 추적 할 수있는 부분으로 수행해야합니다. 이 프로세스는 완전히 자동화되어야합니다.

9

사람들이 기여할 것으로 예상되는 오픈 소스 프로젝트 일 때 개발자 친화적 인 것을 선택했습니다.

오픈 소스 프로젝트에 대한 저의 가장 싫어하는 점은 저장소에 코드를 빌드하는 데 필요한 모든 종속성 (실제 또는 법적 이유로)이 거의 포함되지 않는다는 것입니다. 필요한 버전이 필요합니다. (그리고 바람직하게는 어디서 얻을 수 있는지)

때로는 반나절을 넘겨 다른 프로젝트를 가져와 컴파일하여 나중에 프로젝트를 빌드 할 수 있습니다.

물론 이것은 실제로 Windows에서의 개발에만 관련됩니다.


1
그것은 나에게 지옥을 버그. 잘 알려진 OSS에서도 찾을 수 있습니다.
Tim Murphy

1
종속성을 자동으로 가져 와서이 문제를 완화시키는 시스템이 있습니다. 예 : Apache Maven, Ivy 또는 scons.
sleske

4

둘 다하지만 생산 빈도에 따라 다릅니다. 많은 사용자 지정 응용 프로그램의 경우 배포는 수동 및 로컬로 수행됩니다. 반면에 개발자는 프로젝트의 규모에 관계없이 지속적으로 코드를 커밋합니다. 제 생각에는 개발자가 버전 컨트롤을 올바르게 사용할 수 있는지 확인하는 것이 더 중요하다고 생각합니다. 따라서 버전 컨트롤을 통해 길을 찾는 대신 코드에 집중할 시간을 가지게됩니다.


연속 배포 엔진을 사용하여 빌드하는 경우 프로덕션 배포는 문제가되지 않아야합니다.

1

생산 친화적이어야하며, 그렇지 않으면 자동화 된 빌드를 유지 관리하는 데 문제가 있습니다.


8
왜? 자동화 된 빌드 스크립트는 필요한 모든 번역을 수행하여 소스를 배포 가능한 형태로 재구성 할 수 있습니다. 자동화로 무언가를 해결할 수있는 사람들을 귀찮게하지 마십시오.
Joeri Sebrechts

1

마찰을 줄여서 작업을보다 쉽게 ​​수행 할 수 있지만 실패 모드도 고려해야합니다.

소스 리포지토리 버전이 항상 프로덕션 용으로 구성된 경우 시스템을 실행하기 전에 개발자가 재구성하지 못한 결과는 무엇입니까? 프로덕션에 대해 코드를 실행하는 개발자

개발자가 생산을 무작위로 변경하는 방식에 다른 장애물이 있는지 여부에 관계없이 실패 모드로 구축하면 문제가 발생할 수 있습니다.

커밋 된 코드에 포함 된 기본값은 항상 안전 해야 합니다 . 원한다면 프로덕션 구성 파일도 소스 제어로 확인하십시오. 거의 항상 그렇습니다.


0

나는 생산 친화적 인 노력을하는 경향이 있습니다. 빌드를 깨끗하게 유지하고 외부 설정이 프로덕션 환경에 들어가는 것을 방지합니다.


0

QA 및 프로덕션 변경을 자동화하는 스크립트를 통해 개발자 친화적 임


-1

배포 가능한 코드 및 개발자 준비 버전에 대한 분기 (사용하는 버전 제어에 따라-Git 사용)가없는 이유는 무엇입니까? 이것은 훨씬 더 좋은 소리이며 설정하기가 어렵지 않습니다.

변경 사항을 작업 및 커밋 한 다음 배포 가능한 버전에서 병합 할 수 있습니다.


수명이 긴 지점은 관리 비용이 많이 들고 병합하기 어려운 경향이 있기 때문입니다. 두 지점에서 모든 변경을 수행해야합니다. 두 버전을 동일하게 만들거나 개발자 준비 코드에서 배포 가능한 artifcat을 생성하는 스크립트를 만드는 것이 훨씬 좋습니다.
bdsl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.