Dulu tim kecil pengembang web tempat saya bekerja mulai menggunakan git untuk pengembangan web. Saat itu kami hanya berkomitmen untuk pementasan atau menguasai secara langsung dan kemudian sering bergabung di antara keduanya. Itu lebih baik daripada tidak sama sekali, tetapi juga berantakan.
Belum lama ini kami mengadopsi alur kerja gitflow. Meskipun tentu saja lebih baik daripada kekacauan yang terjadi sebelumnya tampaknya agak rumit dan terlalu banyak melepaskan / berorientasi tonggak. Rekan-rekan dev saya sering meminta saya untuk mengklarifikasi bagaimana seharusnya bekerja dan apa yang harus digabung dan tidak seharusnya. Secara umum tampaknya tidak cocok untuk pekerjaan pengembangan web di mana kami sering menggunakan kode dan tanpa melacak tonggak tertentu untuk rilis.
Pada saran teman baru-baru ini saya sudah mulai melihat GitHub Flow . Membaca posting Scott Chacon di sini sangat menyakitkan dengan ini:
Jadi, mengapa kita tidak menggunakan git-flow di GitHub? Nah, masalah utamanya adalah bahwa kami menerapkannya sepanjang waktu. Proses git-flow dirancang sebagian besar di sekitar "rilis". Kami tidak benar-benar memiliki "rilis" karena kami menyebar ke produksi setiap hari - sering beberapa kali sehari.
FWIW, saya juga telah melihat alur kerja yang bagus ini di situs Atlassian: https://www.atlassian.com/git/workflows#!workflow-feature-branch
Namun mereka SEMUA terlihat seperti pilihan yang buruk untuk pengembangan web dalam tim kecil dan sekali lagi diarahkan untuk rilis aplikasi besar tidak sering / rilis harian.
Ini adalah pertanyaan pada SE yang meminta untuk membandingkan git-flow dengan github-flow /programming/18188492/what-are-the-pros-and-cons-of-git-flow-vs-github -mengalir
Itu jawaban yang baik secara umum, tetapi seperti yang saya sebutkan di komentar saya di bawah ini meta.programmers.SE tampaknya menunjukkan bahwa pertanyaan tentang praktik alur kerja terbaik umum ada di sini dan saya berharap untuk daftar yang lebih luas dari jawaban yang mungkin daripada hanya git-flow dan github -flow, sementara khusus untuk pengembangan web. Karenanya saya pikir itu menjamin pertanyaan baru di sini.
Dengan itu, apa yang Anda temukan adalah alur kerja berbasis git terbaik / disukai untuk tim pengembangan web kecil yang mengerjakan proyek dengan penyebaran yang cukup berkelanjutan? Apakah alirannya github atau yang lainnya?
sumber
Jawaban:
Pertama saya ingin membuat sedikit ringkasan dari alur kerja yang berbeda yang telah Anda lihat dan Anda pikir tidak cocok untuk jenis pengembangan yang sedang Anda kerjakan:
Terpusat ( Sumber ): Cukup mirip alur kerja SVN tetapi sekarang pada lingkungan terdistribusi. Setiap pengembang bekerja pada salinan pribadi
master
dan mendorong perubahanorigin/master
secara langsung atau melalui permintaan tarik.Cabang fitur ( Sumber ): Ya, itu. Setiap pengembang yang bekerja pada fitur tertentu harus bekerja pada cabang tertentu yang didedikasikan untuk fitur itu saja. Cabang fitur ini harus dibuat dari
master
atau dari cabang fitur lain. Akhirnya semuanya digabungkan kembalimaster
.Gitflow ( Sumber ): Dua cabang utama melacak sejarah proyek,
develop
danmaster
. 3 cabang lainnya dipanggilhotfix
,release
danfeature
tahan perubahan yang dilakukan langsungmaster
untuk memperbaiki bug produksi kritis, ubah nomor versi dan detail lainnya sebelum rilis atau bekerja pada fitur tertentu seperti cabang Fitur , masing-masing.Alur GitHub ( Sumber ): Pengembang membuat
feature
cabang darimaster
. Perubahan didorong melalui permintaan tarik. Perubahan diterima agarmaster
bisa segera diterapkan oleh GitHub bot Hubot.Untuk bagian pengembangan dari pertanyaan Anda, jawabannya tergantung pada latar belakang tim Anda. Apakah mereka berasal dari lingkungan SVN? Maka Anda harus pergi dengan pendekatan terpusat karena itu yang paling mirip dengan SVN. Apakah mereka merasa nyaman bekerja dengan Git? Maka mungkin Anda tidak boleh mencoba menyesuaikan alur kerja tim Anda dengan hal-hal itu, tetapi laksanakan sendiri, yang dibuat sesuai dengan kebutuhan Anda yang jika saya pahami dengan baik adalah fleksibilitas pengembangan dan penyebaran cepat.
Saya juga berpikir Anda harus fokus pada peningkatan yang terakhir. Bagaimana saluran penyebaran Anda terdiri dari? Dalam " Pengiriman Berkelanjutan: Rilis Perangkat Lunak yang Andal melalui Build, Test, dan Automation Deployment " penulis mengidentifikasi kemungkinan penyebab penyebaran yang jarang, beberapa di antaranya adalah:
Apakah ada yang terdengar seperti sesuatu yang bisa Anda tingkatkan? Mungkin Anda bisa memberi tahu kami sedikit lebih banyak tentang bagaimana Anda dan tim Anda menangani bagian dari proyek ini.
sumber