This is a utility for preparing patches against LLVM. It runs cvs diff with
authorReid Spencer <rspencer@reidspencer.com>
Sat, 18 Nov 2006 18:02:30 +0000 (18:02 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Sat, 18 Nov 2006 18:02:30 +0000 (18:02 +0000)
the correct options, places the patch content in order that makes sense for
review, and filters cruft out of the patch (like diffs in *.cvs files). It
produces both a NAME.patch.raw (unfiltered) and NAME.patch (filtered) file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31850 91177308-0d34-0410-b5e6-96231b3b80d8

utils/mkpatch [new file with mode: 0755]

diff --git a/utils/mkpatch b/utils/mkpatch
new file mode 100755 (executable)
index 0000000..3daa604
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# This script makes a patch for LLVM ensuring the correct diff options and
+# putting the files in a standard review order.
+
+
+function error {
+  retcode="$?"
+  echo "mkpatch: error: $1 ($retcode)"
+  exit 1
+}
+
+if [ ! -e llvm.spec.in ] ; then
+  error "Please change directory to the LLVM top source directory"
+fi
+if [ "$#" -ne 1 ] ; then
+  error "usage: utils/mkpatch [PATCH_NAME]"
+fi
+NAME="$1"
+echo "mkpatch: Generating differences on top level files"
+cvs diff -l -Ntdup -5 . > "$NAME".patch.raw 2>&1
+echo "mkpatch: Generating differences on all directories"
+cvs diff -Ntdup -5 >> "$NAME".patch.raw 2>&1 \
+  autoconf docs utils include lib/System lib/Support lib/VMCore lib/AsmParser \
+  lib/Bytecode lib/Analysis lib/Transforms lib/CodeGen lib/Target \
+  lib/ExecutionEngine lib/Debugger lib/Linker \
+  tools test runtime projects examples win32 Xcode
+
+echo "mkpatch: Removing cruft from the patch file"
+sed "$NAME".patch.raw -e '/^[?] .*/d' -e '/^cvs diff: Diffing/d' | awk '\
+BEGIN { deleting = 0; } \
+/^Index: .*[.]cvs$/ { deleting = 1; } \
+/^Index:.*/ && !/^Index: .*[.]cvs$/ { deleting = 0; } \
+{ if (! deleting) { print; } } \
+'  > "$NAME".patch  || error "sed/awk cleanup failed"
+