在Repos之间共享一个共同的脚本

时间:2017-01-27 21:16:49

标签: mercurial symlink

我的团队的源代码控制目录结构涉及许多连接到大型第三方应用程序的自定义存储库。它们包含的脚本只是存在于此应用程序内部的特定文件夹中。目前,当开发人员在项目/存储库之间切换时,他们将其目录复制并粘贴到此存储库中并删除其他存储库(或将其移动到单独的"非活动"目录)。这(明显地)偶尔会导致错过文件的问题,或者目录没有被正确清理"回购开关之间。

为了尝试提出一种更加万无一失的处理此问题的方法,我编写了一个脚本,该脚本将创建一个符号链接,从repo到第三方应用程序"脚本& #34;文件夹并删除之前在那里创建的其他符号链接。这将创建一个更新+运行脚本的两步过程(虽然将来我可以将此脚本直接挂钩到mercurial以使切换重新发送单个命令。)

第一个问题:这个符号链接系统是否有意义,或者有更好的方法吗?

第二个问题:如何在回购之间有效地共享此文件?我的第一个想法是使用subrepo,但这对于一个简单的脚本来说似乎有些过分,并且需要手动包含在每个repo中。

请注意:单一的整体回购并不是一个真正的选择,因为我并不想在系统中创造那么多的流失来实现这一点。此外,我们目前有一个核心库,它是我们的自定义存储库中的子库,如果这有所不同。我考虑将它存储在核心仓库中,但是我无法保证在任何一个仓库里面运行脚本的位置。

1 个答案:

答案 0 :(得分:1)

有几个选项,但每个选项都有退款:

  • 您可以将所有项目作为包含脚本和帮助文件的子仓库来构建项目

  • 您确实可以将script-repo作为每个项目的子仓库。

  • 您只需将脚本仓库拉入每个项目并将其与项目合并即可。 Mercurial会警告你,它不相关,但确定,它是,你希望知道你做了什么。如果执行此操作,则需要确保脚本存储库具有文件夹结构,以便与所有项目兼容,以便轻松进行合并。如果脚本repo经历更新,只需再次拉动并与项目的开发树合并。

在这种意义上,子回购方法已经退回,你开始使用在工作流程中具有粗糙边缘的子仓库。因此,我建议拉和合并。它给你一些重复(因为它存在于每个回购中),唉,它是一个脚本。