Git-从url获取库的版本
假设我知道swift库位于给定的url,例如。有没有一种方法可以在不首先下载的情况下获取库的最新版本的标签?如果您知道库的所有版本都是由标签指定的,您可以使用Git-从url获取库的版本,git,Git,假设我知道swift库位于给定的url,例如。有没有一种方法可以在不首先下载的情况下获取库的最新版本的标签?如果您知道库的所有版本都是由标签指定的,您可以使用git ls remote读取标签并处理最新版本: $ git ls-remote https://github.com/Peter-Schorn/Swift_Utilities.git 'refs/tags/*' | \ grep -v '{}' | tail -n1 | sed 's!.*refs/tags/!!' 2.0.7
git ls remote
读取标签并处理最新版本:
$ git ls-remote https://github.com/Peter-Schorn/Swift_Utilities.git 'refs/tags/*' | \
grep -v '{}' | tail -n1 | sed 's!.*refs/tags/!!'
2.0.7
请注意,您可能希望在词典中使用比最后一项更好的排序函数,但这将留给读者作为练习
如果您想要更复杂的内容(如给定分支上的最新版本或未标记的版本),则需要克隆存储库或为您正在查看的站点使用合适的API。我正在尝试解析“有没有一种方法可以在不先下载的情况下获取库的最新版本?”你能解释一下“获取”和“下载”的区别吗?哦,我明白了!也许“获取”意味着“学习”或“发现”版本号。我通常会在代码中发布这些信息。通常我也会保存一个历史文件,Git中没有固有的版本概念。您需要知道存储库维护者是如何公开版本的。很抱歉使用了令人困惑的@matt。我的意思是我想检索最新的版本标记,而不是库本身。如果您将此作为Swift包,它将在Json文件中有一个版本号,客户端将能够自动更新。这是假设标记仅用于版本。当然,这是另一个限制,事实上,有些人使用leading
v,有些人不使用。我发现这对zsh不起作用。我必须切换到bash才能让它工作。我使用zsh,它确实可以工作。如果启用了shell选项,当全局模式不匹配时会出错,那么需要引用refs/tags/*
。但是我给出了一个POSIX sh命令,它在标准POSIX或Debian sh环境中工作。我如何确定是否启用了shell选项,当glob模式不匹配时会出错?另外,我如何准确地引用refs/tags/*
?引号放在哪里?当我使用zsh时,为什么会出现错误找不到匹配项:refs/tags/*
,而不是bash?