私が持っているものの一つopen novel in GitHubはlist of wordsです。私は自動的に最初の行、つまり辞書の単語の数を設定したいと思います。私の最初の選択肢は、ファイルを読み込み、単語をカウントし、最初の行を書き換えて、それを再び書き戻す、事前コミットフックを書くことです。ここでは、コードgit commit中にファイルの内容を変更できますか?
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);
}
}
};
は、ファイルがすでに上演されているので、私はこのエラー
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
が、コミット後のフックとしてそれを行うと、それがために変更した方が良いかもしれません得るのです次のコミット?あるいは、まったく別の何かをする?一般的な質問は、コミット中にファイルの内容を処理して変更したい場合は、それを行う正しい方法は何ですか?
だから、基本的にそれはですハックの別の子供、そう?私のやり方では、ファイルは変更されますが、次のファイルにコミットされません。 – jjmerelo
はい。いずれのアプローチでも私が本当に満足しているとは思えません。私はむしろ必要に応じて物事を更新するためのMakefileのようなものを用意しておきたい。しかし、それは動作するはずです。 – torek
ポストコミットを行う方が正しいでしょうか? – jjmerelo