Создание тегов с помощью Grit

Я пытаюсь создать тег в своем репозитории git через Grit, но я не уверен, что библиотека поддерживает теги, на которые есть ссылки. Это легко создать тег, как это:

Grit::Tag.create_tag_object(repo, params, actor)

Но это только создаст легкий тег. Чтобы иметь ссылочный тег, мне нужно также создать ссылку на тег, но реализация update_ref выглядит так:

def update_ref(head, commit_sha)
  return nil if !commit_sha || (commit_sha.size != 40)
  self.git.fs_write("refs/heads/#{head}", commit_sha)
  commit_sha
end

... что означает, что я могу создавать только ссылки на ссылки, а не теги ref. В классах Ref или Tag нет ничего, что могло бы делать что-либо.

У кого-нибудь есть идея, как создать ссылку на коммит через Grit?

2 ответа

Решение

Я создал новый тег, ссылающийся на коммит, следующим образом:

log = @repo.git.tag( { 'f' => true }, tag_name, commit_sha )

И получил:

Updated tag 'new_tag' (was 0000000)
$ git tag
...
new_tag
...
$ git show new_tag
commit e74b99a0ff706993e200939ee00079182f75ec29
...

Я не знаю много о зернистости (на самом деле ничего). Я бы сделал тег в обычном git. Затем найдите, где он находится в папке.git. Теперь найдите в исходном коде grit использование этого пути. Это должно привести вас к тому, что вы можете использовать в песке.

Другие вопросы по тегам