private MergeResult merge(Git git, String label) { try { MergeCommand merge = git.merge(); merge.include(git.getRepository().findRef("origin/" + label)); MergeResult result = merge.call(); if (!result.getMergeStatus().isSuccessful()) { this.logger.warn("Merged from remote " + label + " with result " + result.getMergeStatus()); } return result; } catch (Exception ex) { String message = "Could not merge remote for " + label + " remote: " + git .getRepository().getConfig().getString("remote", "origin", "url"); warn(message, ex); return null; } }
/** {@inheritDoc} */ @SuppressWarnings("nls") @Override public String toString() { StringBuilder sb = new StringBuilder(); if (fetchResult != null) sb.append(fetchResult.toString()); else sb.append("No fetch result"); sb.append("\n"); if (mergeResult != null) sb.append(mergeResult.toString()); else if (rebaseResult != null) sb.append(rebaseResult.toString()); else sb.append("No update result"); return sb.toString(); } }
call(); System.out.println("Merge-Results for id: " + mergeBase + ": " + merge); for (Map.Entry<String,int[][]> entry : merge.getConflicts().entrySet()) { System.out.println("Key: " + entry.getKey()); for(int[] arr : entry.getValue()) {
public static ArrayMemory valueOf(MergeResult call) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("base").assign(valueOf(call.getBase())); memory.refOfIndex("newHead").assign(valueOf(call.getNewHead())); memory.refOfIndex("status").assign(call.getMergeStatus().name()); memory.refOfIndex("success").assign(call.getMergeStatus().isSuccessful()); memory.refOfIndex("checkoutConflicts").assign(ArrayMemory.ofStringCollection(call.getCheckoutConflicts())); return memory; }
result = mergeCmd.call(); } catch (CheckoutConflictException e) { result = new MergeResult(e.getConflictingPaths()); // CHECKOUT_CONFLICT switch (result.getMergeStatus()) { case ALREADY_UP_TO_DATE: if (squash) ObjectId oldHeadId = oldHead.getObjectId(); outw.println(MessageFormat.format(CLIText.get().updating, oldHeadId .abbreviate(7).name(), result.getNewHead().abbreviate(7) .name())); outw.println(result.getMergeStatus().toString()); break; case CHECKOUT_CONFLICT: outw.println(CLIText.get().mergeCheckoutConflict); for (String collidingPath : result.getCheckoutConflicts()) outw.println("\t" + collidingPath); //$NON-NLS-1$ outw.println(CLIText.get().mergeCheckoutFailed); break; case CONFLICTING: for (String collidingPath : result.getConflicts().keySet()) outw.println(MessageFormat.format(CLIText.get().mergeConflict, collidingPath)); case FAILED: for (Map.Entry<String, MergeFailureReason> entry : result .getFailingPaths().entrySet()) switch (entry.getValue()) {
merge.include(newParents.get(i)); MergeResult mergeResult = merge.call(); if (mergeResult.getMergeStatus().isSuccessful()) { CommitCommand commit = git.commit(); commit.setAuthor(commitToPick.getAuthorIdent()); } else { if (operation == Operation.BEGIN && mergeResult .getMergeStatus() == MergeResult.MergeStatus.FAILED) return abort(RebaseResult .failed(mergeResult.getFailingPaths())); return stop(commitToPick, Status.STOPPED);
requireCleanWorkingTree(); MergeResult developResult = new MergeResult(null, null, new ObjectId[]{null, null}, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE, null); MergeResult masterResult = new MergeResult(null, null, new ObjectId[]{null, null}, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE, null); try if(masterResult.getMergeStatus().isSuccessful()) if (!masterResult.getMergeStatus().isSuccessful()) if (masterResult.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)) if(developResult.getMergeStatus().isSuccessful()) if (!developResult.getMergeStatus().isSuccessful()) if (developResult.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)) if (!noTag && masterResult.getMergeStatus().isSuccessful() && developResult.getMergeStatus().isSuccessful()) if (push && masterResult.getMergeStatus().isSuccessful() && developResult.getMergeStatus().isSuccessful()) if (!keepBranch && masterResult.getMergeStatus().isSuccessful() && developResult.getMergeStatus().isSuccessful())
false)); Text resultText = new Text(composite, SWT.READ_ONLY); resultText.setText(mergeResult.getMergeStatus().toString()); resultText.setSelection(resultText.getCaretPosition()); resultText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); if (mergeResult.getMergeStatus() == MergeStatus.FAILED) { resultText.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_RED)); Text pathsText = new Text(composite, SWT.READ_ONLY); pathsText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); Set<Entry<String, MergeFailureReason>> failedPaths = mergeResult.getFailingPaths().entrySet(); int n = 0; for (Map.Entry<String, MergeFailureReason> e : failedPaths) { if (mergeResult.getMergeStatus() != MergeStatus.FAILED) { false)); Text newHeadText = new Text(composite, SWT.READ_ONLY); ObjectId newHead = mergeResult.getNewHead(); if (newHead != null) newHeadText.setText(getCommitMessage(newHead) + SPACE + abbreviate(mergeResult.getNewHead(), true)); newHeadText .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
Git git = ... // you get it through a CloneCommand, InitCommand // or through the file system CheckoutCommand coCmd = git.checkout(); // Commands are part of the api module, which include git-like calls coCmd.setName("master"); coCmd.setCreateBranch(false); // probably not needed, just to make sure coCmd.call(); // switch to "master" branch MergeCommand mgCmd = git.merge(); mgCmd.include("foo"); // "foo" is considered as a Ref to a branch MergeResult res = mgCmd.call(); // actually do the merge if (res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){ System.out.println(res.getConflicts().toString()); // inform the user he has to handle the conflicts }
protected MergeResult createEmptyMergeResult() { return new MergeResult(null, null, new ObjectId[]{null, null}, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE, null); }
/** * @param parentShell * @param repository * @param mergeResult * @return the created dialog */ public static Dialog getDialog(Shell parentShell, Repository repository, MergeResult mergeResult) { if(mergeResult.getMergeStatus() == MergeStatus.CHECKOUT_CONFLICT) return new CheckoutConflictDialog(parentShell, repository, mergeResult.getCheckoutConflicts()); else return new MergeResultDialog(parentShell, repository, mergeResult); }
if (mergeResult.getMergeStatus().equals(MergeStatus.CONFLICTING) || mergeResult.getMergeStatus().equals(MergeStatus.FAILED)) { VerigreenLogger.get().log( getClass().getName(), branchToUpdate)); reset(_repo.getRef(branchToUpdate).getName()); } else if (mergeResult.getMergeStatus().equals(MergeStatus.ALREADY_UP_TO_DATE) || mergeResult.getMergeStatus().equals(MergeStatus.FAST_FORWARD)) { VerigreenLogger.get().log( getClass().getName(), branchToUpdate)); ret = new Pair<>(true, ""); } else if (mergeResult.getMergeStatus().equals(MergeStatus.MERGED_NOT_COMMITTED)) { String autoMergeMessage = createMessageAutoCommit(mergeResult); String commitId = commit(commited_By_Collector, email_Address, autoMergeMessage ); adjustCommitId)); ret = new Pair<>(true, adjustCommitId); }else if (mergeResult.getMergeStatus().equals(MergeStatus.MERGED)) { VerigreenLogger.get().log( getClass().getName(), "Merge was made after diverted branch with auto commit"); ret = new Pair<>(true, ""); new RestClientImpl().post(CollectorApi.getPostVerigreenNeededRequest(mergeResult.getNewHead().getName().substring(0, 7)));
private Future<Void> update() { Future<Void> result = Future.future(); vertx.executeBlocking( future -> { PullResult call; try { call = git.pull().setRemote(remote).setRemoteBranchName(branch).call(); } catch (GitAPIException e) { future.fail(e); return; } if (call.isSuccessful()) { future.complete(); } else { if (call.getMergeResult() != null) { future.fail("Unable to merge repository - Conflicts: " + call.getMergeResult().getCheckoutConflicts()); } else { future.fail("Unable to rebase repository - Conflicts: " + call.getRebaseResult().getConflicts()); } } }, result.completer() ); return result; }
/** * Show dialog for failure result * * @param shell * @param commit * @param result */ public static void show(Shell shell, RevCommit commit, MergeResult result) { String message; Map<String, MergeFailureReason> reasons = result != null ? result .getFailingPaths() : null; if (reasons != null && !reasons.isEmpty()) message = MessageFormat.format(UIText.RevertFailureDialog_Message, commit.abbreviate(7).name()); else message = MessageFormat.format( UIText.RevertFailureDialog_MessageNoFiles, commit .abbreviate(7).name()); RevertFailureDialog dialog = new RevertFailureDialog(shell, message, reasons); dialog.setShellStyle(dialog.getShellStyle() | SWT.SHEET | SWT.RESIZE); dialog.open(); }
merge.include(newParents.get(i)); MergeResult mergeResult = merge.call(); if (mergeResult.getMergeStatus().isSuccessful()) { CommitCommand commit = git.commit(); commit.setAuthor(commitToPick.getAuthorIdent()); } else { if (operation == Operation.BEGIN && mergeResult .getMergeStatus() == MergeResult.MergeStatus.FAILED) return abort(RebaseResult .failed(mergeResult.getFailingPaths())); return stop(commitToPick, Status.STOPPED);
requireCleanWorkingTree(); MergeResult developResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE,null); MergeResult masterResult = new MergeResult(null,null,new ObjectId[] { null, null }, MergeResult.MergeStatus.ALREADY_UP_TO_DATE,MergeStrategy.RESOLVE,null); try if (!noTag && masterResult.getMergeStatus().isSuccessful()) if (push && masterResult.getMergeStatus().isSuccessful() && developResult.getMergeStatus().isSuccessful()) if (!keepBranch && masterResult.getMergeStatus().isSuccessful() && developResult.getMergeStatus().isSuccessful())
protected MergeResult createEmptyMergeResult() { return new MergeResult(null, null, new ObjectId[]{null, null}, MergeResult.MergeStatus.ALREADY_UP_TO_DATE, MergeStrategy.RESOLVE, null); }
private Future<Void> update() { Future<Void> result = Future.future(); vertx.executeBlocking( future -> { PullResult call; try { call = git.pull().setRemote(remote).setRemoteBranchName(branch).call(); } catch (GitAPIException e) { future.fail(e); return; } if (call.isSuccessful()) { future.complete(); } else { if (call.getMergeResult() != null) { future.fail("Unable to merge repository - Conflicts: " + call.getMergeResult().getCheckoutConflicts()); } else { future.fail("Unable to rebase repository - Conflicts: " + call.getRebaseResult().getConflicts()); } } }, result.completer() ); return result; }
String getMergedConfig(String branchName, RevCommit newCommit) throws GitAPIException, IOException { MergeResult result = null; try { checkout(branchName); result = git.merge().include(newCommit).call(); } catch (GitAPIException e) { LOGGER.info("[CONFIG_MERGE] Merging commit {} by user {} to branch {} at revision {} failed", newCommit.getId().getName(), newCommit.getAuthorIdent().getName(), branchName, getCurrentRevCommit().getId().getName()); throw e; } if (!result.getMergeStatus().isSuccessful()) { LOGGER.info("[CONFIG_MERGE] Merging commit {} by user {} to branch {} at revision {} failed as config file has changed", newCommit.getId().getName(), newCommit.getAuthorIdent().getName(), branchName, getCurrentRevCommit().getId().getName()); throw new ConfigFileHasChangedException(); } LOGGER.info("[CONFIG_MERGE] Successfully merged commit {} by user {} to branch {}. Merge commit revision is {}", newCommit.getId().getName(), newCommit.getAuthorIdent().getName(), branchName, getCurrentRevCommit().getId().getName()); return FileUtils.readFileToString(new File(workingDir, CRUISE_CONFIG_XML), UTF_8); }
merge.include(newParents.get(i)); MergeResult mergeResult = merge.call(); if (mergeResult.getMergeStatus().isSuccessful()) { CommitCommand commit = git.commit(); commit.setAuthor(commitToPick.getAuthorIdent()); } else { if (operation == Operation.BEGIN && mergeResult .getMergeStatus() == MergeResult.MergeStatus.FAILED) return abort(RebaseResult .failed(mergeResult.getFailingPaths())); return stop(commitToPick, Status.STOPPED);