mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-21 11:28:55 +00:00
284 lines
7.1 KiB
XML
284 lines
7.1 KiB
XML
![]() |
<?xml version="1.0" encoding="iso-8859-1"?>
|
||
|
<!-- $Revision: 1.1 $ -->
|
||
|
<refentry id="function.svn-log">
|
||
|
<refnamediv>
|
||
|
<refname>svn_log</refname>
|
||
|
<refpurpose>Returns the commit log messages of a repository URL</refpurpose>
|
||
|
</refnamediv>
|
||
|
|
||
|
<refsect1 role="description">
|
||
|
&reftitle.description;
|
||
|
<methodsynopsis>
|
||
|
<type>array</type><methodname>svn_log</methodname>
|
||
|
<methodparam><type>string</type><parameter>repos_url</parameter></methodparam>
|
||
|
<methodparam choice="opt"><type>int</type><parameter>revision_no</parameter></methodparam>
|
||
|
</methodsynopsis>
|
||
|
<para>
|
||
|
<function>svn_log</function> returns the complete history of the item at the repository URL
|
||
|
<parameter>repos_url</parameter>, or the history of a specific revision
|
||
|
if <parameter>revision_no</parameter> is set. This function is equivalent
|
||
|
to <userinput>svn log --verbose -r $revision_no $repos_url</userinput>.
|
||
|
</para>
|
||
|
<warning>
|
||
|
<para>
|
||
|
For repositories with large histories, the output may
|
||
|
be quite large (one array item for every revision of the item).
|
||
|
This function does not support the
|
||
|
<userinput>--limit NUM</userinput> flag, nor does it support revision
|
||
|
ranges (<userinput>revision_no</userinput> must be an integer).
|
||
|
</para>
|
||
|
</warning>
|
||
|
</refsect1>
|
||
|
|
||
|
<refsect1 role="parameters">
|
||
|
&reftitle.parameters;
|
||
|
<para>
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><parameter>repos_url</parameter></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Repository URL of the item to retrieve log history from.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><parameter>revision_no</parameter></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Revision number of the log to retrieve. Use
|
||
|
<constant>SVN_REVISON_HEAD</constant> to retrieve the log for
|
||
|
the most recent revision.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
</para>
|
||
|
|
||
|
</refsect1>
|
||
|
<refsect1 role="returnvalues">
|
||
|
&reftitle.returnvalues;
|
||
|
<para>
|
||
|
On success, this function returns an array file listing in the format
|
||
|
of:
|
||
|
<screen>
|
||
|
<![CDATA[
|
||
|
[0] => Array, ordered most recent (highest) revision first
|
||
|
(
|
||
|
[rev] => integer revision number
|
||
|
[author] => string author name
|
||
|
[msg] => string log message
|
||
|
[date] => string date formatted per ISO 8601, i.e. date('c')
|
||
|
[paths] => Array, describing changed files
|
||
|
(
|
||
|
[0] => Array
|
||
|
(
|
||
|
[action] => string letter signifying change
|
||
|
[path] => absolute repository path of changed file
|
||
|
)
|
||
|
[1] => ...
|
||
|
)
|
||
|
)
|
||
|
[1] => ...
|
||
|
]]>
|
||
|
</screen>
|
||
|
</para>
|
||
|
<note>
|
||
|
<para>
|
||
|
The output will always be a numerically indexed array of arrays,
|
||
|
even when there are none or only one log message(s).
|
||
|
</para>
|
||
|
</note>
|
||
|
<para>
|
||
|
The value of <varname>action</varname> is a subset of the
|
||
|
<ulink url="&url.svn.manual.status;">status output
|
||
|
in the first column</ulink>, where possible values are:
|
||
|
</para>
|
||
|
<table>
|
||
|
<title>Actions</title>
|
||
|
<tgroup cols="2">
|
||
|
<thead>
|
||
|
<row>
|
||
|
<entry>Letter</entry>
|
||
|
<entry>Description</entry>
|
||
|
</row>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry>M</entry>
|
||
|
<entry>Item/props was modified</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry>A</entry>
|
||
|
<entry>Item was added</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry>D</entry>
|
||
|
<entry>Item was deleted</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry>R</entry>
|
||
|
<entry>Item was replaced</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</table>
|
||
|
<para>
|
||
|
If no changes were made to the item, an empty array is returned.
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
|
||
|
<refsect1 role="notes">
|
||
|
&reftitle.notes;
|
||
|
&warn.experimental.func;
|
||
|
</refsect1>
|
||
|
|
||
|
<!-- Use when ERRORS exist
|
||
|
<refsect1 role="errors">
|
||
|
&reftitle.errors;
|
||
|
<para>
|
||
|
When does this function throw E_* level errors, or exceptions?
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
-->
|
||
|
|
||
|
<!-- Use when a CHANGELOG exists
|
||
|
<refsect1 role="changelog">
|
||
|
&reftitle.changelog;
|
||
|
<para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="2">
|
||
|
<thead>
|
||
|
<row>
|
||
|
<entry>&Version;</entry>
|
||
|
<entry>&Description;</entry>
|
||
|
</row>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry>Enter the PHP version of change here</entry>
|
||
|
<entry>Description of change</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
-->
|
||
|
|
||
|
<refsect1 role="examples">
|
||
|
&reftitle.examples;
|
||
|
<para>
|
||
|
<example>
|
||
|
<title><function>svn_log</function> example</title>
|
||
|
<programlisting role="php">
|
||
|
<![CDATA[
|
||
|
<?php
|
||
|
print_r( svn_log('http://www.example.com/', 23) );
|
||
|
?>
|
||
|
]]>
|
||
|
</programlisting>
|
||
|
&example.outputs.similar;
|
||
|
<screen>
|
||
|
<![CDATA[
|
||
|
Array
|
||
|
(
|
||
|
[0] => Array
|
||
|
(
|
||
|
[rev] => 23
|
||
|
[author] => 'joe'
|
||
|
[msg] => 'Add cheese and salami to our sandwich.'
|
||
|
[date] => '2007-04-06T16:00:27-04:00'
|
||
|
[paths] => Array
|
||
|
(
|
||
|
[0] => Array
|
||
|
(
|
||
|
[action] => 'M'
|
||
|
[path] => '/sandwich.txt'
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
]]>
|
||
|
</screen>
|
||
|
</example>
|
||
|
</para>
|
||
|
<para>
|
||
|
<example>
|
||
|
<title>Simulating <userinput>--limit</userinput> with <userinput>svn</userinput> and <function>svn_log</function></title>
|
||
|
<para>
|
||
|
This sample function simulates the <userinput>--limit</userinput> switch
|
||
|
by using the SVN executable to return a list of revisions, which
|
||
|
are then losslessly accessed using <function>svn_log</function>.
|
||
|
</para>
|
||
|
<note>
|
||
|
<para>
|
||
|
This function will perform a total of <parameter>limit</parameter> + 1
|
||
|
requests: the first request to pull the required revisions, and
|
||
|
each one after to retrieve the log item for that request.
|
||
|
</para>
|
||
|
</note>
|
||
|
<programlisting role="php">
|
||
|
<![CDATA[
|
||
|
<?php
|
||
|
/**
|
||
|
* Retrieves the last $limit log entries.
|
||
|
* @param $repos_url Repository URL of item to get logs for
|
||
|
* @param $limit Integer limit of items
|
||
|
*/
|
||
|
function svn_log_limit($repos_url, $limit) {
|
||
|
$limit = (int) $limit;
|
||
|
if ($limit <= 0) return array();
|
||
|
// -q flag used to prevent server from sending log messages
|
||
|
$output = shell_exec("svn log -q --limit $limit $repos_url");
|
||
|
preg_match_all('/^r(\d+) /m', $output, $matches);
|
||
|
$ret = array();
|
||
|
foreach ($matches[1] as $rev) {
|
||
|
$log = svn_log($repos_url, (int) $rev);
|
||
|
$ret[] = $log[0]; // log is only one item long
|
||
|
}
|
||
|
return $ret;
|
||
|
}
|
||
|
?>
|
||
|
]]>
|
||
|
</programlisting>
|
||
|
</example>
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
|
||
|
<refsect1 role="seealso">
|
||
|
&reftitle.seealso;
|
||
|
<para>
|
||
|
<simplelist>
|
||
|
<member>
|
||
|
<ulink url="&url.svn.manual.log;">
|
||
|
SVN documentation on svn log
|
||
|
</ulink>
|
||
|
</member>
|
||
|
</simplelist>
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
|
||
|
</refentry>
|
||
|
|
||
|
<!-- Keep this comment at the end of the file
|
||
|
Local variables:
|
||
|
mode: sgml
|
||
|
sgml-omittag:t
|
||
|
sgml-shorttag:t
|
||
|
sgml-minimize-attributes:nil
|
||
|
sgml-always-quote-attributes:t
|
||
|
sgml-indent-step:1
|
||
|
sgml-indent-data:t
|
||
|
indent-tabs-mode:nil
|
||
|
sgml-parent-document:nil
|
||
|
sgml-default-dtd-file:"../../../../manual.ced"
|
||
|
sgml-exposed-tags:nil
|
||
|
sgml-local-catalogs:nil
|
||
|
sgml-local-ecat-files:nil
|
||
|
End:
|
||
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
|
vim: et tw=78 syn=sgml
|
||
|
vi: ts=1 sw=1
|
||
|
-->
|