Github組織のリポジトリ、問題、複数の開発者、および分岐-ワークフローのベストプラクティス


14

奇妙なタイトル、はい、しかし、私は私が思うにカバーするために少し地面を持っています。

プライベートリポジトリを持つgithubに組織アカウントがあります。githubのネイティブな問題/プルリクエスト機能を使用したいと思います(プルリクエストは、基本的コードレビューと機能の議論に関する限り正確です)。私たちは、ツール見つかったハブをすることによってディファンクトプル要求に既存の問題を変換し、自動的にそれをあなたの現在のブランチを関連付けることができるというクールなのはほとんどの機能があります。

組織内の各開発者が組織のリポジトリをフォークして、機能の作業/バグ修正などを行うのがベストプラクティスかどうか疑問に思っています。これは非常に堅実なワークフローのように見えます(基本的にはgithubのすべてのオープンソースプロジェクトが行うことです)が、問題を追跡し、組織のリポジトリである1つのソースから要求をプルできることを確認したいと思います。

そこで、いくつか質問があります。

  1. この場合、開発者ごとのフォークのアプローチは適切ですか?それは少しやり過ぎのようです。直接プッシュアクセスを持たず、すべてのコードをレビューする必要がある開発者を紹介しない限り、すべての開発者にフォークが必要かどうかはわかりません。その場合、それらの開発者だけにそのようなポリシーを制定したいと思います。それで、どちらが良いですか?すべての開発者が単一のリポジトリにあるのか、それともみんなの分岐点なのか
  2. ハブツール、特にプルリクエスト機能の経験はありますか?開発者ごとにフォークを行う(または特権の低い開発者向け)場合、ハブのプルリクエスト機能は、上流のマスターリポジトリ(組織のリポジトリ?)からのプルリクエストを処理しますか、それとも異なる動作をしますか?

編集
私は問題、フォーク、プルリクエストでいくつかのテストを行い、それを見つけました。組織のリポジトリに問題を作成した場合、組織からリポジトリを自分のgithubアカウントにフォークし、いくつかの変更を行って、フォークのマスターブランチにマージします。実行しようとするhub -i <issue #>と、エラーが発生しますUser is not authorized to modify the issue。したがって、明らかにそのワークフローは機能しません。

回答:


6

この場合、開発者ごとのフォークのアプローチは適切ですか?それは少しやり過ぎのようです。直接プッシュアクセスを持たず、すべてのコードをレビューする必要がある開発者を紹介しない限り、すべての開発者にフォークが必要かどうかはわかりません。その場合、それらの開発者だけにそのようなポリシーを制定したいと思います。それで、どちらが良いですか?すべての開発者が単一のリポジトリにあるのか、それともみんなの分岐点なのか

チームの規模によって異なります。私は以前は小規模なチームで働いていましたが、そこではレポが1つだけで、機能はそのレポ内で独自のブランチを取得していました。それは私たちにとってはうまくいきました。

しかし、私は現在、数十人が中央リポジトリにアクセスできる大規模なオープンソースプロジェクトに定期的に貢献しています。バグ修正を直接プッシュすることもできますが、個人リポジトリですべての主要な開発を行い、機能のPRを送信してコードをレビューできるようにします。メインリポジトリには、マスターブランチとリリースブランチのみが含まれており、整理されています。機能ブランチは個人リポジトリにあるため、他の人が見ることができます(それらの早期PRを行うと、チームで機能に取り組んでいる他の人に警告が出ます)。一握り以上の開発者がいるプロジェクトにはこのワークフローをお勧めできます。唯一の欠点は、複数のリモートで作業する必要があることです。


2

コードレビューとコード品質を重視する場合、開発者ごとのアプローチは非常に優れたアプローチです。プルリクエストを使用することの良い点は、メンテナーから開発者に責任を移すことです。

開発者は自分のコードをメインブランチに入れたいと思っており、それを含めるように要求します。

これは、人々がコミットする古いモデルとはかなり異なるコンテキストであり、後でレビュー担当者は「ああ、数週間前に行ったこのことはあまり良くありませんでした。今すぐ修正してください」と言わなければなりませんでした。

当社ではこのモデルを使用しています。プルリクエストはコードリクエストを実行可能にし、他の人々のコードの議論を促し、新しいツールに最初に反対した開発者でさえも、一般にコードの品質を助けました。また、レビュー担当者はコードが既にコミットされた後に「ok」または「not ok」と言うのではなく、コードを積極的にメインブランチにマージする必要があるため、人々はコードレビューをより真剣に受け止めたと感じています。


1

すべての分岐と分岐をすべて行うわけではありません。これはgithubのオープンソースgemの良いモデルですが、あなたのモデルは通常、変更についてより高いレベルの信頼を持っている組織内にあります。

ソース管理の主要なポイントは、変更を表示、バックアウト、リバースなどできることです。あなたの状況で多数の分岐と分岐を行うことは、やり過ぎです。

バージョンのアップグレード、技術の一部の変更、メインベースとほとんど共通性のないサブモジュールの3か月間の作業など、ブランチを予約します。

組織内でまったく分岐しない場合があります。このモードは、社内プロジェクトとは性質が異なるオープンソースプロジェクトにより適しているようです。

焦点をテストとコードレビューに切り替えます。人々はテストを書いていますか?あの人達は良いですか?コードレビューは行われていますか?


1
あまりテストを書いていません。互いのコードを半頻度で確認します。バグの追跡とソリューションへの実装は、現在、私たちにとって最も重要です。テストは理論的に優れており、ゼロから開始するプロジェクトに実装する方がはるかに簡単であることに誰もが同意すると思います。しかし、テストを書くのに巨大なレガシープロジェクトがたくさんあります。私は一般的に分岐と分岐について同意します。私たちはHGから来ているので、実際にはパブリックヒストリーの一部ではない短期ブランチがあるのは奇妙に思えますが、目的は間違いなくあります。
ジムルーベンシュタイン

実際、既存の機能の大きなコードベースに問題はありません。明日、大きな修正を行ってテストを作成し、次の機能のためにテストを作成します。戻って古いものを書く必要はありません。あなただけの新しいものを書き始める必要があります。それを十分に行うと、最初にテストを書く可能性が高くなります。それは重要なソフトウェアの専門的なソフトウェア開発です。
ジャンキー

ところで、個人的にはgitを使用していますが、svnがリモートに直接コミットする(プッシュ/プルなし)とは対照的に、ローカルリポジトリを持っているという事実を見つけました。準備が整うまで、最後のプッシュをせずに追加してコミットできるので簡単です。
ジャンキー

ClearCase動的ビュー(使用したことがあるPITAであることがわかっている場合)を使用しない限り、各チェックアウトは実際にはフォークであるため、すべてをフォークしています。複数のリビジョン。分散型および分散型システム(gitは1つ)では、通常のフォークが可能であり、通常のフォークです。
ジャン・ヒューデック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.