| }␊ | 
| ␊ | 
| /**␊ | 
| * @see IDF_Scm::getChanges()␊ | 
| */␊ | 
| public function getChanges($commit)␊ | 
| {␊ | 
| $revs = $this->_resolveSelector($commit);␊ | 
| if (count($revs) == 0)␊ | 
| return null;␊ | 
| ␊ | 
| $revision = $revs[0];␊ | 
| $out = $this->stdio->exec(array('get_revision', $revision));␊ | 
| $stanzas = IDF_Scm_Monotone_BasicIO::parse($out);␊ | 
| ␊ | 
| $return = (object) array(␊ | 
| 'additions'  => array(),␊ | 
| 'deletions'  => array(),␊ | 
| 'renames'    => array(),␊ | 
| 'patches'    => array(),␊ | 
| 'properties' => array(),␊ | 
| );␊ | 
| ␊ | 
| foreach ($stanzas as $stanza) {␊ | 
| if ($stanza[0]['key'] == 'format_version' ||␊ | 
| $stanza[0]['key'] == 'old_revision' ||␊ | 
| $stanza[0]['key'] == 'new_manifest')␊ | 
| continue;␊ | 
| ␊ | 
| if ($stanza[0]['key'] == 'add_file' ||␊ | 
| $stanza[0]['key'] == 'add_dir') {␊ | 
| $return->additions[] = $stanza[0]['values'][0];␊ | 
| continue;␊ | 
| }␊ | 
| ␊ | 
| if ($stanza[0]['key'] == 'delete') {␊ | 
| $return->deletions[] = $stanza[0]['values'][0];␊ | 
| continue;␊ | 
| }␊ | 
| ␊ | 
| if ($stanza[0]['key'] == 'rename') {␊ | 
| $return->renames[$stanza[0]['values'][0]] =␊ | 
| $stanza[1]['values'][0];␊ | 
| continue;␊ | 
| }␊ | 
| ␊ | 
| if ($stanza[0]['key'] == 'patch') {␊ | 
| $return->patches[] = $stanza[0]['values'][0];␊ | 
| continue;␊ | 
| }␊ | 
| ␊ | 
| if ($stanza[0]['key'] == 'clear' ||␊ | 
| $stanza[0]['key'] == 'set') {␊ | 
| ␊ | 
| $filename = $stanza[0]['values'][0];␊ | 
| if (!array_key_exists($filename, $return->properties)) {␊ | 
| $return->properties[$filename] = array();␊ | 
| }␊ | 
| $key = $stanza[1]['values'][0];␊ | 
| $value = null;␊ | 
| if (isset($stanza[2])) {␊ | 
| $value = $stanza[2]['values'][0];␊ | 
| }␊ | 
| $return->properties[$filename][$key] = $value;␊ | 
| continue;␊ | 
| }␊ | 
| }␊ | 
| ␊ | 
| return $return;␊ | 
| }␊ | 
| ␊ | 
| /**␊ | 
| * @see IDF_Scm::getCommit()␊ | 
| */␊ | 
| public function getCommit($commit, $getdiff=false)␊ | 
|  | 
| $res['branch'] = implode(', ', $certs['branch']);␊ | 
| $res['commit'] = $revs[0];␊ | 
| ␊ | 
| $res['changes'] = ($getdiff) ? $this->_getDiff($revs[0]) : '';␊ | 
| $res['diff'] = ($getdiff) ? $this->_getDiff($revs[0]) : '';␊ | 
| ␊ | 
| return (object) $res;␊ | 
| }␊ |