Как пометить конкретную фиксацию с помощью GitPython

Я создал простой скрипт, который использует GitPython для пометки последней фиксации в определенной ветке, которая уже была проверена.

from git import Repo

def TagRepo(path, tag):
    repo = Repo(path)
    repo.create_tag(tag)
    repo.remotes.origin.push(tag)


if __name__ == "__main__":

    parser = optparse.OptionParser('usage: %prog [options] ')
    parser.add_option('-p', '--path', dest='path', help='path to repo')
    parser.add_option('-t', '--tag', dest='tag', help='Tag label')

    (options, args) = parser.parse_args()

    TagRepo(options.path, options.tag)

Я хочу улучшить его, чтобы я мог передать ему SHA определенного коммита и пометить его вместо последнего коммита в ветке, но я не вижу, как это сделать с помощью GitPython.


person Joe Smith    schedule 05.01.2018    source источник
comment
Если вы предоставляете конкретный SHA, зачем вам нужен этот тег? Их можно использовать взаимозаменяемо   -  person Chen A.    schedule 05.01.2018
comment
Когда я хочу найти коммит (который относится к выпуску) в будущем, я бы предпочел искать версию_1.2.3, чем a11bef06a3f659402fe7563abf99ad00de2209e6.   -  person Joe Smith    schedule 05.01.2018
comment
Просто примечание: не используйте Optparse, он помечен как устаревший и, вероятно, не включен в py3.   -  person Ciasto piekarz    schedule 27.02.2018


Ответы (2)


Из документации модуля :

Получить коммиты в указанной ревизии

    repo.commit('master')
    repo.commit('v0.8.1')
    repo.commit('HEAD~10')

Итак, чтобы получить конкретную фиксацию, просто используйте repo.commit('SHA-1')

person Chen A.    schedule 05.01.2018
comment
Спасибо, я попробую это. - person Joe Smith; 05.01.2018

Из исходного кода:

def create_tag(self, path, ref='HEAD', message=None, force=False, **kwargs)

похоже, вы можете передать ссылку на create_tag, которая после комментариев ниже описывается как:

:param ref: Ссылка на объект, который вы хотите пометить. Это может быть коммит, дерево или блоб.

так что просто получите нужную фиксацию и передайте ее как ref. не забывайте нажимать, как это делает OP.

person Gil Hiram    schedule 04.11.2018