Одна из вещей, которые я сохраняю в своем открывшемся романе список слов Я хотел бы автоматически установить первую строку, которая представляет собой число слов в словаре. Мой первый вариант - написать крюк предварительной фиксации, который читает файл, подсчитывает слова, переписывает первую строку и записывает ее снова. Здесь код
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 );
}
}
};
Однако, поскольку файл уже поставлен, я получаю эту ошибку
Ошибка: ваши локальные изменения в следующие файлы будут перезаписаны по кассе: текст /words.dic Пожалуйста, сделайте свои изменения или запишите их прежде чем вы сможете переключаться между ветвями. Aborting
Может быть, лучше сделать это как крюк после фиксации и изменить его для следующего коммита? Или вообще что-то совершенно другое? Общий вопрос: если вы хотите обработать и изменить содержимое файла во время фиксации, каков его правильный способ?