public ObjectId mergeBase(ObjectId id1, ObjectId id2) { try { String result; try { result = launchCommand("merge-base", id1.name(), id2.name()); } catch (GitException ge) { ge.printStackTrace(); return null; } BufferedReader rdr = new BufferedReader(new StringReader(result)); String line; while ((line = rdr.readLine()) != null) { // Add the SHA1 return ObjectId.fromString(line); } } catch (Exception e) { throw new GitException("Error parsing merge base", e); } return null; }
@Override protected void perform(final TaskListener listener) throws Exception { final EnvVars environment = getRun().getEnvironment(listener); final FilePath workspace = new FilePath(new File(ws)); final GitClient git = Git.with(listener, environment) .in(workspace) .getClient(); for (Map.Entry<String, String> entry : tagSet.entrySet()) { try { String buildNum = "jenkins-" + getRun().getParent().getName().replace(" ", "_") + "-" + entry.getValue(); git.tag(entry.getValue(), "Jenkins Build #" + buildNum); for (Map.Entry<String, String> e : tagSet.entrySet()) GitTagAction.this.tags.get(e.getKey()).add(e.getValue()); getRun().save(); workerThread = null; } catch (GitException ex) { ex.printStackTrace(listener.error("Error tagging repo '%s' : %s", entry.getKey(), ex.getMessage())); // Failed. Try the next one listener.getLogger().println("Trying next branch"); } } } }
/** * Fetch information from a particular remote repository. * * @param git * @param listener * @param remoteRepository * @return true if fetch goes through, false otherwise. * @throws */ private boolean fetchFrom(IGitAPI git, TaskListener listener, RemoteConfig remoteRepository) { try { git.fetch(remoteRepository); return true; } catch (GitException ex) { ex.printStackTrace(listener.error( "Problem fetching from " + remoteRepository.getName() + " / " + remoteRepository.getName() + " - could be unavailable. Continuing anyway")); } return false; }
ex.printStackTrace(listener.error("Error cloning remote repo '" + rc.getName() + "'")); throw new AbortException("Error cloning remote repo '" + rc.getName() + "'"); ex.printStackTrace(listener.error("Error fetching remote repo '" + remoteRepository.getName() + "'")); throw new AbortException("Error fetching remote repo '" + remoteRepository.getName() + "'");
e.printStackTrace(listener.error("Failed to determine if we want to exclude " + r.getSha1String())); return false; // for historical reason this is not considered a fatal error.
ex.printStackTrace(listener.error( "Problem fetching submodules from a path relative to " + remoteRepository.getName()
ex.printStackTrace(listener.error( "Problem fetching submodules from a path relative to " + remoteRepository.getName()
break; } catch (GitException ex) { ex.printStackTrace(listener.error("Error cloning remote repo '%s' ", rc.getName()));
ge.printStackTrace(listener.error("Unable to retrieve changeset")); } finally { if (!executed) changelog.abort();
e.printStackTrace(listener.error("Failed to push tag " + tagName + " to " + targetRepo)); return false; e.printStackTrace(listener.error("Failed to push branch " + branchName + " to " + targetRepo)); return false; e.printStackTrace(listener.error("Failed to add note: \n" + noteMsg + "\n******")); return false;