cel*_*vek 8 c c++ git version-control
我有一个为多个操作系统(现在是Linux和Windows,可能是OS X)和处理器而构建的项目.对于这个项目,我有一些库依赖项,它们是男性外部的,但我有几个内部的,以源代码形式,我为我的上下文中可能的每个OS处理器组合编译(交叉编译).
大多数外部库不会经常更改,只是在本地错误修复或某个功能\ bugfix在较新版本中实现的情况下,我认为它可能会对项目有所帮助.内部库经常更改(1个月周期)并由我公司的另一个团队以二进制形式提供,虽然我也可以访问源代码,如果我需要修复错误,我可以这样做并生成新的二进制文件我的使用直到下一个发布周期.我现在的设置如下(仅限文件系统):
-- dependencies
|
-- library_A_v1.0
|
--include
|
--lib
|
-- library_A_v1.2
|
--include
|
--lib
|
-- library_B
|
--include
|
--lib
| ...
Run Code Online (Sandbox Code Playgroud)
这些库保存在服务器上,每次进行更新时,我都必须在服务器上复制任何新的二进制文件和头文件.客户端上的同步使用文件同步实用程序完成.当然,对库的任何更新都需要向其他开发人员公布,每个人都必须记住同步他们的"依赖"文件夹.
不用说,我不太喜欢这个计划.所以我想把我的库放在版本控制(GIT)下.构建它们,将它们打包成tgz\zip并将它们推送到repo上.每个库都有自己的git存储库,这样我就可以轻松地标记\ branch已经使用过的版本和测试驱动器的新版本.每个库的"数据流",我可以轻松获取,组合,更新.我想要以下内容:
摆脱这种保存库的正常文件系统方式; 现在,为每个操作系统和每个版本保存和管理完整的单独文件夹,有时它们不同步导致混乱
更多地控制它,能够清楚地了解我们用于哪个版本的项目的库的版本; 很像我们可以从git(VCS)获得的源代码
能够标记\分支我正在使用的依赖项的版本(对于它们中的每一个); 我有我的v2.0.0标签/分支用于library_A我通常把它用于我的项目,但我想测试驱动2.1.0版本,所以我只是构建它,在不同分支上的服务器上推送它并调用我的构建脚本,这个特定的依赖项指向新的分支
有更简单的构建脚本 - 只需从服务器中提取源,拉动依赖项并构建; 这也允许对不同的处理器-OSO组合使用相同库的不同版本(通常我们需要)
我试图找到基于git的直接解决方案的一些替代方案,但没有太大成功 - 比如git-annex,这对于我正在尝试做的事情似乎过于复杂.
我现在面临的事实是,似乎非常强烈反对将二进制文件放在git或任何VCS下(尽管技术上我也会有头文件;我也可以将我直接描述的文件夹结构推送到git没有tgz\zip,但我仍然会有图书馆二进制文件)而且我的一些同事,在这个共同的强烈意见的推动下,反对这种方案.我完全理解git跟踪内容而不是文件,但在某种程度上我会跟踪内容,我相信它肯定会比我们现在的方案有所改进.
对于这种情况,什么是更好的解决方案?你知道基于git(VCS)的方案的任何替代品吗?将我的计划置于git :)下会是一件多么可怕的事吗?请分享您的意见,特别是您在处理这些类型情况时的经验.
谢谢
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |