Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2011 JFrog Ltd.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *  http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package org.jfrog.hudson.release.scm.git;
 
 
Git scm coordinator. Interacts with the GitManager to fulfill the release process.

Author(s):
Yossi Shaul
 
 public class GitCoordinator extends AbstractScmCoordinator {
     private static Logger debuggingLogger = Logger.getLogger(GitCoordinator.class.getName());
 
     private final ReleaseAction releaseAction;
     private GitManager scmManager;
     private String releaseBranch;
     private String checkoutBranch;
     // the commit hash of the initial checkout
     private String baseCommitIsh;
 
     private State state = new State();
 
     private static class State {
         String currentWorkingBranch;
         boolean releaseBranchCreated;
         boolean releaseBranchPushed;
         boolean tagCreated;
         boolean tagPushed;
     }
 
     public GitCoordinator(AbstractBuild buildBuildListener listenerReleaseAction releaseAction) {
         super(buildlistener);
         this. = releaseAction;
     }
 
     public void prepare() throws IOExceptionInterruptedException {
 
         // find the current local built branch
         BuildData buildData = .getAction(BuildData.class);
         Revision lastRevision = buildData.getLastBuiltRevision();
         Branch branch = lastRevision.getBranches().iterator().next();
          = StringUtils.removeStart(branch.getName(), "origin/");
 
          = new GitManager();
 
     }
 
     public void beforeReleaseVersionChange() throws IOExceptionInterruptedException {
         if (.isCreateReleaseBranch()) {
             // create a new branch for the release and start it
             .checkoutBranch(true);
             . = ;
             . = true;
         } else {
             // make sure we are on the checkout branch
             .checkoutBranch(false);
             . = ;
         }
     }
 
         if () {
             // commit local changes
             log(String.format("Committing release version on branch '%s'".));
         }
 
         if (.isCreateVcsTag()) {
             // create tag
            . = true;
        }
        if () {
            // push the current branch
            . = true;
        }
        if (.isCreateVcsTag()) {
            // push the tag
            . = true;
        }
    }
        if (.isCreateReleaseBranch()) {
            // done working on the release branch, checkout back to master
            .checkoutBranch(false);
            . = ;
        }
    }
    @Override
    public void afterDevelopmentVersionChange(boolean modifiedthrows IOExceptionInterruptedException {
        super.afterDevelopmentVersionChange(modified);
        if (modified) {
            log(String.format("Committing next development version on branch '%s'".));
        }
    }
    public void buildCompleted() throws IOExceptionInterruptedException {
        if (.getResult().isBetterOrEqualTo(.)) {
            // pull before attempting to push changes?
            //scmManager.pull(scmManager.getRemoteUrl(), checkoutBranch);
            if () {
                .push(.getRemoteUrl(), .);
            }
        } else {
            // go back to the original checkout branch (required to delete the release branch and reset the working copy)
            .checkoutBranch(false);
            . = ;
            if (.) {
                safeDeleteBranch();
            }
            if (.) {
                safeDeleteRemoteBranch(.getRemoteUrl(), );
            }
            if (.) {
                safeDeleteTag(.getTagUrl());
            }
            if (.) {
                safeDeleteRemoteTag(.getRemoteUrl(), .getTagUrl());
            }
            // reset changes done on the original checkout branch (next dev version)
            safeRevertWorkingCopy();
        }
    }
    private void safeDeleteBranch(String branch) {
        try {
            .deleteLocalBranch(branch);
        } catch (Exception e) {
            .log(."Failed to delete release branch: "e);
            log("Failed to delete release branch: " + e.getLocalizedMessage());
        }
    }
    private void safeDeleteRemoteBranch(String remoteRepositoryString branch) {
        try {
            .deleteRemoteBranch(remoteRepositorybranch);
        } catch (Exception e) {
            .log(."Failed to delete remote release branch: "e);
            log("Failed to delete remote release branch: " + e.getLocalizedMessage());
        }
    }
    private void safeDeleteTag(String tag) {
        try {
            .deleteLocalTag(tag);
        } catch (Exception e) {
            .log(."Failed to delete tag: "e);
            log("Failed to delete tag: " + e.getLocalizedMessage());
        }
    }
    private void safeDeleteRemoteTag(String remoteRepositoryString tag) {
        try {
            .deleteRemoteTag(remoteRepositorytag);
        } catch (Exception e) {
            .log(."Failed to delete remote tag: "e);
            log("Failed to delete remote tag: " + e.getLocalizedMessage());
        }
    }
    private void safeRevertWorkingCopy() {
        try {
        } catch (Exception e) {
            .log(."Failed to revert working copy: "e);
            log("Failed to revert working copy: " + e.getLocalizedMessage());
        }
    }
    public String getRemoteUrlForPom() {
        return null;
    }
New to GrepCode? Check out our FAQ X