これが代表的なものかどうかはわかりませんが、1 人の開発者として言えば、私は git-flow を使用しており、新しい機能の (おおよその) 私のワークフローは次のとおりです。
- 機能ブランチを作成する
- (作業中) タグで失敗する高レベルの受け入れテスト (キュウリ) を記述して、
@wip
今のところテスト スイートから除外し、これを新しいブランチにコミットします。
- (時々) エッジ ケースの統合テスト用に rspec リクエスト テストを記述し、それを機能ブランチにコミットします。
- 機能の個々のコンポーネントに対して下位レベルのテスト (rspec/jasmine) を作成し、大まかに定義された「ユニット」ごとに、機能ブランチにコミットします。
@wip
機能が十分に完成して受け入れテストに合格したら、タグを外し、合格したことを確認して機能ブランチにコミットします
git merge
(ではなく)を使用して機能ブランチを開発ブランチにマージしますgit flow finish
。これにより機能ブランチがそこに残るため、必要に応じて後で機能を更新できます。
- ブランチが開発のためにマージされると、travis-ci が完全なテスト スイートを実行し、問題があればメールを受け取ります。(開発ブランチとマスター ブランチのみを .travis.yml ファイルに含めます。)
これは私の「理想的な」ワークフローです。実際には、これらのルールを大幅に破ります。テストを作成する前にテストされていない変更をコミットし、高レベルの受け入れテストを実際に具体化する前に機能の一部に取り組み始めます。など。基本的に私はプロジェクトにコミットする唯一の人なので、それを行う自由があります。より大きなグループで作業している場合は、ワークフローに固執することについて、より厳密にする必要があると思います.
とにかく、それは私がそれを行う方法です。他の方の意見も聞きたいので、質問に賛成票を投じました。
アップデート:
これを書いた後、上記の流れから逸脱する 1 つの意味があることに気付きました。それは、厳密に言えば、通常のユーザー指向の種類ではない「機能」を追加する場合です (つまり、ユーザーが認識するものではありません)。の)。たとえば、アプリの開発の早い段階で、js コードを構造化するために backbone.js を使用することに決めたので、backbone.js の機能ブランチを作成し、@javascript
さまざまな既存の cucumber 機能にタグを追加しました。ブランチが (backbone.js を使用して) 元のアプリが HTML ビューで行っていたことを大まかに実行できるようになったら、マージして戻しました。
また、require.js の使用に切り替えることも計画しています。この場合、これを行うためのフィーチャー ブランチも作成し、完了したらマージして戻します。高レベルの統合テストはありません。既存のテストに合格する限り、すべて問題ありません。