4 git quiltimport [options]
 
   7 author=       author name and email address for patches without any
 
   8 patches=      path to the quilt series and patches
 
  40 if [ -n "$quilt_author" ] ; then
 
  41         quilt_author_name=$(expr "z$quilt_author" : 'z\(.*[^ ]\) *<.*') &&
 
  42         quilt_author_email=$(expr "z$quilt_author" : '.*<\([^>]*\)') &&
 
  43         test '' != "$quilt_author_name" &&
 
  44         test '' != "$quilt_author_email" ||
 
  45         die "malformed --author parameter"
 
  48 # Quilt patch directory
 
  49 : ${QUILT_PATCHES:=patches}
 
  50 if ! [ -d "$QUILT_PATCHES" ] ; then
 
  51         echo "The \"$QUILT_PATCHES\" directory does not exist."
 
  55 # Temporary directories
 
  56 tmp_dir="$GIT_DIR"/rebase-apply
 
  57 tmp_msg="$tmp_dir/msg"
 
  58 tmp_patch="$tmp_dir/patch"
 
  59 tmp_info="$tmp_dir/info"
 
  62 # Find the intial commit
 
  63 commit=$(git rev-parse HEAD)
 
  65 mkdir $tmp_dir || exit 2
 
  66 while read patch_name level garbage <&3
 
  68         case "$patch_name" in ''|'#'*) continue;; esac
 
  74                 echo "unable to parse patch level, ignoring it."
 
  80                 echo "trailing garbage found in series file: $garbage"
 
  83         if ! [ -f "$QUILT_PATCHES/$patch_name" ] ; then
 
  84                 echo "$patch_name doesn't exist. Skipping."
 
  88         git mailinfo "$tmp_msg" "$tmp_patch" \
 
  89                 <"$QUILT_PATCHES/$patch_name" >"$tmp_info" || exit 3
 
  90         test -s "$tmp_patch" || {
 
  91                 echo "Patch is empty.  Was it split wrong?"
 
  95         # Parse the author information
 
  96         GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info")
 
  97         GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info")
 
  98         export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
 
  99         while test -z "$GIT_AUTHOR_EMAIL" && test -z "$GIT_AUTHOR_NAME" ; do
 
 100                 if [ -n "$quilt_author" ] ; then
 
 101                         GIT_AUTHOR_NAME="$quilt_author_name";
 
 102                         GIT_AUTHOR_EMAIL="$quilt_author_email";
 
 103                 elif [ -n "$dry_run" ]; then
 
 104                         echo "No author found in $patch_name" >&2;
 
 105                         GIT_AUTHOR_NAME="dry-run-not-found";
 
 106                         GIT_AUTHOR_EMAIL="dry-run-not-found";
 
 108                         echo "No author found in $patch_name" >&2;
 
 116                         patch_author_name=$(expr "z$patch_author" : 'z\(.*[^ ]\) *<.*') &&
 
 117                         patch_author_email=$(expr "z$patch_author" : '.*<\([^>]*\)') &&
 
 118                         test '' != "$patch_author_name" &&
 
 119                         test '' != "$patch_author_email" &&
 
 120                         GIT_AUTHOR_NAME="$patch_author_name" &&
 
 121                         GIT_AUTHOR_EMAIL="$patch_author_email"
 
 124         GIT_AUTHOR_DATE=$(sed -ne 's/Date: //p' "$tmp_info")
 
 125         SUBJECT=$(sed -ne 's/Subject: //p' "$tmp_info")
 
 126         export GIT_AUTHOR_DATE SUBJECT
 
 127         if [ -z "$SUBJECT" ] ; then
 
 128                 SUBJECT=$(echo $patch_name | sed -e 's/.patch$//')
 
 131         if [ -z "$dry_run" ] ; then
 
 132                 git apply --index -C1 ${level:+"$level"} "$tmp_patch" &&
 
 133                 tree=$(git write-tree) &&
 
 134                 commit=$( (echo "$SUBJECT"; echo; cat "$tmp_msg") | git commit-tree $tree -p $commit) &&
 
 135                 git update-ref -m "quiltimport: $patch_name" HEAD $commit || exit 4
 
 137 done 3<"$QUILT_PATCHES/series"
 
 138 rm -rf $tmp_dir || exit 5