最小克隆以获得转数

时间:2018-04-12 10:52:05

标签: bash git continuous-integration gitlab

在我的CI系统上,我需要从我克隆的另一个repo中获取转速计数。 因此,我这样做:

 var event = {
summary:summary,
location: location,
description: '',
start: {dateTime: newdatestart.toISOString()},
end: {dateTime: newdateend.toISOString()},
attendees: [
{email: ''},{email: ''}],
// Red background. Use Calendar.Colors.get() for the full list.
colorId: 11
};

event = Calendar.Events.insert(event, calendarId);

这有效,但是我可以执行git clone https://gitlab-ci-token:$CI_JOB_TOKEN@git.my.company/my-project.git temp cd temp && VERSIONCODE=$(git rev-list master --count) && cd - 而无需克隆整个回购或者甚至根本不能克隆它吗?

1 个答案:

答案 0 :(得分:3)

你确切问题的答案是“可能没有”。如果要使用git rev-list --count,则必须存在要计数的所有提交。当您说git rev-list master --count时,这将计算从master可到达的每个提交。如果您的大部分历史记录都可以从主人那里获得,我一点都不会感到惊讶。

(例如,如果您使用gitflow分支模型,那么所有发布版本,所有已完成的修补程序分支,所有已完成的发布分支,dev分支到最新版本,以及所有功能都包含在dev分支中,直到最新版本,都将被计算在内。)

如果此repo的分支工作流由于某种原因确实留下了很多master无法访问的历史记录,那么您可以使用--single-branch上的clone选项,该选项应该提取究竟需要计算什么。

git clone --single-branch --branch master <url>

但是如果你不能限制你需要的提交?从理论上讲,我认为--count操作可以在没有构成提交内容的所有对象的情况下工作;但是git没有“仅元数据”克隆的概念。任何提取提交的克隆或获取操作都需要内容。所以这不实用。

您最好的选择是,如果包含其他repo的托管软件提供的API可以为您提供信息。