Skip to content

Commit 2218808

Browse files
committed
Add custom Git merge driver to merge over formatting changes
To use it, run ``` git config merge.clang-format-driver.driver "assembly/clang-format-driver %O %A %B %P" ```
1 parent 5150728 commit 2218808

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,7 @@ third_party/** linguist-vendored
3434
*.a binary
3535
*.jar binary
3636
*.tlo binary
37+
38+
*.h merge=clang-format-driver
39+
*.cpp merge=clang-format-driver
40+
*.hpp merge=clang-format-driver

assembly/clang-format-driver

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/usr/bin/env bash
2+
3+
set -eo pipefail
4+
5+
BASE="$1"
6+
OURS="$2"
7+
THEIRS="$3"
8+
FILE="$4"
9+
10+
TMP=$(mktemp)
11+
TMP_BASE=$(mktemp)
12+
13+
cp "$THEIRS" "$TMP"
14+
cp "$BASE" "$TMP_BASE"
15+
clang-format -i --assume-filename="$FILE" --style=file:.clang-format "$TMP"
16+
clang-format -i --assume-filename="$FILE" --style=file:.clang-format "$TMP_BASE"
17+
18+
git merge-file "$OURS" "$TMP_BASE" "$TMP"
19+
20+
rm "$TMP"
21+
rm "$TMP_BASE"

0 commit comments

Comments
 (0)