我的产品是IntelliJ的插件.我支持基础IntelliJ平台的几个版本,并为每个版本发布我的插件的构建,因为它们的API经常在不同版本之间发生变化.这只是我的工作,所以我在master中开发,然后为每个其他版本维护一个分支.所以我的回购看起来像这样:
1.6.0 1.6.1-eap1
.... a---b---c--- master
\ \
d-------e--- idea-2017.1
\ \
f-------g--- idea-2016.3
\ \
... ... etc etc
Run Code Online (Sandbox Code Playgroud)
a
是一个稳定的版本,并已被标记1.6.0
.c
是一个EAP(beta)版本,并已被标记1.6.1-eap1
.这种方案适用于这两种情况.
偶尔我想创建一个不会进入发布渠道的开发版本,但是用户可以手动下载并测试他们是否喜欢.我想为每个平台生成一个开发版,因为开发用户可以使用任何IntelliJ版本.我能想到的最好的方法是为dev构建创建一个分支,比如标记1.6.0
(提交a
),然后从提交中创建相应的分支d
,f
依此类推,我可以将dev分支合并到其中并创建dev构建.
假设我想编写一个脚本来创建和维护这些分支,我怎样才能从标签中找到提交等d
,f
从而1.6.0
创建dev构建分支?
a
对于“在最早提交的不在其中和最早g
的提交之间查找不在其中”的问题,解决方案是使用命令:idea-2016.3
idea-2017
idea-2017
master
git log --oneline --source --ancestry-path master idea-2017 idea-2016.3 --not 1.6.0
Run Code Online (Sandbox Code Playgroud)
历史上的输出与您的相同:
cf32d9f idea-2017 e
88f264c idea-2016.3 g
5bc9fa1 idea-2017 d
3f460fe idea-2016.3 f
224cac8 master c
67620cd master b
Run Code Online (Sandbox Code Playgroud)
然后找到标记为 的最新行idea-2016.3
和标记为 的最新行idea-2017
,这将是您的提交。
请注意,如果由于版本差异而存在某些阻止程序问题,则输出可能不理想,例如f
在后续中修复的问题f'
。所以我仍然会考虑显式标记。
归档时间: |
|
查看次数: |
217 次 |
最近记录: |