[PATCH] D82707: [clang][docs] Remove untracked files from formatted status

Nathan James via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sun Jun 28 01:03:09 PDT 2020


njames93 created this revision.
njames93 added reviewers: krasimir, JakeMerdichAMD, sammccall, curdeius, bollu, alexshap, jdoerfert, DavidTruby, sscalpone, MyDeveloperDay.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Currently on http://clang.llvm.org/docs/ClangFormattedStatus.html there are format stats on files no actually inside the tree but generated by build scripts. These are usually copied from somewhere else. Right now for example there are files from `llvm/utils/release/llvm-package...`. Adding these files bloats the list while not giving an accurate representation of how formatted the repo is.
This addresses this issue by checking the git index and ignoring any folder that doesn't contain tracked files.

I'm still unsure whether it would be better to just do away with the `os.walk` method and just check over every file returned from `git ls-index <project-root>`.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D82707

Files:
  clang/docs/tools/generate_formatted_state.py


Index: clang/docs/tools/generate_formatted_state.py
===================================================================
--- clang/docs/tools/generate_formatted_state.py
+++ clang/docs/tools/generate_formatted_state.py
@@ -72,6 +72,8 @@
      - {style2}`{percent}%`
 """
 
+FNULL = open(os.devnull, 'w')
+
 with open(DOC_FILE, 'wb') as output:
     sha = get_git_revision_short_hash()
     today = datetime.now().strftime("%B %d, %Y %H:%M:%S")
@@ -85,14 +87,22 @@
         for subdir in subdirs:
             if any(sd == subdir for sd in skipped_dirs):
                 subdirs.remove(subdir)
+            else:
+                act_sub_dir = os.path.join(root, subdir)
+                # Check the git index to see if the directory contains tracked
+                # files. Reditect the output to a null descriptor as we aren't
+                # interested in it, just the return code.
+                git_check = subprocess.Popen(
+                    ["git", "ls-files", "--error-unmatch", act_sub_dir],
+                    stdout=FNULL,
+                    stderr=FNULL)
+                if git_check.wait() != 0:
+                    print("Skipping directory: ", act_sub_dir)
+                    subdirs.remove(subdir)
 
         path = os.path.relpath(root, TOP_DIR)
         path = path.replace('\\', '/')
 
-        head, _ = os.path.split(root)
-        while head:
-            head, _ = os.path.split(head)
-
         file_count = 0
         file_pass = 0
         file_fail = 0


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82707.273906.patch
Type: text/x-patch
Size: 1497 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200628/e1dad56a/attachment-0001.bin>


More information about the cfe-commits mailing list