downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  

<svn_importsvn_ls>
Last updated: Thu, 26 Jun 2008

svn_log

(PECL svn:0.1-0.2)

svn_log — Returns the commit log messages of a repository URL

Description

array svn_log ( string $repos_url [, int $revision_no ] )

svn_log() returns the complete history of the item at the repository URL repos_url , or the history of a specific revision if revision_no is set. This function is equivalent to

svn log --verbose -r $revision_no $repos_url
.

Warning

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

--limit NUM
flag, nor does it support revision ranges (
revision_no
must be an integer).

Parameters

repos_url

Repository URL of the item to retrieve log history from.

revision_no

Revision number of the log to retrieve. Use SVN_REVISON_HEAD to retrieve the log for the most recent revision.

Return Values

On success, this function returns an array file listing in the format of:

[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] => ...

Note: The output will always be a numerically indexed array of arrays, even when there are none or only one log message(s).

The value of action is a subset of the » status output in the first column, where possible values are:

Actions
Letter Description
M Item/props was modified
A Item was added
D Item was deleted
R Item was replaced

If no changes were made to the item, an empty array is returned.

Notes

Warning

This function is EXPERIMENTAL. The behaviour of this function, its name, and surrounding documentation may change without notice in a future release of PHP. This function should be used at your own risk.

Examples

Example #1 svn_log() example

<?php
print_r
( svn_log('http://www.example.com/', 23) );
?>

The above example will output something similar to:

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'
                    )
            )
    )
)

Example #2 Simulating

--limit
with
svn
and svn_log()

This sample function simulates the

--limit
switch by using the SVN executable to return a list of revisions, which are then losslessly accessed using svn_log().

Note: This function will perform a total of limit + 1 requests: the first request to pull the required revisions, and each one after to retrieve the log item for that request.

<?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;
}
?>



add a noteadd a note User Contributed Notes
Returns the commit log messages of a repository URL
There are no user contributed notes for this page.




<svn_importsvn_ls>
Last updated: Thu, 26 Jun 2008
show source | credits | sitemap | contact | advertising | mirror sites
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: http://phpbuilder.com/
Last updated: Tue Nov 1 20:20:59 2005 EST
Columns / Articles | Tips / Quickies | News | News Linking and RSS Feeds | Shared Code Library
Mail Archives | Support / Discussion Forums | Get Started! Links | Contribute! | Docs