You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2020/01/20 08:51:19 UTC

[lucene-solr] branch master updated: LUCENE-9077: Allow locally staged files in git status precommit check.

This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new 1ad6bc9  LUCENE-9077: Allow locally staged files in git status precommit check.
1ad6bc9 is described below

commit 1ad6bc9361bb6737d85615b7450dd4b28345c572
Author: Dawid Weiss <da...@carrotsearch.com>
AuthorDate: Mon Jan 20 09:36:14 2020 +0100

    LUCENE-9077: Allow locally staged files in git status precommit check.
---
 gradle/validation/git-status.gradle | 60 ++++++++++++++++++++++---------------
 gradle/validation/precommit.gradle  |  2 +-
 2 files changed, 37 insertions(+), 25 deletions(-)

diff --git a/gradle/validation/git-status.gradle b/gradle/validation/git-status.gradle
index afcca82..37eaf13 100644
--- a/gradle/validation/git-status.gradle
+++ b/gradle/validation/git-status.gradle
@@ -17,35 +17,47 @@ buildscript {
   }
 }
 
+def gitStatus(dir) {
+  try {
+    def repository = new FileRepositoryBuilder()
+        .setWorkTree(dir)
+        .setMustExist(true)
+        .build()
+
+    def status = new Git(repository).status().call()
+    return status
+  } catch (RepositoryNotFoundException | NoWorkTreeException e) {
+    logger.warn("WARNING: Directory is not a valid GIT checkout (won't check dirty files): ${dir}")
+    return null
+  } catch (NotSupportedException e) {
+    throw new GradleException("jgit does not support git repository version at this location: ${dir}", e)
+  }
+}
+
 configure(rootProject) {
-  // Verify git working copy does not have any modified files.
-  task checkWorkingCopyPristine() {
+  // Verify git working copy does not have any unstaged modified files.
+  task checkWorkingCopyClean() {
     doFirst {
-      def gitDir = rootProject.projectDir
-      try {
-        def repository = new FileRepositoryBuilder()
-            .setWorkTree(gitDir)
-            .setMustExist(true)
-            .build()
-
-        def status = new Git(repository).status().call()
-        if (!status.clean) {
-          def offenders = [
-              "(added)": status.added,
-              "(changed)": status.changed,
-              "(conflicting)": status.conflicting,
-              "(missing)": status.missing,
-              "(modified)": status.modified,
-              "(removed)": status.removed,
-              "(untracked)": [status.untracked, status.untrackedFolders].flatten()
-          ].collectMany { fileStatus, files ->
-            files.collect {file -> "  - ${file} ${fileStatus}" }
-          }.sort()
+      def status = gitStatus(rootProject.projectDir)
+      if (status == null) {
+        // Ignore the check. This isn't a git checkout.
+      } else {
+        def offenders = [
+            // Exclude staged changes. These are fine in precommit.
+            // "(added)": status.added,
+            // "(changed)": status.changed,
+            // "(removed)": status.removed,
+            "(conflicting)": status.conflicting,
+            "(missing)": status.missing,
+            "(modified)": status.modified,
+            "(untracked)": [status.untracked, status.untrackedFolders].flatten()
+        ].collectMany { fileStatus, files ->
+          files.collect {file -> "  - ${file} ${fileStatus}" }
+        }.sort()
 
+        if (offenders) {
           throw new GradleException("Working copy is not a clean git checkout, offending files:\n${offenders.join("\n")}")
         }
-      } catch (RepositoryNotFoundException | NoWorkTreeException | NotSupportedException e) {
-        logger.warn("WARNING: Directory is not a valid GIT checkout (won't check dirty files): ${gitDir}")
       }
     }
   }
diff --git a/gradle/validation/precommit.gradle b/gradle/validation/precommit.gradle
index f68b9c6..21d25b9 100644
--- a/gradle/validation/precommit.gradle
+++ b/gradle/validation/precommit.gradle
@@ -8,7 +8,7 @@ configure(rootProject) {
     // Root-level validation tasks.
     dependsOn ":verifyLocks"
     dependsOn ":versionsPropsAreSorted"
-    dependsOn ":checkWorkingCopyPristine"
+    dependsOn ":checkWorkingCopyClean"
     dependsOn ":validateSourcePatterns"
 
     // Solr validation tasks.