Alur kerja git untuk tim kecil

11

Saya sedang mengerjakan alur kerja git untuk diterapkan dalam tim kecil. Gagasan inti dalam alur kerja:

  • Ada master proyek bersama yang dapat ditulis oleh semua anggota tim
  • Semua pengembangan dilakukan secara eksklusif pada cabang fitur
  • Cabang fitur adalah kode yang ditinjau oleh anggota tim selain dari penulis cabang
  • Cabang fitur akhirnya digabungkan ke master bersama dan siklus dimulai lagi

Artikel ini menjelaskan langkah-langkah dalam siklus ini secara terperinci:

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md

Apakah ini masuk akal atau saya kehilangan sesuatu?

janos
sumber

Jawaban:

16

Saya suka model percabangan aliran git . Cabang master dibiarkan sendirian sebagian besar waktu, hanya berisi rilis. Cabang pengembangan harus stabil setiap saat, dan cabang fitur dapat dipatahkan.

Anda juga dapat menggabungkan ini dengan integrasi berkelanjutan dengan menggabungkan pengembangan ke cabang fitur Anda dan cabang fitur Anda ke dalam pengembangan. Tentu saja Anda hanya harus menggabungkan sesuatu menjadi berkembang ketika Anda yakin bahwa segala sesuatunya bekerja dan tidak rusak.

Arjan
sumber
Seperti yang saya pahami, git flow dan integrasi berkesinambungan adalah cara alternatif untuk bekerja dan tidak dapat digabungkan. Dalam git flow, kode digabungkan menjadi pengembangan hanya ketika fitur selesai. Dalam integrasi berkelanjutan, semua kode digabungkan ke dalam cabang bersama setidaknya sekali setiap hari, meskipun tidak segera menyediakan fitur baru.
bdsl
7

Saya pikir Anda melewatkan topik Integrasi Berkelanjutan. Itu harus menjadi bagian dari setiap pengaturan pengembangan.

Dengan cabang fitur, Anda memiliki masalah, yang tidak Anda integrasikan secara terus-menerus, tetapi hanya setelah fitur selesai.

Jika fitur bercabang berumur pendek, ini mungkin dapat diterima, tetapi pasti sesuatu yang harus dipertimbangkan.

Alternatif lain adalah men-setup CI build untuk setiap cabang fitur. Ini memang membantu, tetapi itu bukan integrasi. Ini menjadi jelas setelah Anda menemukan bug pertama Anda yang tidak muncul di Fitur A atau Fitur B, tetapi pada saat Anda mengintegrasikan Fitur A&B

Alternatif ketiga adalah membuat penggabungan di beberapa bagian cabang integrasi dari pembangunan CI. Ini adalah integrasi yang benar, dan benar-benar bekerja dengan baik pada git jika pekerjaannya agak terpisah, tetapi menyebabkan menggabungkan konflik selama pembangunan yang mengakibatkan bangunan gagal.

Jens Schauder
sumber
Cabang utama dapat dihubungkan dengan CI untuk menolak gabungan cabang fitur jika gagal dalam tes non-regresi otomatis. Terima kasih atas tipnya, saya akan menambahkan bagian "Tips" di bagian akhir dan menyebutkan ini di sana.
janos
1
Tentu, tetapi seperti yang dikatakan, ini bukan integrasi-terus-menerus tetapi pada-akhir-fitur-integrasi yang mungkin baik, tetapi tidak sama
Jens Schauder
1
Saya pikir fitur cabang sangat berguna, karena tidak perlu stabil. Itu berarti Anda dapat sering melakukan alih-alih memiliki satu komitmen besar.
Arjan
Proses pembuatan otomatis yang berjalan sesuai jadwal (sistem CI) sangat diperlukan. Itu perlu sering dijalankan sehingga masalah kompilasi dapat ditemukan dan diperbaiki dengan cepat. Tim pengembang harus memberikan kegagalan bangunan prioritas tertinggi. Jauh lebih mudah untuk memperbaiki masalah jenis ini saat pertama kali muncul.
Nathan Pilling
1
Untuk proyek kami yang menggunakan CI (kami memiliki beberapa proyek lawas yang tidak dapat menggunakannya saat ini), kami berkomitmen SEMUA untuk menguasai CI benar, untuk proyek warisan kami, kami menggunakan model percabangan git flow. Cabang fitur adalah pemblokir CI jika Anda bertanya kepada saya, mereka membuatnya lebih sulit untuk terus-menerus (tidak hanya ketika selesai) diintegrasikan. Kami terus bekerja pada fitur dan tugas terakhir adalah untuk menyalakannya pada dasarnya, tetapi kode selalu dalam proyek.
Elliot Blackburn
1

Anda bisa terinspirasi untuk gitflow atau Twgit .

gitflow merangkum pendekatannya sebagai:

Ekstensi Git untuk menyediakan operasi repositori tingkat tinggi untuk model percabangan Vincent Driessen.

Twgit menggambarkan dirinya sebagai berikut:

Twgit adalah alat bantu sumber terbuka dan gratis untuk mengelola fitur, perbaikan terbaru, dan rilis pada repositori Git. Ini memberikan perintah tingkat tinggi yang sederhana untuk mengadopsi model percabangan yang dijelaskan dalam dokumentasi kami. OS yang didukung: Debian / Ubuntu Linux, Mac OS X.

Kedua alat tersedia dari github .

Duran
sumber