gpt4 book ai didi

version-control - 在 CVS 预提交 Hook 中使用提交消息

转载 作者:行者123 更新时间:2023-12-04 17:59:16 26 4
gpt4 key购买 nike

是否可以在 CVS 的预提交 Hook 中使用提交消息? CVS 服务器远程运行,我使用 pserver 访问它.

理想情况下,如果文件通过过滤器 ,我希望允许提交或 提交消息包含某些文本。

我没有选择使用另一个版本控制系统。

最佳答案

以下是一些有用的教程,可以阅读更多内容:

http://durak.org/sean/pubs/software/cvsbook/The-commitinfo-And-loginfo-And-rcsinfo-Files.html
http://durak.org/sean/pubs/software/cvsbook/The-verifymsg-And-rcsinfo-Files.html#The-verifymsg-And-rcsinfo-Files

你不能只用一个钩子(Hook)做你想做的事,但你可以用两个钩子(Hook),commitinfo将让您验证文件本身和 verifymsg将让您验证消息。两者都可以用来取消提交(程序只需要以状态 1 退出)。如果您不知道,checkoutlist , commitinfo并且 'verifymsg' 都可以在存储库的 CVSROOT 目录中找到。我建议也将您编写的任何脚本作为钩子(Hook)放在该目录中,但这并不重要,因为您可以指定完整路径。此外,perl 不是必需的或必需的,我只是简单地在以下位置编写一些(愚蠢的)示例:

结账 list

# these files will be automatically checked out for you
acceptable

验证消息
# 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;

警告购买者:我在没有测试的情况下将大部分内容写在我的头上,所以我不能保证它有效,但它至少应该让你接近。

再次编辑 ,我才意识到我最初是错的,您可以将日志文件和提交的文件名都传递给 verifymsg使答案更简单一些。

关于version-control - 在 CVS 预提交 Hook 中使用提交消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1857101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com