从URL获取git提交ID

时间:2014-07-01 21:32:28

标签: php git rss gitlab atom-feed

我试图在我的项目中解析来自Gitlab的原子提要,以在我的网站上显示版本历史记录。我计划每30分钟缓存一次结果,但现在我试图直接从Feed中提供的URL中提取提交ID。

Feed中提交的ID是一个URL:

https://gitlab.com/username/project/commit/c8c6ad918939d6fae60e1369b28b859390a32d56

要获取实际提交的简化版本,首先我按/展开网址,然后使用end()选择最后一个索引。如果我是正确的,那么提交ID将始终位于URL的末尾,因此这应该适用于gitlab上的任何项目(如果我错了请纠正我)。

$id = explode('/', $feed->id); // Explode the URL into an array

$commit  = substr(end($id), 0, 9); // Cut the string, select 

echo $commit, '<br>';

这为我提供了项目所有提交的列表。提交ID很漂亮,而不是预期的长哈希。

这里的问题是,我做对了吗?我能做得更好吗?


如果您想知道我是如何到达这里的,我首先从我的项目提交部分获取RSS Atom提要,然后在其上运行file_get_contents()并使用SimpleXMLElement解析XML。之后,我只在条目上使用foreach()来遍历所有提交。

我要缓存文件输出以获得性能,因此请忘记这一点。我真的想知道我是否正确有效地执行此操作以及您将使用哪种方法。

1 个答案:

答案 0 :(得分:0)

那么为什么不用一行正则表达式来打击它?类似的东西:

 preg_match_all("(\/[a-f0-9]{9})",$inputXmlFeed, $urls);

$ urls变量现在应该有一个你正在查找的提交哈希列表,而不需要解析或循环,除非你需要提交引用以外的东西。