Ejemplo n.º 1
0
 /**
  * This method will simply delete the remote branch specified in $branchObject
  * 
  * @param Sadekbaroudi\Gitorade\Branches\BranchRemote $branchObject object representing branch to delete
  */
 public function remoteDelete($branchObject)
 {
     $this->getGit()->push($branchObject->getAlias(), ":" . $branchObject->getBranch());
 }
Ejemplo n.º 2
0
 /**
  * This method will merge two branches and push to your remote fork, defined in your GitConfiguration
  * config file
  *
  * @param Sadekbaroudi\Gitorade\Branches\BranchMerge $branchMerge BranchMerge object representing the from and to branches
  * @param boolean submit the merge pull request when done merging
  * @throws GitException
  */
 public function merge(BranchMerge $branchMerge)
 {
     $this->validateForMerge($branchMerge);
     // Checkout the new branch based on the BranchMerge object
     $localBranch = new BranchLocal($branchMerge->getMergeName());
     $this->checkoutNewBranch($branchMerge->getBranchTo(), $localBranch);
     try {
         echo "merging " . $branchMerge->getBranchFrom() . " to " . $branchMerge->getBranchTo() . PHP_EOL;
         $this->getGit()->merge((string) $branchMerge->getBranchFrom());
     } catch (GitException $e) {
         $this->getOsm()->undoAll();
         throw new GitException("Could not merge " . $branchMerge->getBranchFrom() . " to " . $branchMerge->getBranchTo() . ". There may have been conflicts. Please verify.");
     }
     // TODO: log merge success
     $logMe = "Merged " . $branchMerge->getBranchFrom() . " to " . $branchMerge->getBranchTo() . PHP_EOL;
     // Begin with pushing merged branch to remote
     $remoteBranch = new BranchRemote("remotes/" . $this->getGitCliConfig()->getConfig('fork_alias') . "/" . $branchMerge->getMergeName());
     $remoteBranch->setMergeName($branchMerge->getBranchTo()->getBranch());
     $localBranch->setRemote($remoteBranch);
     try {
         echo "Pushing to {$localBranch}" . PHP_EOL;
         $this->push($localBranch);
     } catch (GitException $e) {
         $this->getOsm()->undoAll();
         throw $e;
     }
     $this->getOsm()->undoAll();
     // Delete this line after testing
     //return $remoteBranch;
     $returnArray = array('remoteBranch' => $remoteBranch);
     // Begin with pull request preparation
     // Set pull request data on remoteBranch
     if ($branchMerge->getBranchTo()->getType() == 'remote') {
         $returnArray['pullRequest'] = new BranchPullRequest(new BranchGithub($this->getGitCliConfig()->getConfig('fork_alias'), $branchMerge->getBranchFrom()->getAlias(), $branchMerge->getBranchFrom()->getBranch()), new BranchGithub($this->getUserFromRepoString($this->getGitCliConfig()->getConfig('repository')), $this->getRepoFromRepoString($this->getGitCliConfig()->getConfig('repository')), $branchMerge->getBranchTo()->getBranch()), "Merge " . $branchMerge->getBranchFrom()->getBranch() . " to " . $branchMerge->getBranchTo()->getBranch(), "Pushed by Gitorade");
     } else {
         // We don't submit a pull request against a local branch
         $logMe = "Can't prepare pull request since branchFrom and/or branchTo have an empty alias";
         echo $logMe . PHP_EOL;
         //throw new GitException("branchTo or branchFrom have empty alias");
     }
     return $returnArray;
 }