2011-02-01 4 views
1

우리 팀은 두 곳의 지리적 위치에 분산되어 있습니다. 우리가 수행하는 다양한 테스트의 자동화를 위해 유사한 스크립트를 공유하고 사용합니다. 최근 소스 제어를 사용하여 사용중인 다른 스크립트를 관리하기로 결정했습니다. 지금까지 우리가 생성 한 스크립트는 다른 위치로 공유되었지만 필요에 따라 사소한 로컬 수정을 사용했습니다. 로컬 설치와 관련된 사소한 수정으로 동일한 버전의 스크립트를 사용하게됩니다. 소스 컨트롤에서이를 가장 잘 구성하는 방법. 우리는 두 위치에 걸쳐 복제 된 저장소로 Subversion을 사용할 계획입니다.분산 된 팀의 소스 제어 폴더 구성

하나의 해결책은 각 위치마다 폴더 두 개를 만드는 것이 었습니다. 따라서 업로드하는 모든 스크립트는 우리 자신의 디렉토리에 복사하고 로컬 수정을 수행합니다. 다른 제안?

감사합니다 ...

답변

2

스크립트를 보관할 단일 저장소가 있어야합니다. 각 수정 (로컬 또는 원격 팀 별)은 버전이 지정됩니다. 변경 사항을 롤백 할 수 있습니다. 업데이트 내역 등이 있습니다. 여러 개의 폴더가 버전 제어 시스템을 사용하는 목적을 무효화합니다. 물론 스크립트의 논리적 분리를위한 하위 폴더를 가질 수 있습니다.

네트워크 성능이 문제가있는 경우 git 또는 mercurial과 같은 분산 버전 제어 시스템을 살펴볼 수 있습니다.

+0

위치와 관련된 사소한 수정으로 동일한 버전의 스크립트를 사용하게 될 것입니다. 각 위치마다 다른 버전을 사용하지 않으면 업데이트 할 때 혼동이 생깁니 까? Git을 사용하고 싶지만 우리 회사는 아직 지원하지 않습니다. (... ( – Manoj

+1

@Manoj) 스크립트에서 위치 특정 항목을 매개 변수화하거나 이동하려고 시도해야합니다. – Raghuram

+0

예 ... 시도해 볼 수 있습니다. – Manoj

1

사이트 당 브랜치가 표시됩니다..
각 사이트는 해당 지점에서 완전한 소유권을 갖고 있으며 사이트 분기에서 한 사이트가 변경 한 내용을 가져 오거나 병합합니다.

중앙 집중식 VCS를 사용하면 두 수동 복제간에 기록 차이가 발생하지 않도록하기 위해 SVN repo에 원격으로 액세스하는 것이 좋습니다 (사이트 중 하나에 대해).

Raghuram으로, Git 또는 Mercurial이 해당 시나리오에 더 적합합니다.

+0

사이트 별 브랜치 - 단일 트렁크에서 시작하여 각 사이트에 대해 하나의 분기를 만들고 계속 수정합니다. 필요한 업데이트와 수정을 – Manoj

+0

@Manoj : 네, 트렁크에 수정을 할 필요가 없다면 다시 병합하지 않을 것입니다.하지만 몇 가지 진화가 이루어지면 원격 사이트에서 해당 사이트를 검토하고 자신의 지점에서 병합 할 수 있습니다. – VonC

1

내가 SVN으로 근무 한 적이없는하지만 ... 다른 많은 VCS 시스템과 광범위하게 근무하고있다

나는 우선 순위가 "당신은 변수화 또는 위치 특정 항목을 이동하려고한다"이어야합니다 동의

,하지만 첫 번째 우선 순위는 공통 저장소에서 소스 제어하에있는 모든 스크립트를 가져 오는 것입니다. 실제로, 프로세스 문서도 소스 제어하에 있어야합니다.

이전에 자신의 스크립트 용 CM 도구를 사용하지 않은 CM 팀에 합류했습니다. 물론, 모든 구성원이 동일한 작업을 위해 동일한 스크립트를 사용하지 않는 문제를 발견 할 때가 있습니다. 스크립트와 문서를 저장소에 저장하면 누구나 동일한 도구를 사용하고 최신 상태로 유지하는 것이 편리하고 쉽습니다.

스크립트 등을 보편화하려면 common/site A/site B/구조가있는 스크립트의 폴더 트리를 만드십시오. 해당 사이트의 모든 스크립트를 디렉토리 아래에 두십시오. 그런 다음 동일한 스크립트가 "공통"으로 마이그레이션되고 다른 스크립트에서 삭제되며 모든 것을 검사합니다. 궁극적 인 목표는 모든 스크립트를 공통 코드 기반으로 이동시키는 것입니다. 이를 달성하기위한 일반적인 현지화 해제 프레임 워크 또는 템플릿이 프로세스 속도를 높입니다. 처음 몇 가지 작업을 완료하면 나머지는 매우 빠르게 수행됩니다. 별도의 디렉토리를 사용하면 쉽게 현지화를 서로 비교하고 제거 할 수 있습니다.

사용자가 지속적으로 병합 (merge)하고 로케일에 대한 지역화 데이터를 덮어 쓰거나 체크 아웃 후 수동으로 해체해야하는 상황에 직면하고 싶지는 않습니다. 일반적으로 모든 스크립트를 업데이트 할 때는 탈 로컬라이제이션 (de-localizing)을 염두에두고 수행해야합니다. 정상 참작이 필요하지 않은 한 일반적인 업데이트 만 허용합니다. 한 쪽을 수행 할 때 업데이터가 A와 B 브랜치를 모두 업데이트하도록합니다. 사람들은 물건을 두 번이나 (그리고 다른 사람의 이익을 위해서) 피곤해하고 쉽게 탈 지역화 스크립트를 시작할 것입니다.

관련 문제