[PATCH] D129311: [clang-format] Update return code

Sridhar Gopinath via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 7 11:25:19 PDT 2022


sridhar_gopinath created this revision.
sridhar_gopinath added reviewers: curdeius, owenpan.
Herald added a project: All.
sridhar_gopinath requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

In diff and diffstat modes, the return code is != 0 even when there are no
changes between commits. This issue can be fixed by passing `--exit-code` to
`git diff` command that returns 0 when there are no changes and using that as
the return code for clang-format.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D129311

Files:
  clang/tools/clang-format/git-clang-format


Index: clang/tools/clang-format/git-clang-format
===================================================================
--- clang/tools/clang-format/git-clang-format
+++ clang/tools/clang-format/git-clang-format
@@ -198,9 +198,9 @@
     return 0
 
   if opts.diff:
-    print_diff(old_tree, new_tree)
+    return print_diff(old_tree, new_tree)
   elif opts.diffstat:
-    print_diffstat(old_tree, new_tree)
+    return print_diffstat(old_tree, new_tree)
   else:
     changed_files = apply_changes(old_tree, new_tree, force=opts.force,
                                   patch_mode=opts.patch)
@@ -209,7 +209,7 @@
       for filename in changed_files:
         print('    %s' % filename)
 
-  return 1
+    return 1
 
 
 def load_git_config(non_string_options=None):
@@ -536,8 +536,8 @@
   # We also only print modified files since `new_tree` only contains the files
   # that were modified, so unmodified files would show as deleted without the
   # filter.
-  subprocess.check_call(['git', 'diff', '--diff-filter=M', old_tree, new_tree,
-                         '--'])
+  subprocess.check_call(['git', 'diff', '--diff-filter=M',
+                        old_tree, new_tree, '--exit-code', '--'])
 
 def print_diffstat(old_tree, new_tree):
   """Print the diffstat between the two trees to stdout."""
@@ -548,7 +548,13 @@
   # We also only print modified files since `new_tree` only contains the files
   # that were modified, so unmodified files would show as deleted without the
   # filter.
-  subprocess.check_call(['git', 'diff', '--diff-filter=M', '--stat', old_tree, new_tree,
+  subprocess.check_call(['git',
+                         'diff',
+                         '--diff-filter=M',
+                         '--stat',
+                         old_tree,
+                         new_tree,
+                         '--exit-code',
                          '--'])
 
 def apply_changes(old_tree, new_tree, force=False, patch_mode=False):


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D129311.443000.patch
Type: text/x-patch
Size: 1950 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220707/3941b9d2/attachment.bin>


More information about the cfe-commits mailing list