use of org.eclipse.jgit.transport.RemoteConfig in project egit by eclipse.
the class ConfigurePushAfterCloneTask method execute.
/**
* @param repository
* @param monitor
* @throws CoreException
*/
@Override
public void execute(Repository repository, IProgressMonitor monitor) throws CoreException {
try {
RemoteConfig configToUse = new RemoteConfig(repository.getConfig(), remoteName);
if (pushRefSpec != null)
configToUse.addPushRefSpec(new RefSpec(pushRefSpec));
if (pushURI != null)
configToUse.addPushURI(pushURI);
configToUse.update(repository.getConfig());
repository.getConfig().save();
} catch (Exception e) {
throw new CoreException(Activator.error(e.getMessage(), e));
}
}
use of org.eclipse.jgit.transport.RemoteConfig in project egit by eclipse.
the class FetchGerritChangePage method createControl.
@Override
public void createControl(Composite parent) {
parent.addDisposeListener(event -> {
for (ChangeList l : changeRefs.values()) {
l.cancel(ChangeList.CancelMode.INTERRUPT);
}
changeRefs.clear();
});
Clipboard clipboard = new Clipboard(parent.getDisplay());
String clipText = (String) clipboard.getContents(TextTransfer.getInstance());
clipboard.dispose();
String defaultUri = null;
String defaultCommand = null;
String defaultChange = null;
Change candidateChange = null;
if (clipText != null) {
Matcher matcher = GERRIT_FETCH_PATTERN.matcher(clipText);
if (matcher.matches()) {
defaultUri = matcher.group(1);
defaultChange = matcher.group(2);
defaultCommand = matcher.group(3);
} else {
candidateChange = determineChangeFromString(clipText.trim());
}
}
Composite main = new Composite(parent, SWT.NONE);
main.setLayout(new GridLayout(2, false));
GridDataFactory.fillDefaults().grab(true, true).applyTo(main);
new Label(main, SWT.NONE).setText(UIText.FetchGerritChangePage_UriLabel);
uriCombo = new Combo(main, SWT.DROP_DOWN);
GridDataFactory.fillDefaults().grab(true, false).applyTo(uriCombo);
uriCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String uriText = uriCombo.getText();
ChangeList list = changeRefs.get(uriText);
if (list != null) {
list.cancel(ChangeList.CancelMode.INTERRUPT);
}
list = new ChangeList(repository, uriText);
changeRefs.put(uriText, list);
preFetch(list);
}
});
new Label(main, SWT.NONE).setText(UIText.FetchGerritChangePage_ChangeLabel);
refText = new Text(main, SWT.SINGLE | SWT.BORDER);
GridDataFactory.fillDefaults().grab(true, false).applyTo(refText);
contentProposer = addRefContentProposalToText(refText);
refText.addVerifyListener(event -> {
event.text = event.text.replaceAll("\\v", // $NON-NLS-1$ //$NON-NLS-2$
" ").trim();
});
final Group checkoutGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
checkoutGroup.setLayout(new GridLayout(3, false));
GridDataFactory.fillDefaults().span(3, 1).grab(true, false).applyTo(checkoutGroup);
checkoutGroup.setText(UIText.FetchGerritChangePage_AfterFetchGroup);
// radio: create local branch
createBranch = new Button(checkoutGroup, SWT.RADIO);
GridDataFactory.fillDefaults().span(1, 1).applyTo(createBranch);
createBranch.setText(UIText.FetchGerritChangePage_LocalBranchRadio);
createBranch.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
checkPage();
}
});
branchCheckoutButton = new Button(checkoutGroup, SWT.CHECK);
GridDataFactory.fillDefaults().span(2, 1).align(SWT.END, SWT.CENTER).applyTo(branchCheckoutButton);
branchCheckoutButton.setFont(JFaceResources.getDialogFont());
branchCheckoutButton.setText(UIText.FetchGerritChangePage_LocalBranchCheckout);
branchCheckoutButton.setSelection(true);
branchTextlabel = new Label(checkoutGroup, SWT.NONE);
GridDataFactory.defaultsFor(branchTextlabel).exclude(false).applyTo(branchTextlabel);
branchTextlabel.setText(UIText.FetchGerritChangePage_BranchNameText);
branchText = new Text(checkoutGroup, SWT.SINGLE | SWT.BORDER);
GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.CENTER).applyTo(branchText);
branchText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
branchTextEdited = true;
}
});
branchText.addVerifyListener(event -> {
if (event.text.isEmpty()) {
branchTextEdited = false;
}
});
branchText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
checkPage();
}
});
BranchNameNormalizer normalizer = new BranchNameNormalizer(branchText);
normalizer.setVisible(false);
branchEditButton = new Button(checkoutGroup, SWT.PUSH);
branchEditButton.setFont(JFaceResources.getDialogFont());
branchEditButton.setText(UIText.FetchGerritChangePage_BranchEditButton);
branchEditButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent selectionEvent) {
String txt = branchText.getText();
// $NON-NLS-1$
String refToMark = "".equals(txt) ? null : Constants.R_HEADS + txt;
AbstractBranchSelectionDialog dlg = new BranchEditDialog(checkoutGroup.getShell(), repository, refToMark);
if (dlg.open() == Window.OK) {
branchText.setText(Repository.shortenRefName(dlg.getRefName()));
branchTextEdited = true;
} else {
// force calling branchText's modify listeners
branchText.setText(branchText.getText());
}
}
});
GridDataFactory.defaultsFor(branchEditButton).exclude(false).applyTo(branchEditButton);
// radio: create tag
createTag = new Button(checkoutGroup, SWT.RADIO);
GridDataFactory.fillDefaults().span(3, 1).applyTo(createTag);
createTag.setText(UIText.FetchGerritChangePage_TagRadio);
createTag.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
checkPage();
}
});
tagTextlabel = new Label(checkoutGroup, SWT.NONE);
GridDataFactory.defaultsFor(tagTextlabel).exclude(true).applyTo(tagTextlabel);
tagTextlabel.setText(UIText.FetchGerritChangePage_TagNameText);
tagText = new Text(checkoutGroup, SWT.SINGLE | SWT.BORDER);
GridDataFactory.fillDefaults().exclude(true).grab(true, false).applyTo(tagText);
tagText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
tagTextEdited = true;
}
});
tagText.addVerifyListener(event -> {
if (event.text.isEmpty()) {
tagTextEdited = false;
}
});
tagText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
checkPage();
}
});
BranchNameNormalizer tagNormalizer = new BranchNameNormalizer(tagText, UIText.BranchNameNormalizer_TooltipForTag);
tagNormalizer.setVisible(false);
// radio: checkout FETCH_HEAD
checkoutFetchHead = new Button(checkoutGroup, SWT.RADIO);
GridDataFactory.fillDefaults().span(3, 1).applyTo(checkoutFetchHead);
checkoutFetchHead.setText(UIText.FetchGerritChangePage_CheckoutRadio);
checkoutFetchHead.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
checkPage();
}
});
// radio: don't checkout
updateFetchHead = new Button(checkoutGroup, SWT.RADIO);
GridDataFactory.fillDefaults().span(3, 1).applyTo(updateFetchHead);
updateFetchHead.setText(UIText.FetchGerritChangePage_UpdateRadio);
updateFetchHead.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
checkPage();
}
});
if ("checkout".equals(defaultCommand)) {
// $NON-NLS-1$
checkoutFetchHead.setSelection(true);
} else {
createBranch.setSelection(true);
}
warningAdditionalRefNotActive = new Composite(main, SWT.NONE);
GridDataFactory.fillDefaults().span(2, 1).grab(true, false).exclude(true).applyTo(warningAdditionalRefNotActive);
warningAdditionalRefNotActive.setLayout(new GridLayout(2, false));
warningAdditionalRefNotActive.setVisible(false);
activateAdditionalRefs = new Button(warningAdditionalRefNotActive, SWT.CHECK);
activateAdditionalRefs.setText(UIText.FetchGerritChangePage_ActivateAdditionalRefsButton);
activateAdditionalRefs.setToolTipText(UIText.FetchGerritChangePage_ActivateAdditionalRefsTooltip);
ActionUtils.setGlobalActions(refText, ActionUtils.createGlobalAction(ActionFactory.PASTE, () -> doPaste(refText)));
refText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
Change change = determineChangeFromString(refText.getText());
// $NON-NLS-1$
String suggestion = "";
if (change != null) {
Object ps = change.getPatchSetNumber();
if (ps == null) {
ps = SIMPLE_TIMESTAMP.format(new Date());
}
suggestion = NLS.bind(UIText.FetchGerritChangePage_SuggestedRefNamePattern, change.getChangeNumber(), ps);
}
if (!branchTextEdited) {
branchText.setText(suggestion);
}
if (!tagTextEdited) {
tagText.setText(suggestion);
}
checkPage();
}
});
if (defaultChange != null) {
refText.setText(defaultChange);
} else if (candidateChange != null) {
String ref = candidateChange.getRefName();
if (ref != null) {
refText.setText(ref);
} else {
refText.setText(candidateChange.getChangeNumber().toString());
}
}
// get all available Gerrit URIs from the repository
SortedSet<String> uris = new TreeSet<>();
try {
for (RemoteConfig rc : RemoteConfig.getAllRemoteConfigs(repository.getConfig())) {
if (GerritUtil.isGerritFetch(rc)) {
if (rc.getURIs().size() > 0) {
uris.add(rc.getURIs().get(0).toPrivateString());
}
for (URIish u : rc.getPushURIs()) {
uris.add(u.toPrivateString());
}
}
}
} catch (URISyntaxException e) {
Activator.handleError(e.getMessage(), e, false);
setErrorMessage(e.getMessage());
}
for (String aUri : uris) {
uriCombo.add(aUri);
changeRefs.put(aUri, new ChangeList(repository, aUri));
}
if (defaultUri != null) {
uriCombo.setText(defaultUri);
} else {
selectLastUsedUri();
}
String currentUri = uriCombo.getText();
ChangeList list = changeRefs.get(currentUri);
if (list == null) {
list = new ChangeList(repository, currentUri);
changeRefs.put(currentUri, list);
}
preFetch(list);
refText.setFocus();
Dialog.applyDialogFont(main);
setControl(main);
if (candidateChange != null) {
// Launch content assist when the page is displayed
final IWizardContainer container = getContainer();
if (container instanceof IPageChangeProvider) {
((IPageChangeProvider) container).addPageChangedListener(new IPageChangedListener() {
@Override
public void pageChanged(PageChangedEvent event) {
if (event.getSelectedPage() == FetchGerritChangePage.this) {
// Only the first time: remove myself
event.getPageChangeProvider().removePageChangedListener(this);
getControl().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
Control control = getControl();
if (control != null && !control.isDisposed()) {
contentProposer.openProposalPopup();
}
}
});
}
}
});
}
}
checkPage();
}
use of org.eclipse.jgit.transport.RemoteConfig in project egit by eclipse.
the class SimpleConfigureFetchDialog method getConfiguredRemote.
/**
* @param repository
* @return the configured remote for the current branch, or the default
* remote; <code>null</code> if a local branch is checked out that
* points to "." as remote
*/
public static RemoteConfig getConfiguredRemote(Repository repository) {
String branch;
try {
branch = repository.getBranch();
} catch (IOException e) {
Activator.handleError(e.getMessage(), e, true);
return null;
}
if (branch == null)
return null;
String remoteName;
if (ObjectId.isId(branch))
remoteName = Constants.DEFAULT_REMOTE_NAME;
else
remoteName = repository.getConfig().getString(ConfigConstants.CONFIG_BRANCH_SECTION, branch, ConfigConstants.CONFIG_REMOTE_SECTION);
// check if we find the configured and default Remotes
List<RemoteConfig> allRemotes;
try {
allRemotes = RemoteConfig.getAllRemoteConfigs(repository.getConfig());
} catch (URISyntaxException e) {
allRemotes = new ArrayList<>();
}
RemoteConfig defaultConfig = null;
RemoteConfig configuredConfig = null;
for (RemoteConfig config : allRemotes) {
if (config.getName().equals(Constants.DEFAULT_REMOTE_NAME))
defaultConfig = config;
if (remoteName != null && config.getName().equals(remoteName))
configuredConfig = config;
}
RemoteConfig configToUse = configuredConfig != null ? configuredConfig : defaultConfig;
return configToUse;
}
use of org.eclipse.jgit.transport.RemoteConfig in project egit by eclipse.
the class SynchronizeFetchJob method runInWorkspace.
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) {
SubMonitor progress = SubMonitor.convert(monitor, gsdSet.size());
progress.setTaskName(UIText.SynchronizeFetchJob_TaskName);
for (GitSynchronizeData gsd : gsdSet) {
Repository repo = gsd.getRepository();
StoredConfig repoConfig = repo.getConfig();
String remoteName = gsd.getDstRemoteName();
if (remoteName == null) {
progress.worked(1);
continue;
}
progress.subTask(NLS.bind(UIText.SynchronizeFetchJob_SubTaskName, remoteName));
RemoteConfig config;
try {
config = new RemoteConfig(repoConfig, remoteName);
} catch (URISyntaxException e) {
Activator.logError(e.getMessage(), e);
progress.worked(1);
continue;
}
FetchOperationUI fetchOperationUI = new FetchOperationUI(repo, config, timeout, false);
fetchOperationUI.setCredentialsProvider(new EGitCredentialsProvider());
try {
fetchOperationUI.execute(progress.newChild(1));
gsd.updateRevs();
} catch (Exception e) {
showInformationDialog(remoteName);
Activator.logError(e.getMessage(), e);
}
}
return Status.OK_STATUS;
}
use of org.eclipse.jgit.transport.RemoteConfig in project egit by eclipse.
the class GitSynchronizeDataTest method shouldReturnDstMergeForRemoteBranch.
@Test
public void shouldReturnDstMergeForRemoteBranch() throws Exception {
// given
StoredConfig config = repo.getConfig();
RemoteConfig remoteConfig = new RemoteConfig(config, "origin");
remoteConfig.setFetchRefSpecs(Arrays.asList(new RefSpec("+refs/heads/*:refs/remotes/origin/*")));
remoteConfig.update(config);
GitSynchronizeData gsd = new GitSynchronizeData(repo, HEAD, "refs/remotes/origin/master", false);
assertThat(gsd.getDstRemoteName(), is("origin"));
assertThat(gsd.getDstMerge(), is("refs/heads/master"));
}
Aggregations