diff --git a/common/repo/GitRepo.java b/common/repo/GitRepo.java index e3909b6b8..fae12a6f7 100644 --- a/common/repo/GitRepo.java +++ b/common/repo/GitRepo.java @@ -510,5 +510,10 @@ public static String getOrgName(String githubUrl) { public static String getProjectName(String githubUrl) { return githubUrl.split("/")[4]; } + + @Override + public String getAbsRepoPath() { + return runCommand("rev-parse --show-toplevel").stdout.trim(); + } } diff --git a/common/repo/Repo.java b/common/repo/Repo.java index e354f2773..b8cadad99 100644 --- a/common/repo/Repo.java +++ b/common/repo/Repo.java @@ -109,5 +109,7 @@ String getPatch( String getMostRecentCommitOfBranch(String branch); String getMostRecentCommitOfFile(String filename); + + String getAbsRepoPath(); } diff --git a/tools/reviewer/job/tasks/SubmitterTask.java b/tools/reviewer/job/tasks/SubmitterTask.java index 636405d18..839e1b027 100644 --- a/tools/reviewer/job/tasks/SubmitterTask.java +++ b/tools/reviewer/job/tasks/SubmitterTask.java @@ -186,16 +186,23 @@ private void trySubmitDiff(Diff diff) { } if (shouldPush) { - boolean allPushesSuccessful = gitRepos.stream().allMatch(repo -> repo.push("master")); - if (allPushesSuccessful) { + List notPushedRepoNames = new ArrayList<>(); + for (GitRepo repo : gitRepos) { + boolean pushSuccessful = repo.push("master"); + if (!pushSuccessful) { + String absRepoPath = repo.getAbsRepoPath(); + notPushedRepoNames.add(absRepoPath.substring(absRepoPath.lastIndexOf('/') + 1)); + } + } + if (notPushedRepoNames.isEmpty()) { log.atInfo().log("All repos pushed successfully"); diff = diff.toBuilder().setStatus(Diff.Status.SUBMITTED).build(); firestoreClient.setProtoDocument( ReviewerConstants.DIFF_COLLECTION, String.valueOf(diff.getId()), diff); // TODO: store `SubmitterMergeResult` } else { - // TODO: find out which one. - log.atSevere().log("Some repo pushes failed"); + notPushedRepoNames.forEach( + repoName -> log.atSevere().log("[%s] repo push failed", repoName)); } } else { // TODO: Find out which repo caused it.