Quy trình công việc GIT để phát triển web


12

Từ lâu, nhóm phát triển web nhỏ mà tôi làm việc đã bắt đầu sử dụng git để phát triển web. Trước đó, chúng tôi chỉ cam kết dàn dựng hoặc làm chủ trực tiếp và sau đó hợp nhất thường xuyên giữa hai người. Nó tốt hơn là không có gì, nhưng nó cũng là một mớ hỗn độn.

Cách đây không lâu, chúng tôi đã áp dụng luồng công việc gitflow. Trong khi nó chắc chắn tốt hơn sự hỗn loạn xảy ra trước khi nó có vẻ hơi cồng kềnh và phát hành quá mức / định hướng cột mốc. Các nhà phát triển đồng nghiệp của tôi thường yêu cầu tôi làm rõ cách thức hoạt động của nó và những gì nên hợp nhất và không nên. Nhìn chung, nó có vẻ không phù hợp với công việc phát triển web khi chúng tôi triển khai mã thường xuyên và không theo dõi các mốc cụ thể để phát hành.

Theo đề nghị gần đây của bạn bè, tôi đã bắt đầu xem xét GitHub Flow . Đọc bài viết của Scott Chacon ở đây đạt điểm hoàn hảo với điều này:

Vậy tại sao chúng ta không sử dụng git-Flow tại GitHub? Vâng, vấn đề chính là chúng tôi triển khai tất cả các thời gian. Quá trình git-Flow được thiết kế chủ yếu xung quanh phiên bản phát hành trực tuyến. Chúng tôi thực sự không có phiên bản phát hành vì chúng tôi triển khai sản xuất mỗi ngày - thường là nhiều lần trong ngày.

FWIW, tôi cũng đã xem xét các quy trình công việc tuyệt vời này trên trang web của Atlassian: https://www.atlassian.com/git/workflows#!workflow-feature-branch

Tuy nhiên, TẤT CẢ họ trông giống như những lựa chọn kém cho phát triển web trong một nhóm nhỏ và một lần nữa hướng đến các bản phát hành ứng dụng lớn không phải là bản phát hành thường xuyên / hàng ngày.

Đây là một câu hỏi trên SE yêu cầu so sánh git-Flow với github-Flow /programming/18188492/what-are-the-pros-and-cons-of-git-flow-vs-github -lưu lượng

Đó là một câu trả lời tốt nói chung, nhưng như tôi đã đề cập trong bình luận của mình bên dưới meta.programmer.SE dường như chỉ ra rằng các câu hỏi về thực hành quy trình công việc tốt nhất nói chung ở đây và tôi hy vọng có một danh sách rộng hơn các câu trả lời có thể hơn là chỉ git-Flow và github -flow, trong khi được cụ thể để phát triển web. Do đó tôi nghĩ rằng nó đảm bảo một câu hỏi mới ở đây.

Cùng với đó, những gì bạn tìm thấy là quy trình làm việc dựa trên git tốt nhất / ưa thích cho một nhóm phát triển web nhỏ làm việc trên các dự án với việc triển khai khá liên tục? Nó là github-Flow hay cái gì khác?


BTW, tôi đang đặt câu hỏi này ở đây trên Lập trình viên. E
jb510

Chia sẻ nghiên cứu của bạn giúp mọi người . Hãy cho chúng tôi những gì bạn đã cố gắng và tại sao nó không đáp ứng nhu cầu của bạn. Điều này chứng tỏ rằng bạn đã dành thời gian để cố gắng tự giúp mình, nó giúp chúng tôi tránh nhắc lại các câu trả lời rõ ràng và hầu hết nó giúp bạn có được câu trả lời cụ thể và phù hợp hơn. Xem thêm Cách hỏi
gnat

@gnat Tôi không chắc mình có thể chia sẻ gì thêm về vấn đề đó? gitflow được phát hành theo định hướng là cồng kềnh. GitHub-Flow có nghĩa là tốt cho việc triển khai hàng ngày, nhưng có hàng tá chi nhánh đang chờ được sáp nhập cũng có vẻ như hỗn loạn. Hy vọng ai đó sẽ trả lời với "X là tuyệt vời cho nhà phát triển web vì Y". Nó được bao phủ tốt trong liên kết tôi cung cấp, tôi đoán tôi có thể trích dẫn trích dẫn từ nó?
jb510

1
@gnat - Tôi hoàn toàn viết lại câu hỏi để hiển thị nhiều nghiên cứu hơn và rất cụ thể về câu trả lời tôi đang tìm kiếm.
jb510

Câu trả lời:


7

Trước tiên tôi muốn tóm tắt một chút về các quy trình công việc khác nhau mà bạn đã xem xét và bạn nghĩ rằng nó không phù hợp với loại phát triển mà bạn đang làm việc:

  • Tập trung ( Nguồn ): Khá giống như quy trình làm việc của SVN nhưng giờ đây trên môi trường phân tán. Mỗi nhà phát triển làm việc trên một bản sao cá nhân mastervà đẩy các thay đổi origin/mastertrực tiếp hoặc thông qua yêu cầu kéo.

  • Chi nhánh tính năng ( Nguồn ): Vâng, đó. Mỗi nhà phát triển làm việc trên một tính năng cụ thể chỉ nên làm việc trên một nhánh cụ thể dành riêng cho tính năng đó. Nhánh tính năng này nên được tạo từ masterhoặc từ nhánh tính năng khác. Cuối cùng, mọi thứ sẽ được hợp nhất trở lại master.

  • Gitflow ( Nguồn ): Hai nhánh chính theo dõi lịch sử dự án developmaster. Một 3 chi nhánh gọi hotfix, releasefeaturethay đổi tổ chức thực hiện trực tiếp đến masterđể sửa chữa lỗi nghiêm trọng sản xuất, thay đổi số phiên bản và các chi tiết khác trước khi công bố hoặc làm việc trên một tính năng đặc biệt giống như chi nhánh tính năng , tương ứng.

  • Luồng GitHub ( Nguồn ): Nhà phát triển tạo một featurenhánh từ master. Thay đổi được đẩy qua yêu cầu kéo. Các thay đổi được chấp nhận để master được triển khai ngay lập tức bởi GitHub bot Hubot.

Đối với phần phát triển của câu hỏi của bạn, câu trả lời phụ thuộc vào nền tảng của nhóm của bạn. Họ đến từ môi trường SVN? Sau đó, bạn nên đi theo cách tiếp cận tập trung vì đó là cách tiếp cận giống với SVN nhất. Họ có cảm thấy thoải mái khi làm việc với Git không? Sau đó, có lẽ bạn không nên cố gắng điều chỉnh quy trình làm việc của nhóm của mình với bất kỳ ai trong số đó nhưng thực hiện theo cách riêng của bạn, phù hợp với nhu cầu của bạn, nếu tôi hiểu rõ là sự linh hoạt phát triển và triển khai nhanh.

Tôi cũng nghĩ bạn nên tập trung vào việc cải thiện cái sau. Làm thế nào là đường ống triển khai của bạn bao gồm? Trong " Phân phối liên tục: Phần mềm đáng tin cậy phát hành thông qua xây dựng, thử nghiệm và tự động triển khai ", các tác giả xác định các nguyên nhân có thể xảy ra đối với việc triển khai không thường xuyên, một số trong đó là:

  • Quá trình triển khai không tự động.
  • Thử nghiệm mất nhiều thời gian.
  • Mọi người không hiểu quy trình xây dựng / kiểm tra / triển khai.
  • Các nhà phát triển không bị kỷ luật về việc giữ cho ứng dụng hoạt động bằng cách thực hiện các thay đổi nhỏ, tăng dần và do đó thường xuyên phá vỡ chức năng hiện có

Có ai trong số những âm thanh như một cái gì đó bạn có thể cải thiện? Có lẽ bạn có thể cho chúng tôi biết thêm một chút về cách bạn và nhóm của bạn xử lý phần này của dự án.


2
+1, khóa của cd không phải là gitflow hoặc gitflow của bạn mà là CI và quy trình phân phối.
Wyatt Barnett

Suy nghĩ rất nhiều về điều này. Cảm ơn vì sự sáng suốt. FWIW, tôi đặc biệt tránh sử dụng thuật ngữ CI vì chúng tôi không sử dụng CI. Có lẽ chúng ta nên, nhưng chúng ta không, nó quá cồng kềnh đối với hàng tá dự án chúng ta thực hiện trong một tuần nhất định, một số ngắn hạn, một số dài hạn.
jb510

2
@ jb510 - chúng tôi đã có một thiết lập dự án tương tự, tôi sẽ không mơ ước được bay mà không có CI. Chuyển đổi bối cảnh dễ dàng hơn rất nhiều khi tất cả các phần câm nhưng dễ vỡ được viết kịch bản.
Wyatt Barnett

1
Đôi khi, không có khả năng thực hiện CI dễ dàng là một dấu hiệu cho thấy bạn cần bao nhiêu CI cho một dự án. Không có bài kiểm tra đơn vị? Triển khai tất cả thủ công? Rất nhiều bước triển khai khó khăn? Cần kiểm tra.
Kzqai

1
Tôi đã theo dõi câu hỏi và câu trả lời này trong nhiều năm. Tôi hy vọng những người khác cũng sẽ đưa ra câu trả lời, nhưng đây là một câu trả lời tuyệt vời vì vậy cuối cùng đánh dấu nó đã được chấp nhận (có lẽ nên làm điều đó từ lâu)
jb510
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.