Git-Pre-Commit-Hook, der automatisch Ausführungsberechtigungen (+x) für alle .sh-Dateien erteilt, die festgeschrieben wePython

Python-Programme
Anonymous
 Git-Pre-Commit-Hook, der automatisch Ausführungsberechtigungen (+x) für alle .sh-Dateien erteilt, die festgeschrieben we

Post by Anonymous »

Ich versuche genau das gleiche Problem zu lösen, das hier dargestellt ist:
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)
Ich beherrsche Bash nicht, um es in Bash umzuschreiben. Ist es überhaupt möglich, dies in Bash zu erreichen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post