Eines der Dinge, die ich in meinem open novel in GitHub halte, ist ein list of words Ich möchte automatisch die erste Zeile einstellen, die die Anzahl der Wörter im Wörterbuch ist. Meine erste Option besteht darin, einen Pre-Commit-Hook zu schreiben, der die Datei liest, die Wörter zählt, die erste Zeile neu schreibt und sie wieder zurückschreibt. Hier ist der CodeKönnen Sie einen Dateiinhalt während des Git-Commits ändern?
PRE_COMMIT {
my ($git) = @_;
my $branch = $git->command(qw/rev-parse --abbrev-ref HEAD/);
say "Pre-commit hook in $branch";
if ($branch =~ /master/) {
my $changed = $git->command(qw/show --name-status/);
my @changed_files = ($changed =~ /\s\w\s+(\S+)/g);
if ($words ~~ @changed_files) {
my @words_content = read_file($words);
say "I have $#words_content words";
$words_content[0] = "$#words_content\n";
write_file($words, @words_content);
}
}
};
Da jedoch die Datei bereits aufgeführt wurde, erhalte ich diesen Fehler
error: Your local changes to the following files would be overwritten by checkout: text/words.dic Please, commit your changes or stash them before you can switch branches. Aborting
könnte es besser sein als ein zu tun, post-commit Haken und haben es für die veränderte nächste Verpflichtung? Oder etwas völlig anderes machen? Die allgemeine Frage ist: Wenn Sie den Inhalt einer Datei während des Commits bearbeiten und ändern möchten, wie ist dies der richtige Weg?
es ist also im Grunde ein anderes Kind von Hack, oder? Auf meine Art wird die Datei geändert, aber nicht bis zur nächsten – jjmerelo
Ja.Ich bin mir nicht sicher, ob ich mit beiden Ansätzen wirklich glücklich wäre; Ich hätte lieber etwas wie ein Makefile, um die Dinge nach Bedarf zu aktualisieren, und etwas mehr manuell. Aber es sollte funktionieren. – torek
Vielleicht wäre es nach dem Commit richtiger? – jjmerelo