管理项目中源库的工具(没有子模块)?
A tool to manage source libraries in a project (without submodules)?
是否有命令行工具可以自动维护源库集合并将它们应用到项目中?
对于 gamejams(或者也可能是长期项目),我不想托管我用来修改它的每个库的自己的克隆(并向我的团队的每个成员授予对每个克隆的权限).相反,我希望我的所有源代码都在我的项目源代码树中——这意味着我不能使用 git 子模块。
假设我有一个项目 "puppypark",我想使用一些库 "baton" 和 "windfield"。
我正在寻找这种工作流程:
- 注册图书馆
librarian add baton git://lib.com/baton.git
- 克隆到中央存储库(例如,在 ~/.librarian/ 中)
- 向项目添加库
librarian use baton puppypark ./src/foreign/
- 在中央存储库中为该项目创建一个分支(off master)
- 将项目更改合并到中央存储库
librarian apply puppypark
- 切换到项目的分支并将更改复制到克隆中
- 将上游更改合并到项目中
librarian apply baton puppypark
- 获取项目分支的当前状态并复制到项目
- 除非目标存储库有一个干净的工作区,否则不会执行任何操作
- actions 总是导致提交总结所采取的行动
- 提交应始终具有提交 ID (sha)
这可能独立于我的版本控制系统,但如果它与 git 一起完成,那也很棒。
我认为这有点像迦太基(但对于源代码而不是构建的库,我对依赖项不感兴趣)。也许我可以用 git-subtree 实现其中的一些,但我不明白如何实现。我认为这就像 loverboy,但我对更通用的解决方案感兴趣。
我找不到解决方案,所以我写了自己的解决方案:librarian 自动将模块复制到项目和从项目中复制。与 loverboy 不同,您为它提供了如何复制模块的一般规则,而不是每个模块都需要规则。
设置 love2d 并将 windfield 导入项目的示例用法 "puppypark":
librarian config love --path src/lib/ --root-marker init.lua --rename-single-file-root-marker ".*.lua" --include-pattern ".*.lua|LICENSE.*"
librarian acquire love windfield https://github.com/adnzzzzZ/windfield.git
librarian checkout puppypark windfield
librarian checkin puppypark windfield
是否有命令行工具可以自动维护源库集合并将它们应用到项目中?
对于 gamejams(或者也可能是长期项目),我不想托管我用来修改它的每个库的自己的克隆(并向我的团队的每个成员授予对每个克隆的权限).相反,我希望我的所有源代码都在我的项目源代码树中——这意味着我不能使用 git 子模块。
假设我有一个项目 "puppypark",我想使用一些库 "baton" 和 "windfield"。
我正在寻找这种工作流程:
- 注册图书馆
librarian add baton git://lib.com/baton.git
- 克隆到中央存储库(例如,在 ~/.librarian/ 中)
- 向项目添加库
librarian use baton puppypark ./src/foreign/
- 在中央存储库中为该项目创建一个分支(off master)
- 将项目更改合并到中央存储库
librarian apply puppypark
- 切换到项目的分支并将更改复制到克隆中
- 将上游更改合并到项目中
librarian apply baton puppypark
- 获取项目分支的当前状态并复制到项目
- 除非目标存储库有一个干净的工作区,否则不会执行任何操作
- actions 总是导致提交总结所采取的行动
- 提交应始终具有提交 ID (sha)
这可能独立于我的版本控制系统,但如果它与 git 一起完成,那也很棒。
我认为这有点像迦太基(但对于源代码而不是构建的库,我对依赖项不感兴趣)。也许我可以用 git-subtree 实现其中的一些,但我不明白如何实现。我认为这就像 loverboy,但我对更通用的解决方案感兴趣。
我找不到解决方案,所以我写了自己的解决方案:librarian 自动将模块复制到项目和从项目中复制。与 loverboy 不同,您为它提供了如何复制模块的一般规则,而不是每个模块都需要规则。
设置 love2d 并将 windfield 导入项目的示例用法 "puppypark":
librarian config love --path src/lib/ --root-marker init.lua --rename-single-file-root-marker ".*.lua" --include-pattern ".*.lua|LICENSE.*"
librarian acquire love windfield https://github.com/adnzzzzZ/windfield.git
librarian checkout puppypark windfield
librarian checkin puppypark windfield