【发布时间】:2021-09-18 11:16:33
【问题描述】:
我正在为 Linux 创建包和库,其中包括文件名中的包或库版本,soname。
当前使用版本控制处理此问题的最佳实践是什么?通常,版本控制将维护映射到用户工作区的版本控制文件的存储库。
我们都知道那首歌和舞蹈:
//repo/myfile.txt#1 //ws/myfile.txt
但是当我使用版本库时,这会变得很麻烦。
//repo/libs/my-library.so.1.0#1 //ws/libs/my-library.so.1.0
//repo/libs/my-library.so.1.1#1 //ws/libs/my-library.so.1.1
. . .
//repo/libs/my-library.so.3.0#1 //ws/libs/my-library.so.3.0
当我在我的 repo 上执行 get latest 时,我不一定需要每个版本的包,只需要最新版本。此外,版本控制系统的全部意义在于消除开发人员的这种麻烦。但是,实际上用户在分发这些库时确实需要版本化文件名。
有没有办法告诉我的版本控制系统像这样执行地图?
//repo/libs/my-library.so#1 //ws/libs/my-library.so.1.0
//repo/libs/my-library.so#2 //ws/libs/my-library.so.1.1
. . .
//repo/libs/my-library.so#30 //ws/libs/my-library.so.3.0
在我的具体主观用例中,我使用 Perforce 进行版本控制。但是,我主要对一般的最佳实践感到好奇,而不仅仅是 Perforce 实现这一点的黑客,如果它完全是一种愚蠢的方法。
【问题讨论】:
-
你的例子中
:的意义是什么?你的意思是用#来表示不同的版本吗? -
您是否将共享库存储在您的存储库中?这样做不是最佳做法。
-
@Samwise,是的,
:1后跟的 repo 路径是文件修订号。我会编辑我的帖子。 -
@bk2204 是的,我正在存储我的开发团队正在我们的存储库中创建的共享库,以及我们的系统包管理器使用的应用程序二进制文件和 ipk 文件。我们必须维护分布式系统的大型网络,并且我们能够维护旧版本以防技术人员搞砸了,这是一项业务需求。
标签: version-control filenames perforce