So übertragen Sie ausführbare Shell-Skripte mit Git unter Windows
„Wenn Sie Software mit Shell-Skripten unter Windows entwickeln, die auch unter UNIX laufen sollte, haben Sie ein Problem.
Windows-Dateisysteme wie NTFS unterstützen keine UNIX-Berechtigungsbits.
Wann immer Sie neue Shell-Skripte unter Windows erstellen oder umbenennen Vorhandene (die zum Zeitpunkt des Auscheckens möglicherweise ausführbar waren) sind diese nicht ausführbar. Wenn Sie den Code pushen, werden diese Skripte nicht auf einem UNIX-basierten Computer ausgeführt
Code: Select all
#!/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)
Mobile version