private GitRemote remote(String name, String url) { return new GitRemote(name, Arrays.asList(url), emptyList(), emptyList(), emptyList()); }
public Optional<GitRepository> getRepositoryForGerritProject(Project project, String gerritProjectName) { final Iterable<GitRepository> repositoriesFromRoots = getRepositories(project); for (GitRepository repository : repositoriesFromRoots) { for (GitRemote remote : repository.getRemotes()) { if (remote.getName().equals(gerritProjectName)) { return Optional.of(repository); } for (String remoteUrl : remote.getUrls()) { remoteUrl = UrlUtils.stripGitExtension(remoteUrl); if (remoteUrl != null && remoteUrl.endsWith(gerritProjectName)) { return Optional.of(repository); } } } } return Optional.absent(); }
public Optional<GitRemote> getRemoteForChange(Project project, GitRepository gitRepository, FetchInfo fetchInfo) { String url = fetchInfo.url; for (GitRemote remote : gitRepository.getRemotes()) { List<String> repositoryUrls = new ArrayList<String>(); repositoryUrls.addAll(remote.getUrls()); repositoryUrls.addAll(remote.getPushUrls()); for (String repositoryUrl : repositoryUrls) { if (UrlUtils.urlHasSameHost(repositoryUrl, url) || UrlUtils.urlHasSameHost(repositoryUrl, gerritSettings.getHost())) { return Optional.of(remote); } } } NotificationBuilder notification = new NotificationBuilder(project, "Error", String.format("Could not fetch commit because no remote url matches Gerrit host.<br/>" + "Git repository: '%s'.", gitRepository.getPresentableUrl())); notificationService.notifyError(notification); return Optional.absent(); }
h.addProgressParameter(); String remoteName = remote.getName(); h.addParameters(remoteName); if (branch != null) { final GitTask fetchTask = new GitTask(project, h, "Fetching " + remote.getFirstUrl()); fetchTask.setProgressIndicator(progressIndicator); fetchTask.setProgressAnalyzer(new GitStandardProgressAnalyzer());
@Override public void run(@NotNull ProgressIndicator indicator) { GitRemote remote; String fetch; String url; boolean commitIsFetched = checkIfCommitIsFetched(gitRepository, commitHash); if (commitIsFetched) { // 'git fetch' works with a local path instead of a remote -> this way FETCH_HEAD is set remote = new GitRemote(gitRepository.getRoot().getPath(), Collections.<String>emptyList(), Collections.<String>emptySet(), Collections.<String>emptyList(), Collections.<String>emptyList()); fetch = commitHash; url = ""; } else { remote = getRemoteForChange(project, gitRepository, fetchInfo).orNull(); if (remote == null) { return; } fetch = fetchInfo.ref; url = remote.getFirstUrl(); } GitFetchResult result = fetchNatively(gitRepository.getGitDir(), remote, url, fetch, project, indicator); if (!result.isSuccess()) { GitFetcher.displayFetchResult(project, result, null, result.getErrors()); } } });
private static boolean hasRemote( @NotNull Collection<GitRemote> remotes, @NotNull String remoteName) { return remotes.stream().anyMatch(remote -> remoteName.equals(remote.getName())); }
public List<String> getProjectNames(Collection<GitRemote> remotes) { List<String> projectNames = Lists.newArrayList(); for (GitRemote remote : remotes) { for (String remoteUrl : remote.getUrls()) { remoteUrl = UrlUtils.stripGitExtension(remoteUrl); String projectName = getProjectName(gerritSettings.getHost(), gerritSettings.getCloneBaseUrl(), remoteUrl); if (!Strings.isNullOrEmpty(projectName) && remoteUrl.endsWith(projectName)) { projectNames.add(projectName); } } } return projectNames; }
public Optional<GitlabProject> resolveProject(ProjectState projectState, GitRemote remote, GitRepository repository) { String remoteProjectName = remote.getName(); String remoteUrl = remote.getFirstUrl(); if(projectState.getProjectId(remoteUrl) == null) { try { Collection<GitlabProject> projects = settingsState.api(repository).getProjects(); for (GitlabProject gitlabProject : projects) { if (gitlabProject.getName().toLowerCase().equals(remoteProjectName.toLowerCase()) || urlMatch(remoteUrl, gitlabProject.getSshUrl()) || urlMatch(remoteUrl, gitlabProject.getHttpUrl())) { Integer projectId = gitlabProject.getId(); projectState.setProjectId(remoteUrl, projectId); return Optional.of(gitlabProject); } } } catch (Throwable throwable) { throw new GitLabException("Cannot match project.", throwable); } } else { try { return Optional.of(settingsState.api(repository).getProject(projectState.getProjectId(remoteUrl))); } catch (Exception e) { projectState.setProjectId(remoteUrl, null); } } return Optional.empty(); }
private boolean hasOriginRemote() { return gitRepository .getRemotes() .stream() .anyMatch(remote -> "origin".equals(remote.getName())); } }
public GitlabServer currentGitlabServer(GitRepository gitRepository) { for (GitRemote gitRemote : gitRepository.getRemotes()) { for (String remoteUrl : gitRemote.getUrls()) { for(GitlabServer server : getGitlabServers()) { if(remoteUrl.contains(server.getRepositoryUrl())) return server; } } } return null; }
@Nullable public static Pair<GitRemote, String> findGitLabRemote(@NotNull GitRepository repository) { for (GitRemote gitRemote : repository.getRemotes()) { for (String remoteUrl : gitRemote.getUrls()) { if (remoteUrl.contains(settingsState.currentGitlabServer(repository).getRepositoryUrl())) { return Pair.create(gitRemote, gitRemote.getName()); } } } return null; }
@Before public void setUp() throws Exception { projectMock = Mockito.mock(Project.class); gitRepoInfoMock = Mockito.mock(GitRepoInfo.class); gitRepositoryMock = Mockito.mock(GitRepository.class); diffProviderMock = Mockito.mock(DiffCompareInfoProvider.class); observerMock = Mockito.mock(Observer.class); applicationProviderMock = Mockito.mock(CreatePullRequestModel.ApplicationProvider.class); currentBranch = PRGitObjectMockHelper.createLocalBranch("local"); tfsRemote = new GitRemote("origin", Arrays.asList("https://mytest.visualstudio.com/DefaultCollection/_git/testrepo"), Arrays.asList("https://pushurl"), Collections.<String>emptyList(), Collections.<String>emptyList()); when(diffProviderMock.getEmptyDiff(gitRepositoryMock)).thenCallRealMethod(); when(gitRepositoryMock.getInfo()).thenReturn(gitRepoInfoMock); when(gitRepositoryMock.getRemotes()).thenReturn(Collections.singletonList(tfsRemote)); when(gitRepoInfoMock.getCurrentBranch()).thenReturn(currentBranch); }
String remoteProjectName = remote.first.getName(); mergeRequestWorker.setRemoteProjectName(remoteProjectName); mergeRequestWorker.setRemoteUrl(remote.getSecond());
new GitRemote("origin", Collections.singletonList("https://test.visualstudio.com/"), Collections.singletonList("https://test.visualstudio.com/"), Collections.singletonList("https://test.visualstudio.com/"),
@Test public void targetDropDownOnlyShowsTfRemoteBranches() { GitRemoteBranch first = PRGitObjectMockHelper.createRemoteBranch("origin/test1", tfsRemote); GitRemoteBranch second = PRGitObjectMockHelper.createRemoteBranch("origin/test2", tfsRemote); GitRemoteBranch master = PRGitObjectMockHelper.createRemoteBranch("origin/master", tfsRemote); // two remotes, non tfs repo should be filtered out GitRemote nonTfsRemote = new GitRemote("origin", Arrays.asList("https://mytest.notvso.com/git/testrepo"), Arrays.asList("https://pushurl"), Collections.<String>emptyList(), Collections.<String>emptyList()); when(gitRepositoryMock.getRemotes()).thenReturn(Arrays.asList(tfsRemote, nonTfsRemote)); GitRemoteBranch nonTfsMaster = PRGitObjectMockHelper.createRemoteBranch("other/master", nonTfsRemote); when(gitRepoInfoMock.getRemoteBranches()).thenReturn(Arrays.asList( first, second, master, nonTfsMaster )); underTest = new CreatePullRequestModel(projectMock, gitRepositoryMock); // nonTfsMaster should be filtered out assertEquals(3, underTest.getRemoteBranchDropdownModel().getSize()); for (int i = 0; i < underTest.getRemoteBranchDropdownModel().getSize(); ++i) { assertNotEquals(nonTfsMaster, underTest.getRemoteBranchDropdownModel().getElementAt(i)); } }