2024 年 PHP Conference Japan

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-> 物件。常數也一樣,大多數可以直接從物件使用。

如果您有興趣,請務必查看擴充功能原始碼以了解更多資訊。
1
j dot saterfiel at gmail dot com
11 年前
此文件中未列出的 PHP SVN 函式庫 1.02 版函式及其簽章

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 可用於遠端網址或本機路徑,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