Как я могу достичь цели, чтобы заменить следующие строки идентификаторов CVS стиля
<?php // $Id: index.php,v 1.123.5.56 2000/01/01 11:11:11 user Exp $
в
<?php // $Id$
рекурсивно во всех файлах расширений .php .class в GIT-репозитории.
Моя проблема:
У меня есть два репозитория GIT с более чем тысячами PHP-файлов.
Когда я хочу объединить их, это вызывает конфликты в файлах, имеющих расширенные идентификаторы CVS. Однако я хочу игнорировать эти изменения, поскольку хочу беспокоиться только о тех реальных конфликтах, которые происходят между исходным кодом & мои модификации.
Решения, которые я пробовал БЕЗ удовлетворительного результата:
В Perl вы можете использовать File::Find::Rule
найти все соответствующие файлы в хранилище. Затем скопируйте файлы в файл резервной копии перед выполнением замены:
use strict;
use warnings;
use File::Find::Rule;
File::Find::Rule->new
->file
->name(qr/\.(php|class)$/)
->exec( \&do_replacement )
->in('.');
sub do_replacement {
my ( $fn, undef, $full_path ) = @_;
$^I = '.bak'; # suffix of backup file
local @ARGV = ( $fn );
while (<>) {
s{<\?php\s*//\s*\$Id:.*?\$}{<?php // \$Id\$}g;
print;
}
}
Других решений пока нет …