我想在我的游戏和游戏编辑器之间分享我的模型。游戏是在cocos2d框架中开发的,它包含c ++和Objective-C代码。编辑器在Qt中完成(在Windows 7 atm上开发)。该模型是纯C ++(没有平台特定的东西)。
我在工作中遇到了类似的问题,我通过将共享代码导出为项目并为其创建存储库来解决它。然后我将其添加为子项目并根据需要进行更新,但我不确定是否可以向Qt添加子项目。它实际上就像一个静态库存储库,它是编辑器和游戏存储库的子存储库,但我不知道该怎么做。
答案 0 :(得分:2)
听起来像你正在寻找的是Git submodules(强调我的):
经常发生在处理一个项目时,您需要使用其中的另一个项目。也许它是第三方开发的图书馆,或者您正在单独开发并在多个父项目中使用的库。在这些场景中出现了一个常见问题:您希望能够将这两个项目视为独立的,但仍然能够在另一个项目中使用它们......
Git使用子模块解决了这个问题。 子模块允许您将Git存储库保存为另一个Git存储库的子目录。这使您可以将另一个存储库克隆到项目中,并使提交保持独立 。
您还可以阅读有关submodules on the Git docs的更多信息。
答案 1 :(得分:1)
Subtree merging是另一种选择。
有关git-subtree
脚本背后的血腥详情,请参阅this和this(按增加的核心顺序排列)。
引用后一本手册:
在某些情况下,您希望从独立开发的项目中包含项目中的内容。只要没有冲突的路径,您就可以从其他项目中拉出来。
有问题的情况是存在冲突的文件。潜在的候选者是Makefile和其他标准文件名。您可以合并这些文件,但可能您不想这样做。针对此问题的更好解决方案是将项目合并为其自己的子目录。递归合并策略不支持此功能,因此只需拉动即可。
你想要的是子树合并策略,它可以帮助你处理这种情况。
git-subtree
脚本(Git在其相对现代版本的contrib
部分中包含)有助于子树合并。