Overview

Packages

  • None
  • Vcs

Classes

  • Horde_Vcs
  • Horde_Vcs_Base
  • Horde_Vcs_Cvs
  • Horde_Vcs_Directory_Base
  • Horde_Vcs_Directory_Cvs
  • Horde_Vcs_Directory_Git
  • Horde_Vcs_Directory_Rcs
  • Horde_Vcs_Directory_Svn
  • Horde_Vcs_File_Base
  • Horde_Vcs_File_Cvs
  • Horde_Vcs_File_Git
  • Horde_Vcs_File_Rcs
  • Horde_Vcs_File_Svn
  • Horde_Vcs_Git
  • Horde_Vcs_Log_Base
  • Horde_Vcs_Log_Cvs
  • Horde_Vcs_Log_Git
  • Horde_Vcs_Log_Rcs
  • Horde_Vcs_Log_Svn
  • Horde_Vcs_Patchset
  • Horde_Vcs_Patchset_Base
  • Horde_Vcs_Patchset_Cvs
  • Horde_Vcs_Patchset_Git
  • Horde_Vcs_Patchset_Svn
  • Horde_Vcs_QuickLog_Base
  • Horde_Vcs_QuickLog_Cvs
  • Horde_Vcs_QuickLog_Git
  • Horde_Vcs_QuickLog_Rcs
  • Horde_Vcs_QuickLog_Svn
  • Horde_Vcs_Rcs
  • Horde_Vcs_Svn
  • Overview
  • Package
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * Git quick log class.
 4:  *
 5:  * Provides information for the most recent log entry of a file.
 6:  *
 7:  * Copyright 2011-2012 Horde LLC (http://www.horde.org/)
 8:  *
 9:  * See the enclosed file COPYING for license information (LGPL). If you
10:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
11:  *
12:  * @author  Chuck Hagenbuch <chuck@horde.org>
13:  * @author  Michael Slusarz <slusarz@horde.org>
14:  * @author  Jan Schneider <jan@horde.org>
15:  * @package Vcs
16:  */
17: class Horde_Vcs_QuickLog_Git extends Horde_Vcs_QuickLog_Base
18: {
19:     /**
20:      * Constructor.
21:      *
22:      * @param Horde_Vcs_Base $rep  A repository object.
23:      * @param string $rev          A log revision.
24:      * @param integer $date        A log timestamp.
25:      * @param string $author       A log author.
26:      * @param string $log          A log message.
27:      */
28:     public function __construct($rep, $rev, $date = null, $author = null,
29:                                 $log = null)
30:     {
31:         parent::__construct($rep, $rev);
32: 
33:         $cmd = 'log --no-color --pretty=format:"%H%x00%an <%ae>%x00%at%x00%s%x00%b%n%x00" --no-abbrev -n 1 ' . escapeshellarg($this->_rev);
34:         list($resource, $pipe) = $this->_rep->runCommand($cmd);
35: 
36:         $log = '';
37:         while (!feof($pipe) && ($line = fgets($pipe)) && $line != "\0\n") {
38:             $log .= $line;
39:         }
40: 
41:         $fields = explode("\0", substr($log, 0, -1));
42:         fclose($pipe);
43:         proc_close($resource);
44:         if ($this->_rev != $fields[0]) {
45:             throw new Horde_Vcs_Exception(
46:                 'Expected ' . $this->_rev . ', got ' . $fields[0]);
47:         }
48:         $this->_author = $fields[1];
49:         $this->_date = $fields[2];
50:         $this->_log = trim($fields[3] . "\n\n" . $fields[4]);
51:     }
52: }
53: 
API documentation generated by ApiGen