# svn_status

(PECL svn:0.1-0.2)

svn_status — Returns the status of working copy files and directories

### Description

array svn_status ( string `$path` [, bool `$recursive` [, bool `$get_all` [, bool `$update` [, bool `$no_ignore` ]]]] )

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

### Parameters

`path`

  Local path to file or directory to retrieve status of.

  > Note: Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath() or dirname(__FILE__).

`recursive`

  Whether or not to recursively descend into directories to retrieve status. Default is `TRUE`.

`get_all`

  Whether or not to return all items, regardless of modification status. Default is `FALSE`.

`update`

  Whether or not to return information from the server on whether or not the working copy is up-to-date (specifically, entries will be added for items that are out-of-date along with the regular modification checks). Default is `FALSE`.

`no_ignore`

  Whether or not to disregard svn:ignore properties when scanning for new files. Default is `FALSE`.

### Return Values

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. Refer to status constants for possible values.
repos_text_status
  Status of item's text in repository. Only accurate if `update` was set to `TRUE`. Refer to status constants for possible values.
prop_status
  Status of item's properties. Refer to status constants for possible values.
repos_prop_status
  Status of item's property in repository. Only accurate if `update` was set to `TRUE`. Refer to status constants for possible values.
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. Refer to type constants for possible values.
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

### Notes

Warning

This function is EXPERIMENTAL. The behaviour of this function, the name of this function, and anything else documented about this function may change without notice in a future release of PHP. Use this function at your own risk.

### Examples

Example#1 Basic example

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

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

The above example will output something similar to:

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

### See Also

- svn_update()
- svn_log()
- » SVN documentation for svn status