• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • svn_status()

    (PECL svn >= 0.1.0)

    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(disregardsvn:ignoreproperties 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$updatewas set to TRUE.参见状态常量列表获得可能的值.
    prop_status
    Status of item's properties.参见状态常量列表获得可能的值.
    repos_prop_status
    Status of item's property in repository. Only accurate if$updatewas 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
    There seems to be an undocumented function svn_info (arguably the proper name for this functionality) that does almost the same as svn_status, but ignores the second parameter.
    Unfortunately, neither can directly be used to just retrieve the current revision of a working copy, but a combination of svn_status and SVN_NON_RECURSIVE|SVN_ALL will work; simply perform the following command:
    <?php
    svn_status(ROOT, SVN_NON_RECURSIVE|SVN_ALL);
    ?>
    Where ROOT is of course the root of the working directory you wish to examine. One of the entries will be that working directory, including its current status.

    上篇:svn_revert()

    下篇:svn_update()