use of org.eclipse.egit.ui.internal.push.PushMode in project egit by eclipse.
the class StagingView method commit.
private void commit(boolean pushUpstream) {
if (!isCommitWithoutFilesAllowed()) {
MessageDialog md = new MessageDialog(getSite().getShell(), UIText.StagingView_committingNotPossible, null, UIText.StagingView_noStagedFiles, MessageDialog.ERROR, new String[] { IDialogConstants.CLOSE_LABEL }, 0);
md.open();
return;
}
if (!commitMessageComponent.checkCommitInfo())
return;
if (!UIUtils.saveAllEditors(currentRepository, UIText.StagingView_cancelCommitAfterSaving))
return;
String commitMessage = commitMessageComponent.getCommitMessage();
CommitOperation commitOperation = null;
try {
commitOperation = new CommitOperation(currentRepository, commitMessageComponent.getAuthor(), commitMessageComponent.getCommitter(), commitMessage);
} catch (CoreException e) {
Activator.handleError(UIText.StagingView_commitFailed, e, true);
return;
}
if (amendPreviousCommitAction.isChecked())
commitOperation.setAmending(true);
final boolean gerritMode = addChangeIdAction.isChecked();
commitOperation.setComputeChangeId(gerritMode);
PushMode pushMode = null;
if (pushUpstream) {
pushMode = gerritMode ? PushMode.GERRIT : PushMode.UPSTREAM;
}
Job commitJob = new CommitJob(currentRepository, commitOperation).setOpenCommitEditor(openNewCommitsAction.isChecked()).setPushUpstream(pushMode);
// don't allow to do anything as long as commit is in progress
enableAllWidgets(false);
commitJob.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
asyncExec(() -> {
enableAllWidgets(true);
if (event.getResult().isOK()) {
commitMessageText.setText(EMPTY_STRING);
}
});
}
});
schedule(commitJob, true);
CommitMessageHistory.saveCommitHistory(commitMessage);
clearCommitMessageToggles();
}
use of org.eclipse.egit.ui.internal.push.PushMode in project egit by eclipse.
the class CommitUI method commit.
/**
* Performs a commit
*
* @return true if a commit operation was triggered
*/
public boolean commit() {
// ask the user if they want to save or abort
if (!UIUtils.saveAllEditors(repo))
return false;
BasicConfigurationDialog.show(new Repository[] { repo });
resetState();
final IProject[] projects = getProjectsOfRepositories();
try {
PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
buildIndexHeadDiffList(projects, monitor);
} catch (IOException e) {
throw new InvocationTargetException(e);
}
}
});
} catch (InvocationTargetException e) {
Activator.handleError(UIText.CommitAction_errorComputingDiffs, e.getCause(), true);
return false;
} catch (InterruptedException e) {
return false;
}
CommitHelper commitHelper = new CommitHelper(repo);
if (!commitHelper.canCommit()) {
MessageDialog.openError(shell, UIText.CommitAction_cannotCommit, commitHelper.getCannotCommitMessage());
return false;
}
boolean amendAllowed = commitHelper.amendAllowed();
if (files.isEmpty()) {
if (amendAllowed && commitHelper.getPreviousCommit() != null) {
boolean result = MessageDialog.openQuestion(shell, UIText.CommitAction_noFilesToCommit, UIText.CommitAction_amendCommit);
if (!result)
return false;
amending = true;
} else {
MessageDialog.openWarning(shell, UIText.CommitAction_noFilesToCommit, UIText.CommitAction_amendNotPossible);
return false;
}
}
CommitDialog commitDialog = new CommitDialog(shell);
commitDialog.setAmending(amending);
commitDialog.setAmendAllowed(amendAllowed);
commitDialog.setFiles(repo, files, indexDiff);
commitDialog.setPreselectedFiles(getSelectedFiles(repo, files, selectedResources));
commitDialog.setPreselectAll(preselectAll);
commitDialog.setAuthor(commitHelper.getAuthor());
commitDialog.setCommitter(commitHelper.getCommitter());
commitDialog.setAllowToChangeSelection(!commitHelper.isMergedResolved && !commitHelper.isCherryPickResolved);
commitDialog.setCommitMessage(commitHelper.getCommitMessage());
if (commitDialog.open() != IDialogConstants.OK_ID)
return false;
final CommitOperation commitOperation;
try {
commitOperation = new CommitOperation(repo, commitDialog.getSelectedFiles(), notTracked, commitDialog.getAuthor(), commitDialog.getCommitter(), commitDialog.getCommitMessage());
} catch (CoreException e1) {
Activator.handleError(UIText.CommitUI_commitFailed, e1, true);
return false;
}
if (commitDialog.isAmending())
commitOperation.setAmending(true);
final boolean gerritMode = commitDialog.getCreateChangeId();
PushMode pushMode = null;
if (commitDialog.isPushRequested()) {
pushMode = gerritMode ? PushMode.GERRIT : PushMode.UPSTREAM;
}
commitOperation.setComputeChangeId(gerritMode);
commitOperation.setCommitAll(commitHelper.isMergedResolved);
if (commitHelper.isMergedResolved)
commitOperation.setRepository(repo);
Job commitJob = new CommitJob(repo, commitOperation).setPushUpstream(pushMode);
commitJob.schedule();
return true;
}
Aggregations