2016-02-02 5 views
3

Я работаю над приложением, которое развертывает другие приложения с git-репо на сервер, и есть опция, в которой пользователь может выбрать версию для развертывания.Как проверить, существует ли ревизия (фиксация) в удаленном репозитории Git

Моя проблема заключается в проверке ревизии существует в данном репо без ее загрузки.

В similar question они рекомендуют использовать test $(git cat-file -t $sha) == commit, но для этого требуется местное репо.

Можно ли проверить, существует ли версия проверки на удаленном репо по его URL-адресу?

ответ

0

Ваш вопрос зависит от того, что вы имеете в виду ревизии (фиксации)

Если вы имеете в виду «ссылка» (например, тег или ветвь), то вы можете использовать git-ls-remote, чтобы проверить, если хранилище имеет его, не загружая его.

Если вы имеете в виду «commit id» (например, SHA), то зависит от того, является ли это фиксация текущей ссылкой в удаленном репозитории. Если это так, то «Git LS-дистанционные --heads --tags» покажет ШАС нынешних глав, например, с помощью командной строки:

$ git ls-remote --heads --tags origin 
From [email protected]:proj/path 
05f1351c4d2aef79e0f52ef32868f5f56e4bf264  refs/heads/dev 
2e5df15c40441428c8c0a622bfd8c59d124fc9c7  refs/heads/master 
05e1351f4d2aef79e0f522f33868f5f56e4bf264  refs/heads/prod 
05e1351f4d2aef79e0f522f33868f5f56e4bf264  refs/heads/stage 
05e1351f4d2aef79e0f522f33868f5f56e4bf264  refs/heads/test 

Если, однако, что ША не во главе ссылки (т. е. является предком), тогда вам нужно будет скачать (clone и/или fetch при необходимости). См. Обсуждение в running git-merge on a remote для получения дополнительной информации.

Смежные вопросы