svn_status

(PECL svn >= 0.1.0)

svn_status返回工作副本文件和目录的状态

说明

svn_status(string $path, int $flags = 0): array

返回工作副本文件和目录的状态,提供工作副本中项目修改、添加、删除和其他更改的信息。

参数

path

要检索状态的本地文件或目录的路径。

注意: 相对路径将被解析,就好像当前工作目录是包含 PHP 二进制文件的目录一样。要使用调用脚本的工作目录,请使用 realpath() 或 dirname(__FILE__)。

flags

Svn::NON_RECURSIVESvn::ALL(无论修改状态如何)、Svn::SHOW_UPDATES(将为过时项添加条目)、Svn::NO_IGNORE(扫描新文件时忽略 svn:ignore 属性)和 Svn::IGNORE_EXTERNALS 的任意组合。

返回值

返回一个数值索引的数组,其中包含关联数组,详细说明存储库中项目的狀態

Array (
    [0] => Array (
        // information on item
    )
    [1] => ...
)

项目的信息是一个关联数组,可以包含以下键

path
path
本地文件系统上此条目的文件/目录的字符串路径。
text_status
项目文本的状态。有关可能的取值,请参考 状态常量
repos_text_status
项目文本在存储库中的状态。仅当 update 设置为 true 时才准确。有关可能的取值,请参考 状态常量
prop_status
项目属性的状态。有关可能的取值,请参考 状态常量
repos_prop_status
项目属性在存储库中的状态。仅当 update 设置为 true 时才准确。有关可能的取值,请参考 状态常量
locked
项目是否被锁定。(仅当为 true 时设置。)
copied
项目是否被复制(计划用历史记录添加)。(仅当为 true 时设置。)
switched

项目是否使用 switch 命令进行切换。(仅当为 true 时设置)

这些键仅当项目已版本化时才会设置
name
项目在存储库中的基本名称。
url
项目在存储库中的 URL。
repos
存储库的基本 URL。
revision
工作副本中项目的整数版本。
kind
项目类型,即文件或目录。有关可能的取值,请参考 类型常量
schedule
项目计划的操作,即添加或删除。这些幻数的常量不可用,可以通过使用以下方法来模拟:
<?php
if (!defined('svn_wc_schedule_normal')) {
define('svn_wc_schedule_normal', 0); // 没什么特别的
define('svn_wc_schedule_add', 1); // 项目将被添加
define('svn_wc_schedule_delete', 2); // 项目将被删除
define('svn_wc_schedule_replace', 3); // 项目将被添加和删除
}
?>
deleted
项目是否被删除,但父版本滞后。(仅当为 true 时设置。)
absent
项目是否不存在,即 Subversion 知道应该存在某个东西,但实际上不存在。(仅当为 true 时设置。)
incomplete
目录的条目文件是否不完整。(仅当为 true 时设置。)
cmt_date
最后一次提交日期的整数 Unix 时间戳。(不受 update 影响。)
cmt_rev
最后一次提交的整数版本。(不受 update 影响。)
cmt_author
最后一次提交的字符串作者。(不受 update 影响。)
prop_time
属性的最后一次更新时间的整数 Unix 时间戳
text_time

文本的最后一次更新时间的整数 Unix 时间戳

示例

示例 #1 基本示例

此示例演示了此函数的基本、理论使用方式。

<?php
print_r
(svn_status(realpath('wc')));
?>

Array (
    [0] => Array (
        [path] => /home/bob/wc/sandwich.txt
        [text_status] => 8 // item was modified
        [repos_text_status] => 1 // no information available, use update
        [prop_status] => 3 // no changes
        [repos_prop_status] => 1 // no information available, use update
        [name] => sandwich.txt
        [url] => http://www.example.com/svnroot/deli/trunk/sandwich.txt
        [repos] => http://www.example.com/svnroot/
        [revision] => 123
        [kind] => 1 // file
        [schedule] => 0 // no special actions scheduled
        [cmt_date] => 1165543135
        [cmt_rev] => 120
        [cmt_author] => Alice
        [prop_time] => 1180201728
        [text_time] => 1180201729
    )
)

上面的示例将输出类似于以下内容

注释

警告

此函数为 *实验性*。此函数的行为、名称及其周围的文档可能会在 PHP 的未来版本中发生变化,恕不另行通知。使用此函数需自担风险。

» SVN 文档 for svn status

改进此页面
向下
13 年前

似乎有一个未记录的函数 svn_info(可以说是此功能的正确名称),它几乎与 svn_status 相同,但忽略了第二个参数。

不幸的是,这两个函数都不能直接用于仅检索工作副本的当前版本,但 svn_status 和 SVN_NON_RECURSIVE|SVN_ALL 的组合将起作用;只需执行以下命令
<?php
svn_status
(ROOT, SVN_NON_RECURSIVE|SVN_ALL);
?>
To Top