プロジェクトの2人とのワークフロー


18

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

彼は非常に良い質問をしました。それは「この仕事はどうするのか」でした。私は他の誰かとプログラムしたことがないので、私が理論化するだけの何か。最適なワークフローを教えてください。gitを使用します。

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

> 1開発者とどのように連携しますか?


1
私の最善のヒントは、これを見てみましょう:nvie.com/posts/a-successful-git-branching-modelこれは、チームでコードを整理するための1つの(良い)方法であり、私たちもそれを使用します

テストを書きますか?
-NARKOZ

... @ NARKOZ-まだです。すぐに飛び込みました。私がやりたいことは、実際に本を買ったところです。

2
@Geoffライト:あなたのプロフィールにアクセスし、受け入れる(次へチェックマークボタンを押して)人々が優雅にあなたの質問に提供したことを答えのいくつかしてください:stackoverflow.com/users/661241/geoff-wright
iwasrobbed

1
プライベートリポジトリにbitbucket.comを使用する
クレビスミホ

回答:


23

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

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

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

コードレビューが本当に必要な場合は、gitとメールだけで実行できます。チームの規模が10+を超えて大きくなった場合、これは何らかのオンラインツールで改善されるのが理想的です。そのため、実際にはこれを行うための多くの方法がありますが、これは簡単な方法の1つです。

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

また、このリストにgit rebaseを追加したいと思います。
-alock27

1
stash, apply, format-patch最低限の知識の一部であることに同意しません。私は通常、それらのことを教える前に数ヶ月待ちます。開発者の50%以上が隠れていないと思います。
マイケルデュラント

1
呼び出すupstream originと、他の例(通常はを使用origin)がわかりやすくなります。
マイケルデュラント


0

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

その後、私はあなたの二人の間であなたのどちらかが演じる役割を特定します。

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

幸運を!


1
SVNはまともなオプションです(そして、私は現在職場でそれを使用しています)...しかし、GitとHgは、他の人に対処することを強制せずにローカルにコミットすることができます(もし彼らがsvn updateした場合)私のコードは動作しないかもしれません。正直なところ、私はこのような理由のためにオフィスでのGitを使い始めたが、私はまだのgit - SVNを使用して戻ってSVNへの私の変更を公開することができます
ケンヘンダーソンの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.