Перехватчик предварительной фиксации Git, который автоматически предоставляет разрешения на выполнение (+x) для всех фикPython

Программы на Python
Ответить
Anonymous
 Перехватчик предварительной фиксации Git, который автоматически предоставляет разрешения на выполнение (+x) для всех фик

Сообщение Anonymous »

Я пытаюсь решить ту же проблему, что и здесь:
Как фиксировать исполняемые сценарии оболочки с помощью Git в Windows
"Если вы разрабатываете программное обеспечение, включающее сценарии оболочки в Windows, которое также должно работать в UNIX, у вас возникает проблема.
Файловые системы Windows, такие как NTFS, не поддерживают биты разрешений UNIX.
Каждый раз, когда вы создаете новую оболочку сценарии в Windows или переименуйте существующие (которые могли быть исполняемыми на момент извлечения), они не будут исполняемыми. Когда вы отправите код, эти сценарии не будут запускаться на машине под управлением UNIX.
Приведенный сценарий предварительной фиксации, который предлагается в качестве решения вышеупомянутой проблемы, написан на Python.

Код: Выделить всё

#!/usr/bin/env python
import subprocess

if __name__ == '__main__':
output = subprocess.check_output(["git", "ls-files", "-s", "--", "*.sh"], shell=True).decode("utf-8")  # type: str
files_to_fix = []
for line in output.splitlines():
# Example for "line": '100644 82f6a7d558e1b38c8b47ec5084fe20f970f09981 0 test-update.sh'
entry = line.replace('\t', ' ').split(" ", maxsplit=3)
mode = entry[0][3:]  # strips the first 3 chars ("100") which we don't care about
filename = entry[3]
if mode == "644":
files_to_fix.append(filename)

for file_path in files_to_fix:
# git update-index --chmod=+x script.sh
subprocess.check_call(["git", "update-index", "--chmod=+x", file_path], shell=True)
Я не владею bash, чтобы переписывать его на bash. Возможно ли вообще добиться этого в bash?

Подробнее здесь: https://stackoverflow.com/questions/692 ... s-x-on-all
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»