#python #git
#python #git
Вопрос:
Какой правильный код для этого случая:
p = subprocess.Popen(["git", "log" , "-1", "--pretty=format:'%s %n%n%b'", hash],
stdout=subprocess.PIPE)
out, err = p.communicate()
print out
message = 'n' out
Я всегда получаю эту ошибку:
fatal: ambiguous argument '': unknown revision or path not in the working tree.
output: Use '--' to separate paths from revisions
и я нахожусь в рабочем дереве.
Ответ №1:
Поскольку вызов не анализируется оболочкой, вам вообще не нужны кавычки:
p = subprocess.Popen(
["git", "log" , "-1", "--pretty=format:%s %n%n%b", hash],
stdout=subprocess.PIPE)
Комментарии:
1. git использует этот формат —pretty=format:’%s %n%n%b'» поэтому мне нужно »
2. @user1033964: Нет, они вам не нужны. Они нужны вам только при вызове git из командной строки, чтобы предотвратить обработку командной строки и разделение параметров. Оболочка удалит кавычки, и git их не увидит.
3. но та же ошибка: фатальная: неоднозначный аргумент «: неизвестная редакция или путь, отсутствующий в рабочем дереве.
4. @user1033964: Вероятно, ошибка связана с тем, что
hash
является пустой строкой.
Ответ №2:
Я не уверен, хотите ли вы включить обратную косую черту или нет, поэтому я просто поместил это здесь
>>> s = "--pretty=format:'%s %n%n%b'"
>>> print s
--pretty=format:'%s %n%n%b'
>>> s2 = "--pretty=format:'%s %n%n%b'"
>>> print s2
--pretty=format:'%s %n%n%b'
>>> s3 = "--pretty=format:\'%s %n%n%b\'"
>>> print s3
--pretty=format:'%s %n%n%b'