git worktree add завершается неудачно при запуске из подпроцесса Python в ловушке git - PullRequest
0 голосов
/ 13 мая 2019

git worktree add завершается неудачно при запуске из подпроцесса Python в ловушке git

Я попытался установить параметр cwd для подпроцесса, вручную создать каталог, проверить, существует ли каталог (он существует, но git worktree автоматически удаляет его при сбое), или с помощью shell = True. Ни один не изменил вывод.

Запуск 'git worktree add C: / Users / meh / Desktop / blah HEAD' в CMD / PowerShell работает просто отлично.

Путь к каталогу git: «C: / Users / meh / Desktop / blah»

temp_directory_path = "C:/Users/meh/Desktop/blah/abc"
print(temp_directory_path)
print(os.path.exists(temp_directory_path))
print(os.access(temp_directory_path, os.W_OK))
worktree_add_result = subprocess.run(["git", "worktree", "add", temp_directory_path, commit], capture_output=True, text=True, cwd="C:/Users/meh/Desktop/blah")
if worktree_add_result.returncode != 0:
    print(worktree_add_result)
    print(os.path.exists(temp_directory_path))
    print(os.access(temp_directory_path, os.W_OK))
    exit(1000)

Результат без созданного вручную каталога 'abc':

C:/Users/meh/Desktop/blah/abc                                                        
False                                                                                                                                    
False                                                                                                                                    
CompletedProcess(args=['git', 'worktree', 'add', 'C:/Users/meh/Desktop/blah/abc', '
HEAD'], returncode=128, stdout='Preparing worktree (detached HEAD cbfef18)\n', stderr="fatal: Unable to create 'C:/Users/meh/Desktop/blah/abc/.git/index.lock': No such file or directory\n")
False
False

Результат с созданным вручную каталогом 'abc':

C:/Users/meh/Desktop/blah/abc                                                      
True
True
CompletedProcess(args=['git', 'worktree', 'add', 'C:/Users/meh/Desktop/blah/abc', '
HEAD'], returncode=128, stdout='Preparing worktree (detached HEAD cbfef18)\n', stderr="fatal: Unable to create 'C:/Users/meh/Desktop/blah/abc/.git/index.lock': No such file or directory\n")
False
False

Ожидаемый результат:

Preparing worktree (detached HEAD cbfef18)
HEAD is now at cbfef18 commit message

1 Ответ

0 голосов
/ 14 мая 2019

Это не проблема Python, а проблема Git.Я пытаюсь запустить 'git worktree add' из ловушки git с именем 'pre-commit'.При фиксации сначала создается файл index.lock, а затем запускается мой скрипт.«git worktree add» не может скопировать этот файл по какой-либо причине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...