PHP Conference Japan 2024

SVN 函数

目录

添加注释

用户贡献的注释 6 条注释

2
bohwaz
11 年前
此扩展还允许您访问目前在任何地方都没有记录的对象 API。它使用 Svn、SvnWc、SvnWcSchedule 和 SvnNode 类。因此您不能重新声明这些名称。

以下是如何使用它的基本知识

<?php
$svn
= new Svn;
$log = $svn->log('https://svn.example/trunk/', Svn::HEAD);
?>

基本上,您可以通过将 svn_ 前缀替换为 $svn-> object 来使用此处记录的所有函数。常量也是如此,大多数可以直接从对象中使用。

如果您有兴趣,请确保检查扩展源代码以了解更多信息。
1
j dot saterfiel at gmail dot com
11 年前
截至 1.02 版本的 PHP SVN 库函数,这些函数未在此文档中列出,以及它们的签名

array svn_info(string path [, bool recurse = true [, int revision = -1]])

resource svn_copy(string log, string src_path, string destination_path [, bool working_copy = true [, int revision = -1]])

mixed svn_move(string src_path, string dst_path [, bool force = false])

mixed svn_proplist(string path [, bool recurse = false, [int revision]])

mixed svn_propget(string path, string property_name [, bool recurse = false [, int revision]])

bool svn_lock(string comment, mixed targets [, bool steal_lock = false])

bool svn_unlock(mixed targets [, bool break_lock= false])

resource svn_switch(string path, string url [, bool working_copy = true])

您还可以将新的 Svn() 对象用于这些 $svn->lock()

一般来说,任何函数都应该像 svn 命令行版本一样工作。例如,svn_info 可以针对远程 url 或本地路径使用,svn_copy 也可以用于本地或远程操作。
1
pierre dot beaumadier at rhapso dot fr
17 年前
[编者注:这些常量由 Subversion 库本身定义,可能会在未经通知的情况下更改(尽管事情往往相当稳定)。]

供参考,以下是我获得的常量的数值

工作副本状态常量
* svn_wc_status_none => 1
* svn_wc_status_unversioned => 2
* svn_wc_status_normal => 3
* svn_wc_status_added => 4
* svn_wc_status_missing => 5
* svn_wc_status_deleted => 6
* svn_wc_status_replaced => 7
* svn_wc_status_modified => 8
* svn_wc_status_merged => 9
* svn_wc_status_conflicted => 10
* svn_wc_status_ignored => 11
* svn_wc_status_obstructed => 12
* svn_wc_status_external => 13
* svn_wc_status_incomplete => 14

节点类型常量
* svn_node_none => 0
* svn_node_file => 1
* svn_node_dir => 2
* svn_node_unknown => 3
0
chris dot lawrence at ljg dot com
14 年前
我还将其作为错误提交(因为它与缺少文档有关)。

此文档未提及“svn_delete”命令,但它已在 0.4 版中添加。您可以在此处查看发行说明
http://pecl.php.net/package/svn/0.4

此外,您可以查看当前源代码(svn-0.5.1/svn.c)的内容。

但您真正需要知道的是,svn_delete 命令可以使用此原型正确工作
svn_delete(string path [, bool force = true])

成功时返回 true,失败时返回 false。

0
Pieter van Ginkel
16年前
经过一番搜索,我发现Subversion函数对我来说运行得相当不错。不过我需要一些时间才能弄清楚它们是如何协同工作的,但这是一个svn_fs_is_file的基本示例

<?php

# 获取磁盘上仓库的句柄。请注意,这
# 不是检出的项目,而是实际的svn仓库!

$repos_handle = svn_repos_open('/var/lib/svn');
$fs_handle = svn_repos_fs($repos_handle);

# 现在我们需要打开一个版本,因为这是
# svn_fs_* 方法需要的。您可能需要最新的
# 版本,我们有一个辅助方法来实现。

$youngest_rev = svn_fs_youngest_rev($fs_handle);
$fs_rev_handle = svn_fs_revision_root($fs_handle, $youngest_rev);

# 现在我们实际上可以开始做一些事情了,例如
# svn_fs_is_file 调用:

print_r(svn_fs_is_file($fs_rev_handle, '/a-file.txt'));

?>

关于这一切,有一点很重要需要注意。在对svn_fs_*进行任何调用时,您不能让句柄过期。在实现辅助类时,我缓存了第一个和第三个句柄,但没有缓存第二个。如果您这样做,PHP 会崩溃。在调用svn_fs_*方法时,请保留对所有获取的句柄的引用。
0
tbrendstrup
16年前
"[编者注:这些常量由Subversion库本身定义,可能会在未经通知的情况下更改(尽管情况往往相当稳定)。]"

Subversion 开发者有一个策略,即在不更改主版本号的情况下不更改此类内容,因此这些内容至少在发布 Subversion 2.0.0 之前都是有效的。(可能会添加更多值,但现有值不会更改)。
To Top