如何清理版本控制 $Id$ 注释

发布于 2024-12-05 15:14:22 字数 561 浏览 0 评论 0原文

这可能是一个常见问题,但搜索引擎在搜索非字母数字字符方面非常糟糕。

我有一堆代码,其中包含标准版本控制 $Id$ 标签/注释。我需要一种简单的方法来从目录结构中的每个文件中删除(清理、剥离)所有这些标签。

具体来说,这是一个 PHP 脚本(具体来说是 phpBB),看起来像这样:

<?php
/**
*
* @package acp
* @version $Id: acp_attachments.php 8479 2008-03-29 00:22:48Z naderman $
*
*/
?>

我想要更改的行是这样的:

* @version $Id: acp_attachments.php 8479 2008-03-29 00:22:48Z naderman $

所以该行变为:

* @version $Id$


请记住,我使用的是 Windows,因此无法使用 Linux 命令进行查找/替换。但我确实有能力运行 PHP 来处理我的所有文件。

This might be a common question, but search engines are horrible at searching for non-alphanumeric characters.

I have a bunch of code which contains the standard version control $Id$ tag/comment. I need an easy way to remove (clean, strip), all of these tags from every file in a directory structure.

Specifically this is a PHP script (phpBB to be specific), and so looks like this:

<?php
/**
*
* @package acp
* @version $Id: acp_attachments.php 8479 2008-03-29 00:22:48Z naderman $
*
*/
?>

The line I want to change is this:

* @version $Id: acp_attachments.php 8479 2008-03-29 00:22:48Z naderman $

So the line becomes:

* @version $Id$

Keep in mind, I'm on Windows, so I can't use a Linux command for find/replace. But I do have the ability to run PHP to act on all my files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痞味浪人 2024-12-12 15:14:22

在 Windows 上,您可以使用以下正则表达式来使用 grepWin

Search为: \$Id\: .+ \$$

替换为: \$Id\$

注意: 首先对所有内容进行备份执行此操作之前的文件

On windows you can use grepWin using this regex:

Search for: \$Id\: .+ \$$

Replace with: \$Id\$

NOTE: first make a backup of all files before doing this

狼性发作 2024-12-12 15:14:22

你会使用 Perl 吗?这是我用于此目的的 cvs-clean 脚本:

#!/usr/bin/perl

use strict;
use warnings;

while (<>) {
    s/\$([A-Z][a-z]+):[^\$]*\$/\$1:\$/g;
    print;
}

它将标准输入过滤为标准输出。这不是您所要求的完全;它将 $Id: blah $ 更改为 $Id:$。删除 s/// 命令中的最后一个 : 来更改它。

如果您不能使用 Perl,则可以将其转换为 PHP 作为练习。

Can you use Perl? Here's my cvs-clean script that I use for this:

#!/usr/bin/perl

use strict;
use warnings;

while (<>) {
    s/\$([A-Z][a-z]+):[^\$]*\$/\$1:\$/g;
    print;
}

It filters stdin to stdout. It's not exactly what you asked for; it changes $Id: blah $ to $Id:$. Delete the last : in the s/// command to change that.

If you can't use Perl, translating this to PHP is left as an exercise.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文