Use git tag --contains REV for the IDF_Scm::inTags() implementation.
This works similar to git branch --contains REV; additionally give the revision id and not some possibly symbolic name to the inBranches() call when we determine the branches a commit is in.
This commit is contained in:
		| @@ -52,6 +52,7 @@ | |||||||
| - Disable browser autocomplete of password fields in the account settings (issue 616) | - Disable browser autocomplete of password fields in the account settings (issue 616) | ||||||
| - Improvements in the automatic linker parser (issue 618) | - Improvements in the automatic linker parser (issue 618) | ||||||
| - The `createIssue` API method did not check the API authentication (issue 619) | - The `createIssue` API method did not check the API authentication (issue 619) | ||||||
|  | - Print active git branch heads and tags in bold  | ||||||
|  |  | ||||||
| ## Documentation | ## Documentation | ||||||
|  |  | ||||||
|   | |||||||
| @@ -238,35 +238,29 @@ class IDF_Scm_Git extends IDF_Scm | |||||||
|      **/ |      **/ | ||||||
|     public function inTags($commit, $path) |     public function inTags($commit, $path) | ||||||
|     { |     { | ||||||
|         return $this->_inObject($commit, 'tag'); |         if (isset($this->cache['inTags'][$commit])) { | ||||||
|     } |             return $this->cache['inTags'][$commit]; | ||||||
|  |         } | ||||||
|  |  | ||||||
|     /** |         $cmd = Pluf::f('idf_exec_cmd_prefix', '') | ||||||
|      * Returns in which branches or tags a commit is. |             .sprintf('GIT_DIR=%s %s tag --contains %s', | ||||||
|      * |                      escapeshellarg($this->repo), | ||||||
|      * @param string Commit |                      Pluf::f('git_path', 'git'), | ||||||
|      * @param string Object's type: 'branch' or 'tag'. |                      escapeshellarg($commit)); | ||||||
|      * @return array |         self::exec('IDF_Scm_Git::inTags', $cmd, $out, $return); | ||||||
|      */ |         if (0 != $return) { | ||||||
|     private function _inObject($commit, $object) |             throw new IDF_Scm_Exception(sprintf($this->error_tpl, | ||||||
|     { |                                                 $cmd, $return, | ||||||
|         $object = strtolower($object); |                                                 implode("\n", $out))); | ||||||
|         if ('branch' === $object) { |  | ||||||
|             $objects = $this->getBranches(); |  | ||||||
|         } else if ('tag' === $object) { |  | ||||||
|             $objects = $this->getTags(); |  | ||||||
|         } else { |  | ||||||
|             throw new InvalidArgumentException(sprintf(__('Invalid value for the parameter %1$s: %2$s. Use %3$s.'), |  | ||||||
|                                                        '$object', |  | ||||||
|                                                        $object, |  | ||||||
|                                                        '\'branch\' or \'tag\'')); |  | ||||||
|         } |         } | ||||||
|         unset($object); |  | ||||||
|         $result = array(); |         $res = array(); | ||||||
|         if (array_key_exists($commit, $objects)) { |         foreach ($out as $line) { | ||||||
|             $result[] = $commit; |             $res[] = $line; | ||||||
|         } |         } | ||||||
|         return $result; |  | ||||||
|  |         $this->cache['inTags'][$commit] = $res; | ||||||
|  |         return $res; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -527,7 +521,7 @@ class IDF_Scm_Git extends IDF_Scm | |||||||
|             $out[0]->diff = ''; |             $out[0]->diff = ''; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $out[0]->branch = implode(', ', $this->inBranches($commit, null)); |         $out[0]->branch = implode(', ', $this->inBranches($out[0]->commit, null)); | ||||||
|         return $out[0]; |         return $out[0]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user