Ich bin ein automatisiertes vor-Festschreibung Skript based in the Carlos Buenos Vinos tutorial, aber das große Problem ist: Ich arbeite in einer Firma, die Windows in den Dev-Computern verwenden (Ich weiß, ich weiß, und ich kann nicht tu nichts über diese sry).EGREP und AWK gleichwertigen Befehl in Windows
Das Skript hat die folgende Methode:
private function extractCommitedFiles()
{
$output = array();
$rc = 0;
exec('git rev-parse --verify HEAD 2> /dev/null', $output, $rc);
$against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
if ($rc == 0) {
$against = 'HEAD';
}
// unix/linux
// exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
// windows
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
return $output;
}
So ... hat jemand auf die Linie unten eine Idee zu einem äquivalenten Befehl hat?
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
Ich habe folgendes Ergebnis muss, wenn ich diesen Befehl in UNIX/Bash ausführen:
core/web/favicon.ico
core/web/htaccess.txt
core/web/index.html
core/web/slim.php
core/web/swagger/css/print.css
core/web/swagger/css/reset.css
core/web/swagger/css/screen.css
core/web/swagger/css/style.css
core/web/swagger/css/typography.css
core/web/swagger/fonts/DroidSans-Bold.ttf
Aber mit exec (‘... ohne die egrep und awk Befehle ich folgendes habe Ergebnisse:
A core/web/htaccess.txt
A core/web/index.html
A core/web/slim.php
A core/web/swagger/css/print.css
A core/web/swagger/css/reset.css
A core/web/swagger/css/screen.css
A core/web/swagger/css/style.css
A core/web/swagger/css/typography.css
A core/web/swagger/fonts/DroidSans-Bold.ttf
Thank u guys
ich kann. Aber ich versuche, die Aufgabe zu automatisieren, weil wir andere Entwickler haben und die Idee ist, das Skript, das den Job ohne zusätzliche manuelle Aufgaben erledigt. Ich komme mit dem Befehl ** git ls-files -m ** aber es gibt keine Option -a für hinzugefügte Dateien :( –
Der egrep-Befehl lässt nur diese Zeilen durch, die mit A oder M beginnen. Der awk-Befehl druckt nur die "zweite Spalte" ist der Dateiname. So erhalten Sie die Dateien hinzugefügt oder geändert. –
Es sollte nicht schwer sein, Ihr eigenes Programm zu ändern, um diesen Teil auszuführen - Zeilen überspringen, die nicht mit 'A' oder' M' beginnen ; Überspringe das erste Feld und das Leerzeichen danach und erhalte den Dateinamen aus dem Rest der Zeile. (Das Awk-Skript würde für alle Dateinamen mit Leerzeichen in ihren Namen falsch funktionieren.) – tripleee