3

우리 프로젝트는 svn에서 git까지 converted입니다. 개발자는 현재 git-svn을 사용하고 있지만 으로 이동하면 더 많은 전력을 활용할 수 있습니다. 위시리스트 : 자료 주류 및 준비 작업 사이svn과 동기화되는 안정적인 분기가 여러 개인 작업 흐름

  • 강력한 분기, 예컨대 주제/기능 분기
  • 분리, 병렬 때로는 여러.
  • 린 & 평균과 안정적인 젠킨스-CI 설치 - 최소한의 유지 보수
  • 짧은 반복, QA 매 2 주마다에 개발팀 자료 (각 릴리스 후 작업의 설정을 변경하는 대); 반드시 외부에있을 필요는 없습니다
  • 동일한 소스에서 여러 개의 제품 (P1..P3)을 독립적으로 출시했습니다. 변화하는 압력으로
  • "더 큰 팀"에 더 많은 캐주얼, 비 git 사용자가 있습니다 ... 그들은 S&U :)입니다.하지만 우리는 그들에게 최소한 1 개의 지점 (트렁크)에 대한 액세스 권한을 부여해야합니다. 그들의 공헌은 몇개의 dirs로 제한되어 있으므로 여기에 위험을 제기 할 필요는 없습니다.

다음 전략을 사용할 수 있습니까?

  1. 개발 : 개발 일어나는 주류 지점, 일품의 자식 흐름
  2. 안정적인 제품 지점 : 제품 1 .. 제품 3을. 이들 중 하나 이상이 dev에서 배포 될 때 메인 라인에서 병합됩니다. git flow에서 'release start 1.4.3'과 유사하지만 영구적 인 브랜치가 될 것입니다. 릴리즈는 여기에 태그를 추가 한 다음 다시 병합하여 개발합니다. 이 점은 git-flow에서 master와 같이 안정적 일 것이고, 그 중 몇 개는 안정적 일 것입니다.
  3. 대신 git-svn을 직접 사용하지 마십시오. 대신 미러를 밀거나 당깁니다. 필요한 경우, 기능 브랜치를 사용할 수도 있습니다.
  4. merge svn/trunk -> development. Svn은 가끔 고립 된 체크인을 할 것입니다. 그래서 젠킨스 직업에 의해 자동화를 계획하고 수동으로 병합 할 수 있도록 사람들에게 알립니다.
  5. merge development-> svn/trunk : 정기적으로 (예 : 매일) 일괄 처리 모드에서. 이것은 아마 최소한 (최소한 초보자를위한) shakiest 부분 일 것입니다. 그것을 잘 설명 및 자동화있어 주로로 - rebase or some reset wizardy
  6. CI 설정 같은 것을 계획하는 것은 간단한 것, 예를 들어, 테스트 및 디바이스가 메인 라인을 구축, 공식 제품에는 자신의 제품 가지

Git-Flow 유혹 오프 구축합니다. 그러나 그것은 내 경우에 완벽한 일치처럼 보이지 않는다. 주로 잠재적으로 병렬 릴리스, 여러 제품 라인 및 CI aspects이 원인입니다.

모든 해당 의견은 대단히 감사하겠습니다.

답변

3

음, 일단 git으로 변환하면 SVN에 대해 설정 한 일부 브랜치를 얻는 것이 꽤 해킹 될 것입니다. 나는 "사용자"가 배우거나 멀리 가야한다고 주장 할 것이다. git의 기능이 더 나은 지점 관리를 위해 필요하다면 S &에 관계없이 올바른 해결책입니다.

여러 프로덕션 릴리스를 관리하는 측면에서 필자가 생각해 낸 모델을 제공 할 것입니다 Net-SNMP 매우 잘 작동합니다. 우리는 수년간 유지되는 많은 프로덕션 버전 브랜치를 보유하고 있으므로 패치를 추적하는 것은 항상 SVN에서 어려움을 겪고있었습니다.우리의 새 Workflow에서 우리는 훨씬 더 행복해졌으며 일반적으로 실제 병합으로 일부 지점이나 다른 지점에 패치를 드롭하지 않았다고 생각합니다 (모든 지점에 각 패치가 포함되었는지 수동으로 확인해야했던 SVN).

+0

svn-> git 동기화 (포인트 4)에서 다시 간단하게 들립니다. 간단한 병합입니다. 다른 방법은 (# 5) 덜 역사적 선형을 만들 필요가 있습니다. 그것은 본질적으로 팀 수준에서 git-svn (여기서도 복잡한 병합을 수행하는 데 사용)과 같습니다. IMHO의 핵심은 규칙적이고 일관되게 그것을하는 것입니다. 정치를 제외하고 당신은 어떤 종류의 고통을 기대합니까? (사람들이 배우기에 행복해야한다는 데 동의하더라도, 지금 당장이 시간이 없다고 주장 할 수 있으며, 어쨌든 점진적으로 배포하는 것을 선호하며, 정치에 섞어서는 안된다.) – inger

+0

작업 흐름을 공유해 주셔서 감사합니다. 계단식 릴리즈 분기와 폭포 합병은 내 맥락에 적용 할 수없는 경우에도 흥미 롭습니다. 귀하의 경우에는 릴리스 지점이 유지 보수 목적으로 사용되는 것으로 보이며, 내 제품은 병렬 출시/경화 + 및 제품 중심의 깨끗한 역사를 제공합니다. – inger

+0

브랜치가 실제로 평행하다면 가능한 한 피쳐 브랜치를 사용하고 어떤 피쳐가 어떤 제품 브랜치에 들어가야하는지 등을 고려해야합니다. –