Exemple #1
0
 /**
  * Retrives all the branches from the current git repository,
  * and parses their commit messages.
  *
  * @return array a list of BranchInfo objects, one per branch.
  */
 public static function loadAll(ArcanistGitAPI $api)
 {
     $branches_raw = $api->getAllBranches();
     $branches = array();
     foreach ($branches_raw as $branch_raw) {
         $branch_info = new BranchInfo($branch_raw['name']);
         $branch_info->setSha1($branch_raw['sha1']);
         if ($branch_raw['current']) {
             $branch_info->setCurrent();
         }
         $branches[] = $branch_info;
     }
     $name_sha1_map = mpull($branches, 'getSha1', 'getName');
     $commits_list = $api->multigetCommitMessages(array_unique(array_values($name_sha1_map)), "%ct%n%an%n%s%n%b");
     foreach ($branches as $branch) {
         $sha1 = $name_sha1_map[$branch->getName()];
         $branch->setSha1($sha1);
         $branch->parseCommitMessage($commits_list[$sha1]);
     }
     $branches = msort($branches, 'getCommitTime');
     return $branches;
 }