BoGoEngine / ibus-bogo

IBus frontend for the BoGo engine.
GNU General Public License v3.0
94 stars 40 forks source link

Bỏ git flow, thay đổi cách sử dụng branch #119

Open lewtds opened 10 years ago

lewtds commented 10 years ago

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.

tuanta commented 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?

sokomo commented 10 years ago

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.

hainp2604 commented 10 years ago

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.

cmpitg commented 10 years ago

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.

lewtds commented 10 years ago

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.

cmpitg commented 10 years ago

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:

tuanta commented 10 years ago

----- 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ủ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:

  • 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àng
  • master 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

cmpitg commented 10 years ago

Cái này là Git flow truyền thống mà anh.

lewtds commented 10 years ago

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.