인수 합병으로 인해 다양한 버전 제어 시스템을 통합하거나 다른 버전 제어 시스템 중 하나를 선택하는 방법은 무엇입니까?


11

회사는 다른 버전 제어 시스템을 사용하는 다른 회사를 인수합니다.

예를 들어 Subverson-GIT 브리지를 사용하거나 한 도구를 다른 도구로 사용하기로 결정하는 등 시스템을 통합하는 방법과 시스템 간 마이그레이션 방법에 대한 공통된 지식이 있습니까?

사람들은 그러한 의사 결정을 위해 소프트웨어 개발에 대한 "Joel"테스트와 같은 일련의 기준을 사용합니까?

답변:


11

여러 마이그레이션의 개인적인 경험에서 마이그레이션 질문에 대답하려면 다음을 수행하십시오.

현재 버전의 소프트웨어를 새로운 소스 제어 시스템에 기본 라인으로 넣고 거기서부터 작업하는 것을 두려워하지 마십시오.

대부분의 시간은 역사가 필요하지 않습니다. 즉, 통합 중에 수행해야 할 작업이 적고 잘못해야 할 일이 적습니다.

활발하게 개발중인 파일 / 프로젝트는 곧 새로운 역사를 만들어 낼 것입니다. 따라서 변경이 발생한 이유를 찾아야 할 경우 히스토리가 최근 변경 사항이므로 현재 저장소에있을 가능성이 있습니다.

마이그레이션 이전에 안정적인 파일 / 프로젝트는 마이그레이션 후에도 모든 것이 동일하게 유지되므로 기록을 참조 할 필요가 없습니다. 히스토리가있는 오래된 파일 / 프로젝트에서 버그를 조사해야한다면 실제로 아무런 이점이 없다는 것을 알았습니다. 이전 저장소를 1 년에 6 개월 동안 사용할 수있는 한 그러한 경우에 참조가 필요합니다.


+1 페어 포인트, 필요한 것만 마이그레이션하고 이전 버전은 레거시 이전 리포지토리에 그대로 둡니다. 자체적으로 마이그레이션하지 마십시오. 이 접근 방식은 조직화와 검색 중 선택에 대한 접근 방식의 변형입니다. 검색을 통해 원하는 것을 빨리 얻을 수 있다면 검색 할 내용을 정리할 필요가 없습니다.
therobyouknow

1
최고의 전략 +1 IMO. 만일을 대비하여 하나만 사용하고 다른 하나는 읽기 전용 모드로 유지하십시오.
user281377

1
+1 : 마이그레이션 부분에 대한보다 정확한 답변.
VonC

1
+1-마지막 세 가지 버전은 물론 기존 코드를 이해하기에 충분하지 않습니다.
JeffO

1
멋진 cvs2svn 스크립트를 사용하여 많은 CVS 저장소를 SVN으로 변환했습니다. 나는 '최근의 변화'이상의 역사를 찾는 사람을 기억하지 못하기 때문에 실제로 디스크 공간에 가치가 없었습니다. 다시 한 번 수행하면 CVS 저장소에 태그를 지정하고 SVN에 새로 체크인 한 다음 CVS 저장소를 읽기 전용으로 표시하면됩니다.
JBR 윌킨슨

4

경영 측면에서는 주로 다음과 같은 문제입니다.

  • 지원 : 문제 발생시 VCS를 출시하는 회사가 여전히 존재합니다.
    슬프게도 ClearCase와 같은 구식 제품이 여전히 고려되는 주된 이유 중 하나입니다 (2003 년 이후 ClearCase는 IBM 제품).
  • 라이센스 비용 : 프리웨어 대안이 있더라도 VCS에 대한 "그룹 라이센스"가 협상되거나 실제로 서버, 네트워크, 지원 등을 포함한 훨씬 더 큰 계약에 포함될 수 있습니다. 이러한 종류의 제품에 대한 글로벌 라이센스는 종료 될 수 있습니다 공공 가격보다 훨씬 저렴합니다.

프로젝트 측면에서도 다음과 같은 질문입니다.

  • 관리 : 어떤 서버에 VCS (또는 Git, SVN 및 기타에 대해 이야기하는 경우 많은 VCS)를 설치할 것입니까? 어떤 백업 정책을 사용합니까? 어떤 DRP (재해 복구 계획)?
  • 현지 지원 : 누가 레벨 1 지원을 받습니까? 레벨 2?
  • 시장 지식 :이 VCS 및 모든 기능을 활용할 수있는 올바른 지식을 갖춘 충분한 개발자 및 / 또는 관리자를 찾으십니까?

프리웨어 여부에 상관없이 "무료 맥주"가 아닌 "무료 음성"(무료 음성) (원하는 것을 자유롭게 선택하여 배포 할 수 있음)과 같이 "무료"소프트웨어는 무료입니다 (서버에 많은 비용이 소요됨) , 백업, 관리, 지원 등)

위에서 언급 한 기준은 어떤 VCS를 유지할 것인지, 무엇을 버릴지를 결정하기위한 시작입니다.
그러나 후자의 경우 다음을 고려해야합니다.

  • 마이그레이션 전략 : 한 VCS에서 다른 VCS로 프로젝트 히스토리를 내보내거나 가져올 수 있습니까?
  • 교량 전략 : 두 개의 다른 VCS에 역사를 갖는 것이 합리적입니까?
  • 프로젝트 노후화 : 프로젝트가 유지 보수 / 종료 상태 인 경우 잠시 동안 이전 VCS를 지원하는 것이 좋습니다.

+1 좋은 답변, 글 머리 기호는 내가 찾는 기준을 간략하게 설명하며 이에 대한 설명도 도움이됩니다. 답변을 수락하기 전에 다른 사람들에게 기회를 주겠습니다. 감사.
therobyouknow

1

다른 시스템을 통합해야합니까? 우리 팀에서 각 프로젝트는 자체 저장소에 존재하므로 그 역사는 독립적입니다. 우리는 여기에 종속이 있더라도 서브 버전의 프로젝트와 수은의 프로젝트를 다루는 데 아무런 문제가 없습니다.

한 VCS에서 다른 VCS로 마이그레이션하기로 선택한 경우 사용 가능한 변환 도구를 살펴보십시오. 내 경험으로는 프로젝트 기록을 삭제해야 할 기술적 이유가 없습니다.

편집하다

나는 질문과 다른 답변에 암시 된 것을 이해했다고 생각합니다. VCS는 종속성을 관리하는 데에도 사용됩니다. svn:externals하나의 리포지토리 (종속성)를 다른 리포지토리 와 통합하는 것과 같은 VCS 기능을 사용하는 것이 일반적이라는 것을 알고 있습니다 .

우리 팀이 2 개의 다른 시스템을 연결 (또는 통합) 할 필요가 없다고 생각하는 (기술적 인) 이유는 의존성을 관리하는 별도의 도구가 있기 때문입니다. 우리의 레포는 서로를 모른다.


다른 시스템을 통합해야합니까? 한 팀의 작업이 다른 팀에서 사용되는 경우 가능합니다. 필요한 수준과 사용 가능한 직원 리소스에 따라 통합이 빡빡하거나 손실 될 수 있습니다. 프로젝트가 완전히 독립적이라면 아니오. 남아있는 유일한 관심사는 하나 이상의 시스템을 지원하는 것입니다. 그리고 그것이 좋은지 나쁜지 인식됩니다. 우리가 다양한 컴퓨팅 환경에 살고 있다는 사실을 받아들이면 좋으며 지나치게 독설적일 수있는 도구 하나만 선택하여 자신의 목적에 초점을 맞추고 결단력을 발휘해야한다고 생각한다면 좋지 않습니다!
therobyouknow

추신. +1 다양한 컴퓨팅 환경을 견딜 수있는 조직에있는 것에 대해 바락에게 감사합니다.
therobyouknow

0

많은 좋은 답변입니다. 고려해야 할 또 다른 사항은 팀 구성원이 VC 전환을 생각하지 못하게하는 것입니다. 이주, 학습 곡선 등으로 인해 어려움이있을 수 있지만 문제가 너무 많으면 능력 및 / 또는 협력 수준에 의문을 제기해야합니다.


+1 현실주의. 사람들은 자신의 신경을 유지하고 용감하고 진행해야합니다. 위험을 잘 정의해야합니다. 다른 사람들이 직장에서 말하는 것을보고 듣고 듣는 한 가지 학습은 때때로 우리가 참여하기 전에 불확실성을 줄이고 / 위험 / 연속성을 명확하게 정의하기 위해 충분히 열심히 일하지 않는다는 것입니다. get-it-rong / fix 반복에 대한 시간은 충분하지만 처음에 올바르게 얻을 수있는 시간은 충분하지 않은 것 같습니다. 문제 해결은 보상이 필요하며 때로는 불필요하더라도 진행중인 활동으로 간주됩니다.
therobyouknow

1
문제의 VCS와 마이그레이션이 얼마나 잘 수행되는지에 따라 다릅니다. Git 또는 CVS에서 잠금 VCS로 이동하면 매우 혼란 스러울 것입니다.
David Thornley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.