monitor);
Repository repository = null;
try {
monitor.beginTask(NLS.bind(CoreText.CloneOperation_title, uri),
5000);
CloneCommand cloneRepository = Git.cloneRepository();
cloneRepository.setCredentialsProvider(credentialsProvider);
if (refName != null)
cloneRepository.setBranch(refName);
else
cloneRepository.setNoCheckout(true);
cloneRepository.setDirectory(workdir);
cloneRepository.setProgressMonitor(gitMonitor);
cloneRepository.setRemote(remoteName);
cloneRepository.setURI(uri.toString());
cloneRepository.setTimeout(timeout);
cloneRepository.setCloneAllBranches(allSelected);
cloneRepository.setCloneSubmodules(cloneSubmodules);
if (selectedBranches != null) {
List<String> branches = new ArrayList<String>();
for (Ref branch : selectedBranches)
branches.add(branch.getName());
cloneRepository.setBranchesToClone(branches);
}
Git git = cloneRepository.call();
repository = git.getRepository();
synchronized (this) {
if (postCloneTasks != null)
for (PostCloneTask task : postCloneTasks)
task.execute(git.getRepository(), monitor);