diff options
Diffstat (limited to 'meta/recipes-devtools/guilt/files/guilt-import-commit.patch')
-rw-r--r-- | meta/recipes-devtools/guilt/files/guilt-import-commit.patch | 94 |
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 |