我正在将我们的CVS数据库转移到Git上。这一举动需要我重新考虑一些配置和程序。我正在处理的一个挑战是,标签应用于Git中的整个存储库,而在CVS中,它们可以应用于单个文件。
我主要将CVS用于源代码,但我也将其用于其他类型的文件。我曾经使用过CVS的一个应用程序,现在我想使用Git来实现,那就是对零件编号的图纸进行版本控制。
在CVS中,我有一个带有几百个子文件夹的模块。每个子文件夹包含一个零件的工程图。我会用该零件的工程图修订来标记每个文件夹。不同部件的图纸修订之间没有相关性。
要在Git中完成同样的事情,一种解决方案是创建几百个存储库,每个部分一个,但这有一些缺点。例如,很难将完整的零件库/模块克隆到我的本地计算机上。我认为我必须手动克隆每个存储库才能做到这一点。
有没有更好的解决方案来在Git中设置这样的东西?是否有不同类型的标签可以仅应用于选定的文件?有没有一种方法可以用一个命令克隆所有存储库?
谢谢你的帮忙!
发布于 2020-04-18 03:42:54
我认为我必须手动克隆每个存储库....
您必须克隆每个存储库。
您不需要手动执行此操作。Git在内部使用脚本命令语言,因此所有Git安装都有脚本命令语言。(在许多系统中,您已经有了它:“外壳”(shell)或/bin/sh,有时也包括bash。)然后,您所需要的就是要克隆的存储库列表,外加少量脚本:
for i in $(cat repo-list); do git clone ${baseurl}/$i; done通常,一旦有了存储库,就再也不需要重新克隆了:只要有人更新了从中创建此克隆的存储库,您只需保留该存储库并在其上适当地运行git fetch即可。所以上面的循环并不都那么有用,但是:
for i in $(cat repo-list); do (cd $i && git fetch); done更有用。请注意,这使用了相同的repo列表。
您还可以在这里使用子模块,以及一个只包含一系列子模块的超级项目,但这似乎并不合适。您可以使用像谷歌的repo tool这样的工具,它的目标似乎是管理许多像这样的松散相关的存储库。(我自己还没有用过这个工具。)
https://stackoverflow.com/questions/61278693
复制相似问题