From d22c274378df54eb3644441884489b0158fe9e10 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Fri, 24 Mar 2017 11:45:58 -0400
Subject: [PATCH] clang-format.bash: Use Git attributes to mark files for
 formatting

---
 .gitattributes    |  2 +-
 clang-format.bash | 21 +++++++++++----------
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index 39d58ea0..95a1320e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3,7 +3,7 @@
 .hooks*          export-ignore
 
 # Custom attribute to mark sources as using our C code style.
-[attr]our-c-style  whitespace=tab-in-indent
+[attr]our-c-style  whitespace=tab-in-indent  format.clang-format
 
 /GitSetup        export-ignore
 /*.sh            export-ignore eol=lf
diff --git a/clang-format.bash b/clang-format.bash
index 3e82770f..8fa347c8 100755
--- a/clang-format.bash
+++ b/clang-format.bash
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 #=============================================================================
-# Copyright 2015-2016 Kitware, Inc.
+# Copyright 2015-2017 Kitware, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -106,17 +106,18 @@ case "$mode" in
     *) die "invalid mode: $mode" ;;
 esac
 
-# Filter sources to which our style should apply.
-list_cfg_files() {
-  $git_ls -z -- '*.c.in' '*.h.in' '*.hxx.in'
-}
-list_all_files() {
-  $git_ls -z -- '*.c' '*.c.in' '*.cxx' '*.h' '*.h.in' '*.hxx' '*.hxx.in'
+# List files as selected above.
+list_files() {
+  $git_ls |
+
+  # Select sources with our attribute.
+  git check-attr --stdin format.clang-format |
+  sed -n '/: format\.clang-format: set$/ {s/:[^:]*:[^:]*$//p}'
 }
 
 # Transform configured sources to protect @SYMBOLS@.
-list_cfg_files | xargs -0 -r sed -i 's/@\(KWSYS_[A-Z0-9_]\+\)@/x\1x/g'
+list_files | xargs -d '\n' sed -i 's/@\(KWSYS_[A-Z0-9_]\+\)@/x\1x/g'
 # Update sources in-place.
-list_all_files | xargs -0 "$clang_format" -i
+list_files | xargs -d '\n' "$clang_format" -i
 # Transform configured sources to restore @SYMBOLS@.
-list_cfg_files | xargs -0 -r sed -i 's/x\(KWSYS_[A-Z0-9_]\+\)x/@\1@/g'
+list_files | xargs -d '\n' sed -i 's/x\(KWSYS_[A-Z0-9_]\+\)x/@\1@/g'
-- 
GitLab