分支上的函数开发
函数可以在分支(branch)上开发、发布和消费,这样改动不会直接影响主线。这一篇讲分支开发流程、冲突解决与合并。
https://www.palantir.com/docs/foundry/functions/branching-functions/
原始标题:Functions > Branching functions
先记住这几条
写在前面
你可以在全局分支(global branch)上开发、发布并使用函数。目前 TypeScript v1、TypeScript v2 和 AIP Logic 函数支持此特性。
你不能修改分支上的 Python 函数。若要在合并进 main 之前测试,可引用分支上的特定函数版本。函数代码只能使用存在于 main 上的 schema。
在分支上开发
在分支上开发
在全局分支上开发 TypeScript 函数之前,请确保你的仓库满足以下要求。要使用 TypeScript v1 的 Global Branching,请将 functions-typescript 子模板升级到 0.903.0 或更高版本;具体步骤参见仓库升级文档。要使用 TypeScript v2 的 Global Branching,请将 typescript-functions 父模板升级到 0.1299.0 或更高版本,并启用本地 Ontology SDK。
你可以开发一个依赖全局分支上资源改动的函数,例如新建或修改过的 Ontology 实体。

就绪后,用一个版本目标(version target)发布你的函数——即在全局分支合并时发布到 main 的稳定版本。在分支开发期间,函数以不稳定的预览版本形式发布。

成功在分支上发布函数后,你就可以在 Workshop、AIP Logic 和函数支撑的动作中使用分支上的新函数版本。该版本会打上 Branched pre-release(分支预发布) 标签。分支上发布的函数在其他分支(包括 main)上不可访问。


目前在 TypeScript v1 仓库中,无法依赖查询函数的分支版本。
在分支上持续开发时,你可以不断地往同一个版本目标发布函数版本。只要版本目标保持不变,任何使用你函数的资源都会自动拉取最新发布的版本。这让你无需在每次发布后手动更新函数引用,即可快速迭代。
如果分支上的版本目标发生变化,你必须把所有在分支上使用了旧版本的函数依赖方更新到新版本目标。这也会以检查项的形式显示出来。
冲突解决与 rebase
冲突解决与 rebase
在分支上开发时,你不会自动收到发布到 main 的更新函数版本。这能防止 main 的开发干扰你的分支工作。如果 main 上有更新的版本可用,你会在函数版本选择器和 Ontology Manager 中看到通知。随后你可以对函数版本执行 rebase(变基),以拉取 main 上的所有更新版本。

如果你的版本目标在开发期间被发布到 main,你必须在合并前选择一个新的版本目标。一旦选定,更新所有依赖方以使用新的版本目标。
合并回主线
合并回主线
合并全局分支时,被修改的函数会以稳定版本目标发布到 main。使用分支上所发布版本的资源,会自动开始使用合并时发布到 main 的新稳定版本。
Foundry 只会把你的版本目标合并进 main,不会合并在分支上发布的其他版本。这些版本在分支合并后不会存在于 main 上。
延伸阅读 · 相关页面
按主题横向跳转,不必顺着目录一篇篇读。
常见问题速答 · FAQ
关于「分支上的函数开发」,读者最常问的几个问题。