summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/guilt/files/guilt-import-commit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/guilt/files/guilt-import-commit.patch')
-rw-r--r--meta/recipes-devtools/guilt/files/guilt-import-commit.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/meta/recipes-devtools/guilt/files/guilt-import-commit.patch b/meta/recipes-devtools/guilt/files/guilt-import-commit.patch
new file mode 100644
index 0000000000..78cc93e5d2
--- /dev/null
+++ b/meta/recipes-devtools/guilt/files/guilt-import-commit.patch
@@ -0,0 +1,94 @@
+guilt: import commits via git format-patch
+
+Rather than attempting to process commits directly, it
+is preferable to try dumping the change via git format-patch
+to take advantage of the proper header/subject/from lines that
+are generated.
+
+If patches cannot be exported, fall back to importing
+commits via a more custom method.
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+
+---
+ guilt-import-commit | 40 +++++++++++++++++++++++++++++-----------
+ 1 file changed, 29 insertions(+), 11 deletions(-)
+
+--- a/guilt-import-commit
++++ b/guilt-import-commit
+@@ -20,46 +20,64 @@ fi
+ disp "About to begin conversion..." >&2
+ disp "Current head: `cat $GIT_DIR/refs/heads/$branch`" >&2
+
++# try git-format-patch first, if it fails fall back to internal
++# methods.
++patches=`git-format-patch -o $GUILT_DIR/$branch $rhash`
++if [ -z "$patches" ]; then
++ need_custom_patches="1"
++fi
++
+ for rev in `git rev-list $rhash`; do
++ if [ ! -z "$need_custom_patches" ]; then
+ s=`git log --pretty=oneline -1 $rev | cut -c 42-`
+
+ fname=`echo $s | sed -e "s/&/and/g" -e "s/[ :]/_/g" -e "s,[/\\],-,g" \
+- -e "s/['\\[{}]//g" -e 's/]//g' -e 's/\*/-/g' \
++ -e "s/['\\()<>[{}]//g" -e 's/]//g' -e 's/\*/-/g' \
+ -e 's/\?/-/g' | tr A-Z a-z`
+
+- disp "Converting `echo $rev | cut -c 1-8` as $fname"
++ disp "Converting `echo $rev | cut -c 1-8` as $fname.patch"
+
+ mangle_prefix=1
+ fname_base=$fname
+- while [ -f "$GUILT_DIR/$branch/$fname" ]; do
++ while [ -f "$GUILT_DIR/$branch/$fname.patch" ]; do
+ fname="$fname_base-$mangle_prefix"
+ mangle_prefix=`expr $mangle_prefix + 1`
+- disp "Patch under that name exists...trying '$fname'"
++ disp "Patch under that name exists...trying '$fname.patch'"
+ done
+
+ (
+ do_make_header $rev
+ echo ""
+ git diff --binary $rev^..$rev
+- ) > $GUILT_DIR/$branch/$fname
++ ) > $GUILT_DIR/$branch/$fname.patch
+
+ # FIXME: grab the GIT_AUTHOR_DATE from the commit object and set the
+ # timestamp on the patch
+
+- # insert the patch name into the series file
+- series_insert_patch $fname
++ patches="$patches $fname.patch"
++ fi
+
+- # Only reset if the commit was on this branch
+- if head_check $rev 2> /dev/null; then
++ # Only reset if the commit was on this branch
++ if head_check $rev 2> /dev/null; then
+ # BEWARE: "git reset" ahead! Is there a way to verify that
+ # we really created a patch? - We don't want to lose any
+ # history.
+ git reset --hard $rev^ > /dev/null
+- elif [ -z "$warned" ]; then
++ elif [ -z "$warned" ]; then
+ disp "Warning: commit $rev is not the HEAD...preserving commit" >&2
+ disp "Warning: (this message is displayed only once)" >&2
+ warned=t
+- fi
++ fi
++done
++
++rpatches=`echo "$patches" | sed 's% %\n%g' | tac`
++for patch in $rpatches; do
++
++ iname=`echo $patch | sed s%$GUILT_DIR/$branch/%%`
++ echo "Inserting $iname"
++
++ # insert the patch name into the series file
++ series_insert_patch $iname
+ done
+
+ disp "Done." >&2