如何在PHP中获取Subversion修订版号?

Tho*_*aaf 30 php svn revision

我希望我的PHP应用程序标有它使用的修订号,但我不想使用CruiseControl或更新文件并每次上传它.我该怎么办?

dar*_*mon 53

SVN关键字不是一个好的解决方案.正如其他人所指出的,在文件中添加$ Revision $只影响特定文件,这可能不会长时间改变.

记住在每次提交之前"编辑"文件(通过添加或删除空行)是没有意义的.您也可以手动输入修订版.

一个很好的方法(据我所知)是一个自动部署过程(这总是一件好事)并使用命令svnversion.这是我做的:

我需要修改的地方包括:<?php include 'version.php'; ?>.此"version.php"文件仅包含修订号.此外,它不是存储库的一部分(它被设置为被忽略).以下是我创建它的方法:

1)在服务器上安装SVN的项目中,我也使用它进行部署.获取最新版本到服务器我有一个脚本,其中包括以下内容(它在服务器上运行):

cd /var/www/project
svn update
rm version.php
svnversion > version.php
Run Code Online (Sandbox Code Playgroud)

2)在未安装SVN的项目中,我的部署脚本更复杂:它在本地创建version.php文件,压缩代码,上传并提取它


Oli*_*Oli 16

假设您的webroot是subversion树的签出副本,您可以解析/.svn/entries文件并挂出修订号(此处为第4行)...

在PHP中:

$svn = File('.svn/entries');
$svnrev = $svn[3];
unset($svn);
Run Code Online (Sandbox Code Playgroud)

  • @ Brent.Longborough如果可以,我会拒绝你的评论,但我不能,所以我会留下这个评论. (11认同)
  • 使您的应用程序依赖于Svn内部.对不起,不,不 (8认同)
  • Subversion 1.7不再使用.svn/entries文件来实现此目的; 如果您的目标系统没有可用的svn二进制文件,则必须深入了解.svn/wc.db sqlite数据库. (5认同)

Nat*_*.B. 8

这就是我开始工作的方式.如果您的服务器设置为允许shell_exec并且您安装了SVN,则运行:

$revision = `svnversion`;
Run Code Online (Sandbox Code Playgroud)

要么

$revision = shell_exec('svnversion');
Run Code Online (Sandbox Code Playgroud)

  • 这怎么不是公认的答案.它看起来比任何其他方案都完美和方式更好.你甚至可以将cron填充到文本文件中.谢谢!简单而完美,正是OP所要求的 (3认同)