From 75197353cbdf386d4c1d4259bc3c9b34481cea9b Mon Sep 17 00:00:00 2001 From: Robin Rosenberg Date: Mon, 7 Apr 2008 19:22:21 +0200 Subject: [PATCH] Cloning wizard: Allow user to name origin Signed-off-by: Robin Rosenberg --- .../egit/ui/internal/wizards/GitCloneWizard.java | 41 +++++++++++++++++----- .../src/org/spearce/jgit/fetch/FetchClient.java | 1 + 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/wizards/GitCloneWizard.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/wizards/GitCloneWizard.java index 9362a021..b6ba2deb 100644 --- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/wizards/GitCloneWizard.java +++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/wizards/GitCloneWizard.java @@ -114,6 +114,8 @@ public class GitCloneWizard extends Wizard implements IImportWizard { private Text keyText; + private Text remoteText; + /** * Wizard page that allows the user entering the location of a repository to * be cloned. @@ -191,6 +193,20 @@ public class GitCloneWizard extends Wizard implements IImportWizard { } }; + new Label(localComposite, SWT.NULL); // wrap layout + + Label remoteLabel = new Label(localComposite, SWT.NULL); + remoteLabel.setText("Remote name"); + final GridData remoteLabelData = new GridData(); + remoteLabelData.exclude = true; + remoteLabel.setLayoutData(remoteLabelData); + + remoteText = new Text(localComposite, SWT.BORDER); + remoteText.setText("origin"); + final GridData remoteTextData = new GridData(SWT.FILL, SWT.DEFAULT, true, + false); + remoteText.setLayoutData(remoteTextData); + uriText.addKeyListener(completeListener); userText.addKeyListener(completeListener); passText.addKeyListener(completeListener); @@ -384,6 +400,13 @@ public class GitCloneWizard extends Wizard implements IImportWizard { } } + + /** + * @return remote name + */ + public String getRemote() { + return remoteText.getText(); + } } class DoClonePage extends WizardPage { @@ -435,8 +458,8 @@ public class GitCloneWizard extends Wizard implements IImportWizard { try { db = new Repository(new File(into, ".git")); db.create(); - FetchClient client = createClient(urish, db, cloneInput.getUser(), cloneInput.getPassword()); - CloneJob cloneJob = new CloneJob(client); + FetchClient client = createClient(urish, db, cloneInput.getUser(), cloneInput.getPassword(), cloneInput.getRemote()); + CloneJob cloneJob = new CloneJob(client, cloneInput.getRemote()); getContainer().run(true, true, cloneJob); return true; @@ -487,22 +510,22 @@ public class GitCloneWizard extends Wizard implements IImportWizard { } private FetchClient createClient(final String urish, final Repository db, - final String user, final String password) + final String user, final String password, final String remoteName) throws IOException, URISyntaxException, JSchException { URIish uri = new URIish(urish); if (uri.getScheme() == null) - return LocalGitProtocolFetchClient.create(db, "origin", uri.getPath()); + return LocalGitProtocolFetchClient.create(db, remoteName, uri.getPath()); if (uri.getScheme().equals("git")) { int port = uri.getPort(); if (port == -1) port = GitProtocolFetchClient.GIT_PROTO_PORT; - return GitProtocolFetchClient.create(db, "origin", uri.getHost(), port, uri.getPath()); + return GitProtocolFetchClient.create(db, remoteName, uri.getHost(), port, uri.getPath()); } if (uri.getScheme().equals("ssh") || uri.getScheme().equals("git+ssh")) { int port = uri.getPort(); if (port == -1) port = GitJSchProtocolFetchClient.GIT_SSH_PROTO_PORT; - return GitJSchProtocolFetchClient.create(db, "origin", uri.getHost(), port, + return GitJSchProtocolFetchClient.create(db, remoteName, uri.getHost(), port, user != null ? user : uri.getUser(), password != null ? password : uri.getPass(), uri.getPath()); @@ -513,9 +536,11 @@ public class GitCloneWizard extends Wizard implements IImportWizard { class CloneJob implements IRunnableWithProgress { private final FetchClient client; + private final String remote; - CloneJob(final FetchClient client) { + CloneJob(final FetchClient client, final String remote) { this.client = client; + this.remote = remote; } public void run(final IProgressMonitor monitor) { @@ -524,7 +549,7 @@ public class GitCloneWizard extends Wizard implements IImportWizard { System.out.println("Checking out"); monitor.setTaskName("Checking out"); Repository repository = client.getRepository(); - WorkDirCheckout workDirCheckout = new WorkDirCheckout(repository, repository.getWorkDir(), new GitIndex(client.getRepository()), repository.mapTree("remotes/origin/master")); + WorkDirCheckout workDirCheckout = new WorkDirCheckout(repository, repository.getWorkDir(), new GitIndex(client.getRepository()), repository.mapTree("remotes/" + remote + "/master")); workDirCheckout.checkout(); System.out.println("Done"); } catch (IOException e) { diff --git a/org.spearce.jgit/src/org/spearce/jgit/fetch/FetchClient.java b/org.spearce.jgit/src/org/spearce/jgit/fetch/FetchClient.java index 3bdc2384..4e7a30e1 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/fetch/FetchClient.java +++ b/org.spearce.jgit/src/org/spearce/jgit/fetch/FetchClient.java @@ -471,4 +471,5 @@ public class FetchClient { public Repository getRepository() { return repository; } + } -- 2.11.4.GIT