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)andSvn::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 copysvn_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.