Используйте сообщение о фиксации в рычаге CVS перед фиксацией

попробуйте это:

//[содержит (@prop, 'нечто')]

, который должен работать на любые теги "a" в документе

5
задан dreamlax 7 December 2009 в 00:07
поделиться

4 ответа

Вот несколько полезных учебных пособий по продаже:

http: // durak .org / Sean / Pubs / Software / CVSBook / The-ContimeInfo-and-loginfo-and-rcsinfo-and files.html
http://durak.org/sean/pubs/software/cvsbook/the-verifymsg-and -RCSINFO-файлы .HTML # The-verifymsg-and-rcsinfo-файлы

Вы не можете делать то, что вы хотите только с одним крюком, но вы можете использовать два крючка, ContimeInfo позволит вам проверить Сами файлы и verifymsg позволит вам проверить сообщение. Оба могут быть использованы для отмены фиксации (программы просто нужно выйти со статусом 1). В случае, если вы не знали, CheckoutList , ContimeInfo и «Verifymsg» могут быть найдены в каталоге CVSRoot вашего репозитория. Я бы порекомендовал порекомендовать какие-либо скрипты, которые вы пишете как крючки в этом каталоге, но это не имеет значения, насколько вы получаете, чтобы указать полный путь. Кроме того, Perl не нужен или не требуется, просто просто для меня писать некоторые (глупые) примеры в:

CheckoutList

# these files will be automatically checked out for you
acceptable

Verifymsg

# specifies which file to run as hook, %l is filename of log message
# bar$     /path/to/repo/CVSROOT/verify_ends_in_bar %l
DEFAULT    /path/to/repo/CVSROOT/acceptable %l %s

Приемлемые

#/usr/bin/perl -w

use strict;
use warnings;

# this would be simpler if cvs passed sane arguments
my ($logfile, $dir, @files) = @ARGV;
my $grep = `grep -i 'accept liability' $logfile`;
exit 0 if $grep;

my $found = 0;
foreach my $file (@files) {
    my $path = join '/', $dir, $file;
    die "Can't find file $path" if ! -e $path;
    my $grep = `grep -i 'evidence of any deliberation' $path`;
    $found++ if $grep;
}
die "You must accept liability or show evidence of deliberation" if $found < @files;

Angreat

#/usr/bin/perl -w

use strict;
use warnings;

# this would be simpler if cvs passed sane arguments
my ($logfile, $dir, @files) = @ARGV;
my $grep = `grep -i 'accept liability' $logfile`;
exit 0 if $grep;

my $found = 0;
foreach my $file (@files) {
    my $path = join '/', $dir, $file;
    die "Can't find file $path" if ! -e $path;
    my $grep = `grep -i 'evidence of any deliberation' $path`;
    $found++ if $grep;
}
die "You must accept liability or show evidence of deliberation" if $found < @files;

Удостоверение

#/usr/bin/perl -w

use strict;
use warnings;

# this would be simpler if cvs passed sane arguments
my ($logfile, $dir, @files) = @ARGV;
my $grep = `grep -i 'accept liability' $logfile`;
exit 0 if $grep;

my $found = 0;
foreach my $file (@files) {
    my $path = join '/', $dir, $file;
    die "Can't find file $path" if ! -e $path;
    my $grep = `grep -i 'evidence of any deliberation' $path`;
    $found++ if $grep;
}
die "You must accept liability or show evidence of deliberation" if $found < @files;

. Голова без тестирования, поэтому я не могу гарантировать, что это работает, но он должен получить вам хотя бы закрыть.

Отредактируйте еще раз , я только что понял, что изначально не ошибался, и вы можете передавать как логики, так и преданные имена файлов Verifymsg , что делает ответ довольно проще.

4
ответ дан 14 December 2019 в 04:39
поделиться

Вы можете использовать файл verifymsg в каталоге CVSROOT . Вы можете настроить его для вызова сценария, который может проверить содержимое комментария к отметке. Вы можете отклонить фиксацию, вернув ненулевое значение.

Файл verifymsg по умолчанию содержит более подробную информацию.

1
ответ дан 14 December 2019 в 04:39
поделиться

Модуль CVS :: Trigger Модуль Perl, по-видимому, имеет функцию эксперимента , которая позволяет кэшировать значения между вызовом разных триггеров. Страница явно упоминает, передавая файлы имена файлов PeryInfo для verifymsg, поэтому, возможно, это поможет вам добиться того, что вы хотите.

3
ответ дан 14 December 2019 в 04:39
поделиться

Я занимался тем же вопросом. До сих пор лучшим решением было получение идентификатора родительского процесса (getppid()) и использование его во временном файле, в который я могу поместить список файлов из commitinfo. Этот родительский ID, похоже, такой же для процесса verifymsg (по крайней мере, на AIX). Удачи.

0
ответ дан 14 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: