Open lewtds opened 10 years ago
Câu cuối chính là vấn đề tại sao không nên đặt nhánh Dev làm default. Chúng ta phục vụ users là chính chứ không phải phục vụ devs, phỏng?
Theo ý kiến thì vậy: nhánh release nên tách riêng với nhánh dev do phiên bản release nhiều khi được tách ra để test trước khi đánh tag release thật sự, vẫn nên giữ nhánh master và dùng nó khi merge các nhánh dev khi cần thiết (nhiều khi phải revert lại các commit, thay các commit khác, ...). Nhánh master vẫn là nhánh gốc để khi mọi người cần thiết phát triển thêm tính năng.
Em nghĩ mình sẽ đóng gói cho một vài distro cơ bản, cố gắng để được nằm trong repo chính của các distro đấy. Người dùng thông thường chỉ cài qua repo là được. Các bạn thích hack một chút mới lấy source từ git, vậy để dev làm default cũng hợp lý hơn.
Thực ra, git-flow ở đây cũng không có sự thay đổi nhiều.
Nhánh release như @lewtds mô tả thì chỉ đơn thuần là phiên bản "đổi tên" của nhánh master. Nếu thực tế là vậy thì không cần thiết phải đổi.
Mình vẫn chưa hiểu tại sao lại đặt nhánh dev làm default
. Mỗi commit của nhánh dev có đảm bảo là chương trình chạy được không hay thể hiện micro change? Code của default
phải đảm bảo compile là chạy được ở mọi commit. Thêm nữa, thói quen của dev là phải tự clone repo và checkout nhánh develop
. Việc checkout/branch chỉ mất một dòng (git checkout [-B]
).
@lewtds Em thấy người mới tham gia không hiệu quả ở chỗ nào? Nếu phải giới thiệu lại thì mình viết docs. Là dev thì phải biết tự tìm đến docs, còn không thì có thể hỏi và mình đưa link.
Em thấy nó không hiệu quả vì chương trình có quá nhiều branch chạy song song và các quy luật quan hệ giữa các branch phức tạp, phù hợp với đội phát triển trong một công ty lớn hơn là đội 2, 3 người của mình.
Đổi tên nhánh master
thành release
để có một cái tên hợp hơn. Cái tên master
quá chung chung mà thực chất nó cũng chỉ là một cái pointer, không có ý nghĩa đặc biệt quan trọng gì với cách hoạt động của git.
Đặt dev
làm default vì theo em trang Github phản ánh tình trạng mới nhất của dự án. Người mới làm quen nhìn vào không có cảm giác là project đang đứng sững trong khi những commit liên tục trong nhánh dev
bị ẩn đi. Những người đã mò đến trang Github này thì có thể nói là người có quan tâm về mặt kỹ thuật chứ không phải người dùng và sẽ biết cách check out nhánh release sau khi đọc readme. Việc giữ cho default
luôn chạy được là một ý tốt nhưng là một rào cản không khả thi vì bản chất chương trình đang phát triển là thay đổi liên tục, không thể nào đảm bảo sẽ chạy tốt dù có automated testing rất nhiều. Mà hiện giờ có những phần của chương trình như phần kết nối với iBus mình hoàn toàn chưa test được.
Có thể setup release
thành tracker của master
được mà. Với người mới thì release
dễ hiểu hơn, nhưng với developer đã quen với Git thì master
có ý nghĩa hơn.
Thay vì việc đặt dev
làm default rồi dẫn đến tình trạng failed to build, có thể làm như sau:
release
tách biệt master, release
tập trung vào độ ổn định, có đánh số phiên bản rõ ràngmaster
thu nhận working commit từ dev
, có thể viết script rất đơn giản để làm việc này, vừa đảm bảo mức độ hoạt động tốt của nhánh default lại vừa đảm bảo default luôn luôn buildable.dev
dùng để dev, nếu cần thêm tính năng lớn thì branch tính năng & merge/rebase lại sau.----- Original Message -----
From: "Nguyễn Hà Dương" notifications@github.com To: "BoGoEngine/ibus-bogo-python" ibus-bogo-python@noreply.github.com Cc: "Truong Anh Tuan" tuanta@iwayvietnam.com Sent: Monday, January 6, 2014 5:28:38 PM Subject: Re: [ibus-bogo-python] Bỏ git flow, thay đổi cách sử dụng branch (#119)
Có thể setup
release
thành tracker củamaster
được mà. Với người mới thìrelease
dễ hiểu hơn, nhưng với developer đã quen với Git thìmaster
có ý nghĩa hơn.Thay vì việc đặt
dev
làm default rồi dẫn đến tình trạng failed to build, có thể làm như sau:
- Có nhánh
release
tách biệt master,release
tập trung vào độ ổn định, có đánh số phiên bản rõ ràngmaster
thu nhận working commit từdev
, có thể viết script rất đơn giản để làm việc này, vừa đảm bảo mức độ hoạt động tốt của nhánh default lại vừa đảm bảo default luôn luôn buildable.dev
dùng để dev, nếu cần thêm tính năng lớn thì branch tính năng & merge/rebase lại sau.
Process này có khi còn dễ gây confused hơn cho các dev. Anh nghĩ cứ dùng Git Flow truyền thống kia đi cho nó lành. Đã nhảy vào làm FOSS thì phải học thôi.
Kind regards, Tuan
Cái này là Git flow truyền thống mà anh.
Em thấy không cần thiết phải tạo một nhánh trung gian như @cmpitg đề xuất vì có thể sẽ gây khó hiểu. Nếu một người chuẩn bị join dự án thì người đó checkout nhánh nào? dev
hay master
? Tạo pull request vào đâu?
Em thấy lo ngại của anh Dương về buildable đã được giải quyết bởi Travis. Nếu mình coi pass hết các test là buildable thì qua được Travis là ok. Mình chỉ cần bắt buộc tất cả các dev, kể cả maintainer, code trên các fork, tạo pull request và chỉ merge vào master
khi đã được test kỹ càng.
Một thời gian trước, nhóm phát triển dự án quyết định sử dụng git flow. Tuy nhiên, một phần vì đây là phương pháp khá phức tạp, một phần vì số lượng người tham gia dự án không lớn nên sử dụng không hiệu quả, không đúng quy trình. Khi có người tham gia mới lại phải giới thiệu lại.
Bây giờ em đề xuất:
Như vậy việc contribute cũng đơn giản. Chỉ cần clone là ra nhánh develop luôn (đặt default), không phải checkout. Tuy nhiên, cần nêu rõ trong readme là nếu muốn dùng thử thì checkout nhánh release.