Source:
<code>public List<IProject> run(IProgressMonitor monitor) throws TeamException { final Map<URIish, Map<String, Set<ProjectReference>>> repositories = parseReferenceStrings(); final List<IProject> importedProjects = new ArrayList<IProject>(); SubMonitor progress = SubMonitor.convert(monitor, repositories.size()); for (final Map.Entry<URIish, Map<String, Set<ProjectReference>>> entry : repositories .entrySet()) { final URIish gitUrl = entry.getKey(); final Map<String, Set<ProjectReference>> refs = entry .getValue(); <START> SubMonitor subProgress = SubMonitor.convert(progress.newChild(1), <END> refs.size()); for (final Map.Entry<String, Set<ProjectReference>> refEntry : refs .entrySet()) { final String refName = refEntry.getKey(); final Set<ProjectReference> projects = refEntry.getValue(); final Set<String> allRefs = refs.keySet(); File repositoryPath = null; if (allRefs.size() == 1) repositoryPath = findConfiguredRepository(gitUrl); SubMonitor subSubProgress = SubMonitor.convert( subProgress.newChild(1), repositoryPath == null ? 2 : 1); if (repositoryPath == null) { try { IPath workDir = getWorkingDir(gitUrl, refName, refs.keySet()); repositoryPath = cloneIfNecessary(gitUrl, refName, workDir, projects, subSubProgress.newChild(1)); } catch (final InterruptedException e) { return Collections.emptyList(); } } getRepositoryUtil().addConfiguredRepository(repositoryPath); IPath newWorkDir = new Path(repositoryPath.getAbsolutePath()) .removeLastSegments(1); List<IProject> p = importProjects(projects, newWorkDir, repositoryPath, subSubProgress.newChild(1)); importedProjects.addAll(p); } } return importedProjects; }</code><technical_language>Change to: SubMonitor subProgress = progress.split(1).setWorkRemaining(refs.size());</technical_language>

Target:
public List<IProject> run(IProgressMonitor monitor) throws TeamException { final Map<URIish, Map<String, Set<ProjectReference>>> repositories = parseReferenceStrings(); final List<IProject> importedProjects = new ArrayList<IProject>(); SubMonitor progress = SubMonitor.convert(monitor, repositories.size()); for (final Map.Entry<URIish, Map<String, Set<ProjectReference>>> entry : repositories .entrySet()) { final URIish gitUrl = entry.getKey(); final Map<String, Set<ProjectReference>> refs = entry .getValue(); SubMonitor subProgress = progress.newChild(1) .setWorkRemaining(refs.size()); for (final Map.Entry<String, Set<ProjectReference>> refEntry : refs .entrySet()) { final String refName = refEntry.getKey(); final Set<ProjectReference> projects = refEntry.getValue(); final Set<String> allRefs = refs.keySet(); File repositoryPath = null; if (allRefs.size() == 1) repositoryPath = findConfiguredRepository(gitUrl); SubMonitor subSubProgress = subProgress.newChild(1) .setWorkRemaining(repositoryPath == null ? 2 : 1); if (repositoryPath == null) { try { IPath workDir = getWorkingDir(gitUrl, refName, refs.keySet()); repositoryPath = cloneIfNecessary(gitUrl, refName, workDir, projects, subSubProgress.newChild(1)); } catch (final InterruptedException e) { return Collections.emptyList(); } } getRepositoryUtil().addConfiguredRepository(repositoryPath); IPath newWorkDir = new Path(repositoryPath.getAbsolutePath()) .removeLastSegments(1); List<IProject> p = importProjects(projects, newWorkDir, repositoryPath, subSubProgress.newChild(1)); importedProjects.addAll(p); } } return importedProjects; }