public void addOrResetGitRemote(CloudGitApplication application, GitRepository repository)
     throws ServerRuntimeException {
   GitRemote gitRemote = GitUtil.findRemoteByName(repository, getRemoteName());
   if (gitRemote == null) {
     addGitRemote(application);
   } else if (!gitRemote.getUrls().contains(application.getGitUrl())) {
     resetGitRemote(application);
   }
 }
 @Nullable
 static String findGithubRemoteUrl(@NotNull GitRepository repository) {
   for (GitRemote remote : repository.getRemotes()) {
     for (String url : remote.getUrls()) {
       if (isGithubUrl(url)) {
         return url;
       }
     }
   }
   return null;
 }
 private void doLoadForksFromGit(@NotNull ProgressIndicator indicator) {
   for (GitRemote remote : myGitRepository.getRemotes()) {
     for (String url : remote.getUrls()) {
       if (GithubUrlUtil.isGithubUrl(url)) {
         GithubFullPath path = GithubUrlUtil.getUserAndRepositoryFromRemoteUrl(url);
         if (path != null) {
           doAddFork(path, remote.getName(), indicator);
           break;
         }
       }
     }
   }
 }
  @Nullable
  public static String getGithubUrl(final GitRemote gitRemote) {
    final GithubSettings githubSettings = GithubSettings.getInstance();
    final String host = githubSettings.getHost();
    final String username = githubSettings.getLogin();

    // TODO this doesn't work with organizational accounts
    final String userRepoMarkerSSHProtocol = host + ":" + username + "/";
    final String userRepoMarkerOtherProtocols = host + "/" + username + "/";
    for (String pushUrl : gitRemote.getUrls()) {
      if (pushUrl.contains(userRepoMarkerSSHProtocol)
          || pushUrl.contains(userRepoMarkerOtherProtocols)) {
        return pushUrl;
      }
    }
    return null;
  }