我正在开发将其他应用程序从git repo部署到服务器的应用程序,并且有一个选项,用户可以选择要部署的修订版本。
我的问题是验证修订是否存在于给定的回购而不下载。
在https://stackoverflow.com/questions/1423846/convert-unicode-from-json-string-with-php中他们建议使用test $(git cat-file -t $sha) == commit
,但需要本地回购。
是否可以通过其URL检查远程存储库中是否存在修订版本?
答案 0 :(得分:0)
您的问题取决于修订(提交)
的含义如果您的意思是“引用”(例如标记或分支),那么您可以使用git-ls-remote检查存储库是否存在它而不下载它。
如果您的意思是“提交ID”(例如SHA),那么取决于该提交是否是远程存储库中当前引用的头部。如果是这样,那么'git ls-remote --heads --tags'将显示当前头的SHA,例如使用命令行:
$ git ls-remote --heads --tags origin
From git@git.company.com:proj/path
05f1351c4d2aef79e0f52ef32868f5f56e4bf264 refs/heads/dev
2e5df15c40441428c8c0a622bfd8c59d124fc9c7 refs/heads/master
05e1351f4d2aef79e0f522f33868f5f56e4bf264 refs/heads/prod
05e1351f4d2aef79e0f522f33868f5f56e4bf264 refs/heads/stage
05e1351f4d2aef79e0f522f33868f5f56e4bf264 refs/heads/test
但是,如果SHA不在引用的头部(即是祖先),那么您需要根据需要下载(clone和/或fetch)。有关更多背景信息,请参阅running git-merge on a remote中的此讨论。