web-dev-qa-db-ja.com

プロジェクトの2人でのワークフローはどうですか

私は自分のプロジェクトに取り組んでいる(それは順調に進んでいます)初心者プログラマーとしてあなたのところに行きます。私の共同創設者もプログラミングの方法を学んでおり、おそらく何かを修正し、いくつかのことを実現できるようになるまでに至っています。

彼は非常に良い質問をしました、それは「これはどのように機能するでしょうか」でした。他の人と一緒にプログラムしたことがないので、私が理論的にしか考えられなかったもの。最善のワークフローについて教えてください。 gitを使用します。

システムの特定の部分を所有する必要がありますか?コードをチェックインしますか?コードレビュー?

> 1 devとどのように連携しますか?

18
Geoff Wright

私はgitを使用するチームで働いています。40以上の開発者が、任意の時点で複数のコードリポジトリ(100以上)に取り組んでいます。また、非常に少数の開発者から始め、数年の間にチームの規模を拡大しました。最初は少数の人しかいませんが、最小限のgitだけを知っていれば十分です。やがてgit fuが改善され、強力な機能が発見されます。

  1. コードをホストする場所が必要です。 github または gitorious の使用を検討してください。どちらも無料で使用できますが、リポジトリは公開され、他のユーザーに表示されます。プライベートリポジトリが必要な場合 無料でgithubでホストできます または 独自の重要なサーバーをインストールしてホストする
  2. 最初は、fork、pullリクエストを含む高度なワークフローについて心配しない方が良いでしょう。 gitを一元的に使用することから始めることができます(シャダー!)。ホストされたコピーをソースコードの信頼できるコピーとして扱います。このリポジトリをupstreamと呼びましょう。
  3. そのうちの1人は、すべてのコードをローカルgitリポジトリにコミットし、このupstreamリポジトリにプッシュします。
  4. 他のチームメンバーは、このリポジトリのクローンを作成できます。
  5. 学習する必要がある最小限のコマンドのセットは、clonepullPushaddcommitlogstatusdiffbranchstashapplyresetformat-patchbranchgittutorialで詳細をご確認ください
  6. どちらでもコードのどの部分でも作業できます。両方が同じファイルを編集したときに何が起こるか心配しないでください。 Gitはマージの処理と競合の修正に非常に優れています。
  7. 小さなアトミックコミットを作成し、適切なログメッセージを書き込みます。コミットログには現在形を使用します。ローカルコピーは、他の人の作業に影響を与えないため、好きなだけいくつでもコミットできます。
  8. コードを他の人と共有する準備ができたと思ったら、upstreamリポジトリに公開します。 プッシュする前に常にプルすることをお勧めします。これにより、リポジトリを他の変更と同期させることができます。
  9. 手順7および8を繰り返します。

このワークフローに慣れたら、トピックブランチ、フォーク、プルリクエスト、マージ、インタラクティブなリベースコミットなど、より高度なものに進むことができます。

コードレビューが本当に必要な場合は、gitとemailだけで実行できます。チームの規模が10歳以上になると、これはある種のオンラインツールを使用するとより効果的に実行できます。したがって、実際にはこれを行う方法はたくさんありますが、これは単純な方法の1つにすぎません。

  1. git format-patchで確認する一連のコミットを作成します。これにより、一連のパッチファイルが生成されます。これらのパッチをレビュー担当者にメールで送信します。
  2. レビュー担当者は、git applyを使用してパッチを適用できます。これはパッチを適用しますが、コミットは作成しません。
  3. コードを確認し、提案をメールで返信します。
  4. 満足できるまで1-2-3を繰り返します。
  5. レビュー担当者は、パッチをプッシュできることを確認しますupstream
23
Ocaj Nires

私はこれにgithubとそのすべての機能を使用します。 http://www.github.com/ で確認してください。ブランチ、フォーク、イシュー、プルリクエストを使用してパートナーと連携できます。

2
ben

最初に行うことは、2つのプロジェクト間で変更をマージして同期を維持できるように、中央のコードリポジトリを調べることです。 SVNは、私が過去に使用した非常に簡単なもので、かなり成熟していてかなり成熟しています [〜#〜] svn [〜#〜]

その後、私は2人のユーザーの間で、どちらかが演じる役割を特定します。

  1. あなたはコードの機能を並行して書くつもりですか、それとも他の人が機能を使い続けている間に一人でバグ修正を行うつもりですか?.
  2. 基本的なコーディング標準のセット(ブレースの位置、プライベートメンバー変数の命名、変数とメソッドの命名規則(CamelCaseなど))を作成しますか?
  3. どのくらいの頻度でチェックインする必要がありますか。少なくとも1日に1回は、他のユーザーが特に早い段階で何をしているかを両方とも確認できるようにすることをお勧めします。チェックインの前に必ず確認してくださいが、コードはビルド可能です。
  4. 彼はボスですが、あなたはプログラミングのリーダーになりますか?

幸運を!

0
dreza