프로젝트에서 두 사람과의 작업 흐름


18

나는 자신의 프로젝트를 진행하고있는 초보자 프로그래머 (당신에게 잘 진행되고 있습니다)로 당신에게 왔습니다. 저의 공동 설립자는 프로그램을 배우는 방법을 배우고 있으며, 그가 무언가를 고치고 어떤 일이 일어날 수있는 시점에 도달했습니다.

그는 아주 좋은 질문을했습니다. "어떻게 작동할까요?" 다른 사람과 프로그래밍 한 적이 없어서 이론화 할 수있는 것. 최고의 작업 흐름에 대해 조언 해 주시겠습니까? 우리는 자식을 사용합니다.

시스템의 특정 부분을 소유해야합니까? 코드를 확인 하시겠습니까? 코드 검토?

> 1 dev로 어떻게 작업합니까?


1
: 내 최고의 힌트는 이것 좀하는 것입니다 nvie.com/posts/a-successful-git-branching-model 그것은 팀에서 코드를 구성하는 한 (좋은) 방법이며, 우리는 너무 사용

당신은 테스트를 작성합니까?
NARKOZ

... @ NARKOZ-아직은 아닙니다. 우리는 약간 뛰어 들었다. 내가하고 싶은 것은 단지 책을 샀다.

2
@Geoff Wright : 프로필로 이동하여 사람들이 귀하의 질문에 대해 기꺼이 제공 한 답변 중 일부를 수락 (옆의 확인 표시 버튼 누름) : stackoverflow.com/users/661241/geoff-wright
iwasrobbed

1
개인 저장소에 bitbucket.com 사용
Klevis Miho

답변:


23

git을 사용하는 팀에서 일하고 있습니다. 여기에서 40 명 이상의 개발자가 특정 시점에서 여러 코드 저장소 (100+)를 작업하고 있습니다. 또한 소수의 개발자로 시작하여 몇 년 동안 팀 규모를 늘 렸습니다. 처음에는 소수의 사람들만으로도 최소한의 자식 만 알면 도망 갈 수 있습니다. 시간이 지남에 따라 깃 푸를 향상시켜 강력한 기능을 발견 할 수 있습니다.

  1. 코드를 호스팅 할 장소가 필요합니다. github 또는 gitorious 사용을 고려하십시오 . 둘 다 무료로 사용할 수 있지만 리포지토리는 공개되어 다른 사람들에게 공개됩니다. 당신이 개인 저장소를 원하는 경우 에는 무료로 github에 그들을 호스팅 할 수 있습니다 또는 설치하고 자신의 gitorious 서버를 호스트 .
  2. 처음에는 포크, 풀 요청이 포함 된 고급 워크 플로우에 대해 걱정하지 않는 것이 좋습니다. git을 중앙 집중식으로 사용하여 시작할 수 있습니다 (shudder!). 호스팅 된 사본을 소스 코드의 정식 사본으로 취급하십시오. 이 저장소를 호출 할 수 upstream있습니다.
  3. 여러분 중 하나는 모든 코드를 로컬 자식 저장소에 커밋 하고이 upstream저장소로 푸시 합니다.
  4. 다른 팀 구성원이이 저장소를 복제 할 수 있습니다.
  5. 당신이 배울해야합니다 최소 명령 세트는 clone, pull, push, add, commit, log, status, diff, branch, stash, apply, reset, format-patch, branch. gittutorial에서 자세히 알아보십시오 .
  6. 이제 어느 코드에서나 작업 할 수 있습니다. 둘 다 동일한 파일을 편집 할 때 어떤 일이 발생하는지 걱정하지 마십시오. 힘내는 병합을 다루고 충돌을 해결하는 데 정말 좋습니다.
  7. 작은 원자 커밋을 만들고 좋은 로그 메시지를 작성하십시오 . 커밋 로그에 현재 시제를 사용하십시오. 다른 사람의 작업에 영향을 미치지 않으므로 로컬 사본에 원하는 수만큼 커밋을 수행 할 수 있습니다.
  8. 코드를 다른 사람과 공유 할 준비가되었다고 생각되면 upstream리포지토리에 게시하십시오 . 좋은 방법은 항상 밀기 전에 당기는 것 입니다. 이렇게하면 리포지토리를 다른 변경 내용과 동기화 할 수 있습니다.
  9. 단계를 반복 7하고 8.

이 워크 플로우에 익숙해지면 주제별 분기, 분기, 풀 요청, 병합, 대화식 rebasing 커밋 등과 같은 고급 항목으로 진행할 수 있습니다.

코드 리뷰를 정말로 원한다면 git과 email만으로도 가능합니다. 팀 규모가 10+ 이상으로 증가하면 일종의 온라인 도구를 사용하는 것이 이상적입니다. 실제로이 작업을 수행하는 방법에는 여러 가지가 있으며 이는 한 가지 간단한 방법 일뿐입니다.

  1. 로 검토 할 커밋 세트를 만듭니다 git format-patch. 패치 파일 세트가 생성됩니다. 이 패치를 검토 자에게 이메일로 보내십시오.
  2. 검토자는로 패치를 적용 할 수 있습니다 git apply. 이것은 패치를 적용하지만 커밋을 생성하지는 않습니다.
  3. 코드를 검토하고 제안 사항을 이메일로 다시 보내주십시오.
  4. 만족할 때까지 1-2-3을 반복하십시오.
  5. 검토자는 패치를 푸시 할 수 있는지 확인합니다 upstream.

또한이 목록에 git rebase를 추가하고 싶습니다.
alock27

1
나는 그것이 stash, apply, format-patch최소한의 지식의 일부 라는 것에 동의하지 않습니다 . 나는 보통 그런 것들을 가르치기 전에 몇 달을 기다립니다. 나는 dev의 50 % 이상이 숨겨지지 않는 것 같아요.
마이클 Durrant

1
전화 upstream origin하면 다른 예제 (보통 사용하는 origin)를 쉽게 따르도록 도와줍니다 .
Michael Durrant

2

나는 이것을 위해 github과 모든 기능을 사용합니다. http://www.github.com/ 에서 확인하십시오. 브랜치, 포크, 이슈, 풀 요청을 사용하여 파트너와 협력 할 수 있습니다.


0

가장 먼저 할 일은 중앙 코드 저장소를 살펴보고 두 프로젝트간에 변경 내용을 병합하고 동기화 할 수 있도록하는 것입니다. SVN은 내가 과거에 사용했다고 좋은 쉬운이며 충분히 길게는 상당히 성숙하다는있었습니다 SVN을 .

그 후 나는 두 사람 사이에서 당신이 할 역할을 식별합니다.

  1. 코드의 기능을 무작위로 쓰려고합니까? 아니면 다른 사람이 기능을 계속 사용하는 동안 한 사람이 버그 수정을 할 것입니까?
  2. 중괄호 위치, 개인 멤버 변수 이름 지정, 변수 및 메소드 이름 지정 규칙 (CamelCase 등)과 같은 기본 코딩 표준 세트를 작성 하시겠습니까?
  3. 얼마나 자주 체크인해야합니까? 적어도 하루에 한 번은 상대방이 무엇을하는지 특히 일찍 확인하는 것이 좋습니다. 체크인하기 전에 항상 코드를 빌드 할 수 있는지 확인하십시오.
  4. 그는 상사이지만 프로그래밍 리더가 될 것입니까?

행운을 빕니다!


1
SVN은 괜찮은 옵션입니다 (현재 직장에서 사용하고 있습니다) ...하지만 Git과 Hg는 다른 사람들이 거래하도록 강요하지 않고 로컬로 커밋 할 수 있기 때문에 조금 낫습니다. 작동하지 않을 수있는 내 코드로 (SVN 업데이트하는 경우). 솔직히 이런 이유로 사무실에서 Git을 사용하기 시작했지만 git-svn을 사용하여 변경 사항을 SVN에 다시 게시 할 수 있습니다.
Ken Henderson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.