이 게시물 은 관련 이있는 것처럼 보이지만 내 두뇌가 녹기 시작했습니다.
제 고용주는 소스 제어를 사용하기 시작했습니다. 주로 더 많은 개발자를 고용하기 전에 "집"은 주로 집에서 일하는 고독한 개발자의 하드 드라이브였습니다. 그가 작성한 모든 .NET 코드는 대량 으로 체크인되었으며 복제 된 (읽기 : 복사하여 붙여 넣기) 기능이 많이 있습니다. 현재 SCM 시스템은 영광스러운 백업입니다.
복제 된 코드 중 일부를 공유 라이브러리로 가져오고 싶습니다. 원본 리포지토리 만 남겨두고 아무 것도 깰 필요가 없습니다. 필요한 경우 기존 코드를 이동 및 / 또는 리팩터링 할 수 있습니다. 그래서 라이브러리를 포함한 새로운 코드에 대해서만 리포지토리를 설정했습니다.
내 문제는 과도한 프로세스로 인해 우리를 방해하지 않고 라이브러리 버전을 유지하는 것입니다. 더 많은 개발자가 매우 유사한 코드를 작성하고 관리하고 다른 개발자는 재구성 할 수는 있지만 더 일관성있는 접근 방식이 필요하다는 것을 인정했지만 솔루션이 생산성에 영향을 미치기 시작하면 제대로 내려갑니다.
강박 관념에 이상적인 솔루션은 라이브러리를 개별적으로 빌드하는 것입니다. 각 종속 프로젝트는 의도적으로 선택되고 호환되는 버전에 대해 빌드됩니다. 그렇게하면 어떤 클라이언트가 어떤 버전의 라이브러리를 가지고 있는지 정확하게 알 수 있으며, 버그를보다 안정적으로 재현하고, 제품과 라이브러리에 대한 독립적 인 릴리스 브랜치를 유지하고, 공유 코드를 변경할 때 서로의 프로젝트를 중단하지 않습니다.
이것은 특히 집에서 일하는 개발자에게 라이브러리 업데이트를 번거롭게 만듭니다. 적어도 처음에는 공통 비트를 함께 가져 오기 때문에 라이브러리가 빠르게 변경 될 것으로 기대합니다. 그것은 내가 완전히이 지나친하고있어 우리가 좋은 단지 가장 최근의 라이브러리 커밋에 대해 모든 것을 구축 할 거라고 확실히 가능하지만 나는 적어도이 수에하고자 준비 우리는 일부 구성 요소가 독립적으로 버전이되어야한다는 결정 날과 분산. 일부 라이브러리를 GAC에 설치해야한다는 사실 때문에 버전 관리가 특히 중요합니다.
그래서 내 질문은 : 내가 무엇을 놓치고 있습니까? 하나의 솔루션으로 수정 한 것처럼 느껴지고 이제 더 부드럽게 변경하는 변형을 찾으려고합니다. 이전에 이런 종류의 문제를 해결하기 위해 어떤 종류의 전략을 사용해 보셨습니까? 나는이 질문이 모든 곳에 있다는 것을 알고있다. 불확실성을 정리하고 명확하게하기 위해 최선을 다하겠습니다.
그리고 Mercurial을 사용하고 싶을만큼 이미 중앙 상업 SCM (Vault)에 돈을 투자했으며 전환은 옵션이 아닙니다. 게다가, 여기서 문제는 버전 제어 도구의 선택보다 더 깊다고 생각합니다.