2015-05-19 2 views
1

Мы использовали python для автоматизации какой-либо работы git в течение некоторого времени в моей группе, и все отлично работает. К сожалению, я столкнулся с тем, что хотел бы использовать, но не работает, когда помещается в подпроцесс python. Вот команда:Команда Git не работает в подпроцессе в Python

Когда я использую его в моем мерзавца Баш (мы используем Windows) он работает отлично, но когда я положил его в питон подпроцесса, он жалуется, что git rev-list --tags --max-count=1 не правильная команда. Мне было интересно, сможет ли кто-нибудь рассказать мне, почему и, желательно, использовать его. Я получил линию от этого вопроса:

How to get the latest tag name in current branch in Git?

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

Может ли кто-нибудь мне помочь?

ответ

1

Конструктор Popen по умолчанию не использует оболочку для разбора команды, которую вы ей даете. Это означает, что метасимволы оболочки, такие как backquote, и такие вещи не будут работать. Вы можете либо пройти shell = True, либо сначала запустить git rev-list --tags --max-count=1, а затем создать целую команду после этого.

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