/** * Create a commit from a simple class commit info of a changelog. * * @param stdClass Commit info * @param IDF_Project Current project * @return IDF_Commit */ public static function getOrAdd($change, $project) { $sql = new Pluf_SQL('project=%s AND scm_id=%s', array($project->id, $change->commit)); $r = Pluf::factory('IDF_Commit')->getList(array('filter' => $sql->gen())); if ($r->count() > 0) { return $r[0]; } if (!isset($change->full_message)) { $change->full_message = ''; } $scm = IDF_Scm::get($project); $commit = new IDF_Commit(); $commit->project = $project; $commit->scm_id = $change->commit; $commit->summary = self::toUTF8($change->title); $commit->fullmessage = self::toUTF8($change->full_message); $commit->author = $scm->findAuthor($change->author); $commit->origauthor = $change->author; $commit->creation_dtime = $change->date; $commit->create(); $commit->notify($project->getConf()); return $commit; }