92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| Tags and branches
 | |
| =================
 | |
| 
 | |
| Accessing tags and branches
 | |
| ---------------------------
 | |
| 
 | |
| With *gitlib*, you can access them via the *ReferenceBag* object. To get this
 | |
| object from a *Repository*, use the *getReferences* method:
 | |
| 
 | |
| .. code-block:: php
 | |
| 
 | |
|     $references = $repository->getReferences();
 | |
| 
 | |
| First, you can test existence of tags and branches like this:
 | |
| 
 | |
| .. code-block:: php
 | |
| 
 | |
|     if ($references->hasBranch('master') && $references->hasTag('0.1')) {
 | |
|         echo "Good start!";
 | |
|     }
 | |
| 
 | |
| If you want to access all branches or all tags:
 | |
| 
 | |
| .. code-block:: php
 | |
| 
 | |
|     $branches       = $references->getBranches();
 | |
|     $localBranches  = $references->getLocalBranches();
 | |
|     $remoteBranches = $references->getRemoteBranches();
 | |
|     $tags           = $references->getTags();
 | |
|     $all            = $references->getAll();
 | |
| 
 | |
| To get a given branch or tag, call *getBranch* or *getTag* on the
 | |
| *ReferenceBag*. Those methods return *Branch* and *Tag* objects:
 | |
| 
 | |
| .. code-block:: php
 | |
| 
 | |
|     $master  = $references->getBranch('master');
 | |
|     $feat123 = $references->getLocalBranch('feat123');
 | |
|     $feat456 = $references->getRemoteBranch('origin/feat456');
 | |
|     $v0_1    = $references->getTag('0.1');
 | |
| 
 | |
| If the reference cannot be resolved, a *ReferenceNotFoundException* will be
 | |
| thrown.
 | |
| 
 | |
| On each of those objects, you can access those informations:
 | |
| 
 | |
| .. code-block:: php
 | |
| 
 | |
|     // Get the associated commit
 | |
|     $commit = $master->getCommit();
 | |
| 
 | |
|     // Get the commit hash
 | |
|     $hash = $master->getCommitHash();
 | |
| 
 | |
|     // Get the last modification
 | |
|     $lastModification = $master->getLastModification();
 | |
| 
 | |
| Create and delete reference
 | |
| ---------------------------
 | |
| 
 | |
| You can create new tags and branches on repository, using helper methods
 | |
| on ReferenceBag object:
 | |
| 
 | |
| .. code-block:: php
 | |
| 
 | |
|     // create a branch
 | |
|     $references = $repository->getReferences();
 | |
|     $branch     = $references->createBranch('foobar', 'a8b7e4...'); // commit to reference
 | |
| 
 | |
|     // create a tag
 | |
|     $references = $repository->getReferences();
 | |
|     $tag        = $references->createTag('0.3', 'a8b7e4...'); // commit to reference
 | |
| 
 | |
|     // delete a branch or a tag
 | |
|     $branch->delete();
 | |
| 
 | |
| Resolution from a commit
 | |
| ------------------------
 | |
| 
 | |
| To resolve a branch or a commit from a commit, you can use the *resolveTags*
 | |
| and *resolveBranches* methods on it:
 | |
| 
 | |
| .. code-block:: php
 | |
| 
 | |
|     $branches = $references->resolveBranches($commit);
 | |
|     $tags     = $references->resolveTags($commit);
 | |
| 
 | |
|     // Resolve branches and tags
 | |
|     $all      = $references->resolve($commit);
 | |
| 
 | |
| You can pass a *Commit* object or a hash to the method, gitlib will handle it.
 | 
