# svn_status

(PECL svn >= 0.1.0)

svn_status — Returns the status of working copy files and directories

### 说明

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

Returns the status of working copy files and directories, giving modifications, additions, deletions and other changes to items in the working copy.

### 参数

`path`

  Local path to file or directory to retrieve status of.

  > Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

`flags`

  Any combination of `Svn::NON_RECURSIVE`, `Svn::ALL` (regardless of modification status), `Svn::SHOW_UPDATES` (entries will be added for items that are out-of-date), `Svn::NO_IGNORE` (disregard svn:ignore properties when scanning for new files) and `Svn::IGNORE_EXTERNALS`.

### 返回值

Returns a numerically indexed array of associative arrays detailing the status of items in the repository:

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

The information on the item is an associative array that can contain the following keys:

path
  String path to file/directory of this entry on local filesystem.
text_status
  Status of item's text. 参见 状态常量列表 获得可能的值.
repos_text_status
  Status of item's text in repository. Only accurate if `update` was set to `TRUE`. 参见 状态常量列表 获得可能的值.
prop_status
  Status of item's properties. 参见 状态常量列表 获得可能的值.
repos_prop_status
  Status of item's property in repository. Only accurate if `update` was set to `TRUE`. 参见 状态常量列表 获得可能的值.
locked
  Whether or not the item is locked. (Only set if `TRUE`.)
copied
  Whether or not the item was copied (scheduled for addition with history). (Only set if `TRUE`.)
switched
  Whether or not the item was switched using the switch command. (Only set if `TRUE`)

These keys are only set if the item is versioned:

name
  Base name of item in repository.
url
  URL of item in repository.
repos
  Base URL of repository.
revision
  Integer revision of item in working copy.
kind
  Type of item, i.e. file or directory. 参见 类型常量列表 获取可能的值.
schedule
  Scheduled action for item, i.e. addition or deletion. Constants for these magic numbers are not available, they can be emulated by using:

      <?php
      if (!defined('svn_wc_schedule_normal')) {
          define('svn_wc_schedule_normal',  0); // nothing special
          define('svn_wc_schedule_add',     1); // item will be added
          define('svn_wc_schedule_delete',  2); // item will be deleted
          define('svn_wc_schedule_replace', 3); // item will be added and deleted
      }
      ?>

deleted
  Whether or not the item was deleted, but parent revision lags behind. (Only set if `TRUE`.)
absent
  Whether or not the item is absent, that is, Subversion knows that there should be something there but there isn't. (Only set if `TRUE`.)
incomplete
  Whether or not the entries file for a directory is incomplete. (Only set if `TRUE`.)
cmt_date
  Integer Unix timestamp of last commit date. (Unaffected by `update`.)
cmt_rev
  Integer revision of last commit. (Unaffected by `update`.)
cmt_author
  String author of last commit. (Unaffected by `update`.)
prop_time
  Integer Unix timestamp of last up-to-date time for properties
text_time
  Integer Unix timestamp of last up-to-date time for text

### 注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

### 范例

Example #1 Basic example

This example demonstrates a basic, theoretical usage of this function.

    <?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
        )
    )

### 参见

- svn_update() - Update working copy
- svn_log() - Returns the commit log messages of a repository URL
- » SVN documentation for svn status