J Git: Могу ли я узнать, существует ли определенный тег в репозитории Git, не проверяя его? - PullRequest
2 голосов
/ 26 февраля 2020

Мне нужно написать фрагмент кода в Java, который проверяет, существует ли конкретный тег в репозитории Git.

Наиболее очевидный способ сделать это так:

git = Git.cloneRepository()
        .setURI(gitUri)
        .setDirectory(dir)
        .call();
git.checkout().setName(String.format("refs/tags/%s", version)).call();

Если тег version не существует, будет выдано исключение.

Но для этого необходимо, чтобы у меня был каталог (dir), в который будет извлечен репозиторий.

Можно ли узнать, существует ли тег в удаленном хранилище, не проверяя его на диске? Если да, как я могу это сделать?

1 Ответ

2 голосов
/ 26 февраля 2020

LsRemoteCommand может перечислить ссылки, которые имеет удаленный репозиторий.

Команда может быть настроена на включение тегов, подобных этому:

LsRemoteCommand ls = Git.lsRemoteRepository();
Collection<Ref> remoteRefs = ls
    .setRemote("url-to-remote-repo")
    .setHeads(true) // true by default, set to false if not interested in refs/heads/*
    .setTags(true)  // include tags in result
    .call();

Если вы предпочитаете получать карту ref-имён для Ref объектов, вы можете выполнить команду с callAsMap().

...