在 CVS 预提交挂钩中使用提交消息

2023-11-23

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

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

我没有选择使用其他版本控制系统。


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

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

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

结账清单

# 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使答案变得更加简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CVS 预提交挂钩中使用提交消息 的相关文章

  • SQL版本控制方法

    SO 有几个关于 SQL 版本控制的问题 网上有很多资源 但我找不到完全涵盖我想要做的事情的东西 首先 我在这里谈论一个方法论 我熟悉各种源代码控制应用程序 也熟悉 Red Gate 的 SQL Compare 等工具 并且我知道如何编写应
  • 清理 Subversion 存储库的最佳方法是什么?

    我有一个不断增长的存储库 其中包含十几个我使用 TortoiseSVN 维护的项目 因为我对此完全陌生 还不知道其来龙去脉 我保存存储库的空间有限 因此我想备份它 然后删除一些旧版本 例如 如果一个项目的版本为 50 我只想保留 50 49
  • 在两个单独的分支或存储库中管理项目后端和前端?

    我启动了一个移动应用程序项目 该项目将具有服务器端和应用程序本身 所以 在master分支我创建了2个项目myapp server and myapp然后我创建了另外 2 个分支backend and frontend我只想将与它们相对应的
  • Git:如何使外部存储库和嵌入式存储库作为通用/独立存储库工作?

    我有一个大项目 比方说A repo 其中有一个子文件夹来自B repo 当我提交时 我会遇到如下警告A repo warning adding embedded git repository extractor annotator serv
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • 丢失了我在 GIT 中的提交。你会不小心删除提交吗?

    我正在使用 git gui 但看不到我的分支 我知道我今天检查了一些东西 在完成提交并使用分支查看器验证后 我更改为较早的分支 我对之前的分支进行了更改 然后想返回到当前的分支 但我再也看不到它了 任何帮助都会很棒 回答你的问题 在大多数情
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • Git 到 TFS 源代码管理迁移

    我想看看 TFS 如何为我的命令工作 所以我想将我们当前的 GIT 存储库移动到 TFS 数据库 我们使用 GIT 来获得普遍的分支支持 因此我想使用 TFS 2010 来解决该问题 现在的问题是 如何将 GIT 存储库导出到 TFS 显然
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 这是什么意思? “这正是因为不应该为库的所有用户确定性地重新编译库。”

    我是 Rust 新手 正在尝试了解 Cargo 的事情 我在他们的常见问题解答中读到 为什么二进制文件在版本控制中有 Cargo lock 但库没有 https doc rust lang org cargo faq html why do
  • 使用BFG时可以指定多个文件吗?

    我正在尝试删除通配符无法覆盖的多种类型的文件 我尝试使用多个 delete files 但它不接受它 还尝试将文件全部放在 delete files 之后 但它也不接受它 有没有一种方法可以将它们全部放在一个命令中 如果没有 那么我必须运行
  • “解决方案的源代码控制之间似乎存在差异......”

    我们在 Visual Studio 2005 和 TFS 中经常遇到此错误 任何人都可以帮助我们查明此消息的原因吗 完整的消息是 解决方案的来源之间似乎存在差异 控制有关某些项目的信息以及 项目文件 为了解决这个差异 有必要检查 项目文件并
  • 如何从 Git 存储库中删除选定的提交日志条目,同时保留其更改?

    我想从线性提交树中删除选定的提交日志条目 以便这些条目不会显示在提交日志中 我的提交树看起来像 R A B C D E HEAD 我想删除 B 和 C 条目 以便它们不会显示在提交日志中 但应保留从 A 到 D 的更改 也许通过引入单个提交
  • 在 Subversion 中,如何取消劫持文件?

    目前 我的团队有一组不应该受到版本控制的文件 但它们确实受到了版本控制 我想从我们的 subversion 存储库中删除它们 并允许每个人保留他们的本地版本 实现这一目标的最佳方法是什么 删除文件会将它们从存储库以及每个人的本地文件系统中删
  • Mercurial日志接口

    我一直在浏览 hginit com 上的教程 但我发现了一个相当不方便的方面hg log特征 基本上 当我输入它时 我会在顶部看到最新的更改 在底部看到最旧的更改 但这很烦人 因为大多数时候 您希望看到最新的修订版 所以 假设我有 100
  • Git 合并删除文件

    这是第二次发生这种情况 当我进行合并时 我后来意识到正在合并的分支中的一些文件不再位于正在合并的分支中 最新的例子是我们有一个功能分支 我一直在合并主开发分支中的更改 合并后我们丢失了很多文件 并且它们现在不存在于功能分支中 为什么会出现这
  • 相当于 svnblame/gitblame 的clearcase?

    在 Rational Software 的 Clearcase 中 有一个cleartool子命令或其他命令行工具 相当于blameSVN 中的命令还是 git 中的命令 最接近的一个是cleartool annotate https ww
  • 在 MySQL 数据库上使用版本控制 (Git)

    我是一名 WordPress 设计师 开发人员 越来越多地使用版本控制 特别是 Git 尽管我确实在某些项目中使用 SVN 我目前正在使用 Beanstalk 作为我的远程仓库 将所有 WordPress 文件添加到我的存储库中是没有问题的
  • 将远程存储库导入为具有完整历史记录的子目录

    我想将远程存储库作为具有完整历史记录的子目录进行合并和解耦 有多种方法和问题可以实现这一点 我的第一次尝试是使用subtree但它似乎没有重写文件的历史记录 所以我无法查看合并存储库的历史记录 接下来的尝试是手动合并它 就像 Seth Ro
  • 是什么让 DVCS 中的合并变得如此简单?

    我读于乔尔谈软件 http www joelonsoftware com items 2010 03 17 html 通过分布式版本控制 分布式部分实际上不是 最有趣的部分 有趣的是 这些 系统根据变化来思考 而不是 就版本而言 and a

随机推荐

  • GO111MODULE=on(加载模块要求时出错)

    go get u github com junegunn fzf工作正常 但想像这样测试开发分支 gert gert GO111MODULE on go get u github com junegunn fzf devel go find
  • 具有多个数据源的工作单元?

    有可能 甚至很可能 我只是没有完全理解 工作单元 的概念 基本上 我将其视为面向对象环境中使用的广泛事务 启动工作单元 与对象交互 提交或回滚 但这如何分解为这些对象背后的数据存储上的实际事务呢 在具有单个 DB 和 ORM 例如 NHib
  • 在启动 Shiny 应用程序时更改 RStudio 窗口的大小

    我正在使用 RStudio IDE 来开发闪亮的应用程序 启动应用程序时 我通常使用 RunApp 按钮 在窗口中运行 这将在具有特定宽度和高度的窗口中打开应用程序 有没有办法更改此窗口的宽度 以便每次启动应用程序时都会显示在更宽的窗口中
  • C 中运行时的变量名、函数参数

    C 程序运行时是否可以知道函数参数和变量的名称类型 例如 如果我有一个函数 int abc int x float y somestruct z char a int b 我可以知道这个函数的内部吗abc 参数和变量的名称是什么i e 在这
  • Android+Gradle:将目录列出到文件中

    我正在尝试将 ANT 构建中的任务转换为 Gradle
  • 代理对象无法添加到 DOM(陷阱也不会触发)

    我正在尝试做一个Proxy object of Image捕获属性 但即使使用空处理程序 我也会收到错误消息 TypeError Node appendChild 的参数 1 未实现 Node 接口 代理对象应该充当目标对象 所以这让我有点
  • Groovy:使用字符串作为路径设置动态嵌套方法

    我有一个对象内对象内对象的路径 我想使用 Groovy 的动态功能来设置它 通常您只需执行以下操作即可做到这一点 class Foo String bar Foo foo new Foo foo bar foobar 这样就可以了 但是如果
  • 如何制作虚线箭头的动画?

    正如标题所描述的 我正在尝试为虚线箭头设置动画 我希望它看起来尽可能接近这个这个网站 我能够制作箭头 尽管我不确定这是制作此类箭头的正确方法 我假设我必须用 SVG 绘制它 而且动画看起来很奇怪 我不知道如何让它更流畅 我很感激一些帮助的人
  • .h 文件中的重新定义错误

    list h file typedef struct lnode struct lnode next size t row size t column short data lnode typedef struct llist struct
  • 如何更改 Azure Functions (v2) 上的基本“/api”路径?

    在azure函数中 我们创建函数路由 名称 但它始终以 api开头 on the 文档我们读 请注意 您没有在路由模板中包含 api 基本路径前缀 因为这是由全局设置处理的 But 如何更改此基本 api 路径 接受的答案不适用于v2不再
  • 使用 async/await 提交/回滚 knex 事务

    我正在试驾ES7 异步 等待提案 using 该模块去模仿它 我正在努力使knex js作为一个起点 交易与它们配合得很好 示例代码 async function transaction return new Promise functio
  • Html 5 重置 (html5reset.org) - X-UA-Compatible 不起作用

    我正在使用优秀的 HTML 5 Reset 模板 html5reset org我的 X UA Compatible 元标记似乎不起作用 这是我的标题的样子
  • 在 wix 中更改我的组件 GUID?

    我什么时候应该更改或不更改 WIX 中的组件 GUID Microsoft SDK信息令人困惑 格利茨科夫编辑 澄清一下 问题涉及何时应更改 MSI 组件的组件 GUID 组件可以在以下方面进行更改 更改目标路径 在同一组件中添加或删除文件
  • p:密码不会重新显示预填充的模型值

    我有这样的托管 bean ManagedBean SessionScoped public class utilisateur implements Serializable private String login yous privat
  • 将两行之间的文本替换为存储在 sed 变量中的文件内容

    假设我有一个名为original txt包含以下内容 red blue water food tree gray white 我还有一个名为new txt包含以下内容 green black yellow purple 现在我想编写一个脚本
  • 找不到开发人员磁盘映像堆栈溢出 xcode 7.2,iOS 9.3.1 [重复]

    这个问题在这里已经有答案了 将我的设备更新到 iOS 9 3 1 Xcode 后 给出 无法找到开发人员磁盘映像 我使用的是 xcode 7 2 请帮忙 您需要下载 Xcode v 7 3 使用 gt 9 3 iOS 版本 并升级到 Xco
  • Pyspark:选择特定列及其位置

    我想知道如何在数据框中选择具有编号但不具有名称的特定列 在 Pandas 中是这样的 df df iloc 2 这是可能的 您始终可以使用以下方式获取列的名称df columns n 进而select it df spark createD
  • scala - 从字符串中获取类

    在 Scala 中 我使用一个需要类参数的 Java 库 例子 def service OAuthService new ServiceBuilder provider classOf RunApi RunApi 是 Java 类 不过 我
  • 如何开通区域监控服务?

    我稍微简化了问题 当我在应用程序中创建和添加区域并询问这些区域的状态时 我在中看到以下内容monitoringDidFailForRegion方法 The operation couldn t be completed kCLErrorDo
  • 在 CVS 预提交挂钩中使用提交消息

    是否可以在 CVS 的预提交挂钩中使用提交消息 CVS 服务器正在远程运行 我使用以下命令访问它pserver 理想情况下 如果文件通过过滤器 我希望允许提交or提交消息包含特定文本 我没有选择使用其他版本控制系统 以下是一些有用的教程 供