branch - git 多版本并行发布时,该创建多个项目还是多个分支
世界只因有你
世界只因有你 2017-05-02 09:19:04
0
4
1561

git 做单版本在线的项目是很成熟的,流程很清晰,每个issue创建一个branch,然后合并到master,打tag即可。
比如web项目,发布了1.0.0,然后修bug发布1.0.1、 1.0.2,新功能1.1.0、 1.2.0,改版大功能2.0.0 。只有一个版本在维护,一般不会出现 1.0.0 和 2.0.0 同时都在发布新版的情况。
git简单流程:http://rogerdudler.github.io/git-guide/index.zh.html

复杂点的流程:http://jiongks.name/blog/a-successful-git-branching-model/

但多版本并行发布的时候怎么办?
以Ubuntu系统为例,14.04 、 14.10 、 15.04 同时存在,14.10发布后,14.04也在持续的发布新版,比如14.04.1 、 14.04.2。

如果按照上面的git简单工作流程:
14.04在master里打tag发布了,下一个里程碑是14.10,很多人开发了很多分支,然后合并到master里,每天发布daily build版,看起来很美好。
突然,14.04有个紧急bug要修复,不可能等几个月等到14.10发布时带着一起修复,需要发布14.04.1那怎么办?从哪里checkout 14.04的代码?即使从tag里checkout下来了,修复完毕,合并到哪里?只能合并到master,但master是14.10,不能发布啊。

如果按照git复杂流程:
14.04在master里打tag发布了,下一个里程碑是14.10,很多人开发了很多分支,然后合并到develop分支里,每天发布daily build版。
突然,14.04有个紧急bug要修复,从master拉一个分支叫做hotfix-xxx,修复完毕,合并到master,打tag,发布14.04.1 。也合并到develop。
当14.10开发完毕,打算发布时,从develop拉一个分支叫做release-14.10,收尾完毕,把release-14.10合并到master,打个tag,发布了。也合并到develop,看起来很美好。
突然,14.04又有个紧急bug要修复,需要发布14.04.2怎么办?从哪里checkout 14.04.1的代码?即使从tag里checkout下来了,修复完毕,合并到哪里?只能合并到master,但master是14.10啊。

难道是每个版本一个项目? 比如 14.04 、14.10 、15.04 是3个项目?
这样感觉很奇怪,不优雅。请教大家有没有什么好办法。

世界只因有你
世界只因有你

membalas semua(4)
为情所困

Tarik cawangan dari tag:v14.04 dan panggilnya branch:14.04.1-dev, dan kembangkan di dalamnya Setelah ia stabil, tambahkan tag:v14.04.1 Anda tidak perlu berpegang pada "cawangan => pembangunan => bergabung". . Apabila anda tidak perlu untuk bergabung, hanya Tanpa penggabungan, tidak akan ada masalah sama sekali, terutamanya apabila beberapa versi dikekalkan pada masa yang sama, adalah perkara biasa untuk cherry-pick menggantikan gabungan

Walau bagaimanapun, git master memang agak mengelirukan Projek yang berbeza mempunyai strategi yang berbeza, yang mengandungi versi stabil, dan versi baru ada di dalam cawangan versi stabil di cawangan. Sesetengah induk bermaksud pelepasan, yang bermaksud "kod yang kekal konsisten dengan penggunaan dalam talian". Jadi saya fikir tidak menggunakan induk secara langsung, tetapi menggunakan nama cawangan yang lebih khusus mungkin merupakan strategi yang lebih baik?

我想大声告诉你

keluaran mempunyai cawangan keluaran yang sepadan

为情所困

Saya rasa dalam senario yang anda terangkan, versi berbeza di bawah cawangan yang berbeza atau projek yang berbeza pada asasnya adalah sama, kerana cawangan yang berbeza pada dasarnya tidak akan digabungkan (anda tidak perlu terlalu risau tentang nama cawangan) . Jadi apabila perubahan perlu digunakan pada versi yang berbeza, saya rasa kaedah berikut boleh dipertimbangkan:

  • Anda boleh menggunakan modul pengurusan submodule git dan mengubah suai terus cincang yang sepadan dengan submodul apabila membuat perubahan.
  • Apabila menggunakan pengurusan berbilang cawangan

    • Gunakan git cherry-pick untuk menggabungkan komit
    • Gunakan git checkout untuk terus membawa fail individu
  • Apabila menggunakan pengurusan berbilang projek, anda boleh menggunakan arkib git untuk mendapatkan fail yang berkaitan

Sudah tentu, tidak syak lagi bahawa setiap kaedah mempunyai perangkap.

给我你的怀抱

Helo, senario versi kompleks seperti ini sesuai untuk Gitflow Anda boleh pergi terus ke Gitflow untuk mengetahui. Pautannya ialah: http://nvie.com/posts/a-successful-git-branching-model/

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan