From: Junio C Hamano Date: Tue, 7 Mar 2006 04:51:23 +0000 (-0800) Subject: Merge branch 'fd/asciidoc' X-Git-Tag: v1.3.0-rc1~42^2~1 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/3ca1fff6117f971918ee353540f2633e163e6c6b?hp=e920b5655719bee9c98a3d7d3b05ac6e8cf9d176 Merge branch 'fd/asciidoc' * fd/asciidoc: Tweak asciidoc output to work with broken docbook-xsl --- diff --git a/blame.c b/blame.c index fca22f9000..90338af31c 100644 --- a/blame.c +++ b/blame.c @@ -92,7 +92,7 @@ static struct patch *get_patch(struct commit *commit, struct commit *other) die("write failed: %s", strerror(errno)); close(fd); - sprintf(diff_cmd, "diff -u -U 0 %s %s", tmp_path1, tmp_path2); + sprintf(diff_cmd, "diff -U 0 %s %s", tmp_path1, tmp_path2); fin = popen(diff_cmd, "r"); if (!fin) die("popen failed: %s", strerror(errno)); @@ -234,7 +234,7 @@ static void print_patch(struct patch *p) } } -#if 0 +#if DEBUG /* For debugging only */ static void print_map(struct commit *cmit, struct commit *other) { diff --git a/git-format-patch.sh b/git-format-patch.sh index 2bd26395ec..2ebf7e8596 100755 --- a/git-format-patch.sh +++ b/git-format-patch.sh @@ -3,7 +3,7 @@ # Copyright (c) 2005 Junio C Hamano # -USAGE='[-n | -k] [-o | --stdout] [--signoff] [--check] [--diff-options] []' +USAGE='[-n | -k] [-o | --stdout] [--signoff] [--check] [--diff-options] [--attach] []' LONG_USAGE='Prepare each commit with its patch since head forked from head, one file per patch formatted to resemble UNIX mailbox format, for e-mail submission or use with git-am. @@ -18,7 +18,9 @@ is ignored if --stdout is specified. When -n is specified, instead of "[PATCH] Subject", the first line is formatted as "[PATCH N/M] Subject", unless you have only -one patch.' +one patch. + +When --attach is specified, patches are attached, not inlined.' . git-sh-setup @@ -40,6 +42,8 @@ do -d|--d|--da|--dat|--date|\ -m|--m|--mb|--mbo|--mbox) # now noop ;; + --at|--att|--atta|--attac|--attach) + attach=t ;; -k|--k|--ke|--kee|--keep|--keep-|--keep-s|--keep-su|--keep-sub|\ --keep-subj|--keep-subje|--keep-subjec|--keep-subject) keep_subject=t ;; @@ -149,6 +153,12 @@ do done >$series me=`git-var GIT_AUTHOR_IDENT | sed -e 's/>.*/>/'` +headers=`git-repo-config --get format.headers` +case "$attach" in +"") ;; +*) + mimemagic="050802040500080604070107" +esac case "$outdir" in */) ;; @@ -173,7 +183,7 @@ titleScript=' process_one () { perl -w -e ' -my ($keep_subject, $num, $signoff, $commsg) = @ARGV; +my ($keep_subject, $num, $signoff, $headers, $mimemagic, $commsg) = @ARGV; my ($signoff_pattern, $done_header, $done_subject, $done_separator, $signoff_seen, $last_was_signoff); @@ -224,7 +234,20 @@ while () { s/^\[PATCH[^]]*\]\s*//; s/^/[PATCH$num] /; } + if ($headers) { + print "$headers\n"; + } print "Subject: $_"; + if ($mimemagic) { + print "MIME-Version: 1.0\n"; + print "Content-Type: multipart/mixed;\n"; + print " boundary=\"------------$mimemagic\"\n"; + print "\n"; + print "This is a multi-part message in MIME format.\n"; + print "--------------$mimemagic\n"; + print "Content-Type: text/plain; charset=UTF-8; format=fixed\n"; + print "Content-Transfer-Encoding: 8bit\n"; + } $done_subject = 1; next; } @@ -250,14 +273,33 @@ if (!$signoff_seen && $signoff ne "") { } print "\n---\n\n"; close FH or die "close $commsg pipe"; -' "$keep_subject" "$num" "$signoff" $commsg +' "$keep_subject" "$num" "$signoff" "$headers" "$mimemagic" $commsg git-diff-tree -p $diff_opts "$commit" | git-apply --stat --summary echo + case "$mimemagic" in + '');; + *) + echo "--------------$mimemagic" + echo "Content-Type: text/x-patch;" + echo " name=\"$commit.diff\"" + echo "Content-Transfer-Encoding: 8bit" + echo "Content-Disposition: inline;" + echo " filename=\"$commit.diff\"" + echo + esac git-diff-tree -p $diff_opts "$commit" - echo "-- " - echo "@@GIT_VERSION@@" - + case "$mimemagic" in + '') + echo "-- " + echo "@@GIT_VERSION@@" + ;; + *) + echo + echo "--------------$mimemagic--" + echo + ;; + esac echo } diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh index 8cb32e156b..9c5a15a15e 100644 --- a/t/annotate-tests.sh +++ b/t/annotate-tests.sh @@ -100,3 +100,22 @@ test_expect_success \ 'Two lines blamed on A, one on B, two on B1, one on B2, one on A U Thor' \ 'check_count A 2 B 1 B1 2 B2 1 "A U Thor" 1' +test_expect_success \ + 'an incomplete line added' \ + 'echo "incomplete" | tr -d "\\012" >>file && + GIT_AUTHOR_NAME="C" git commit -a -m "Incomplete"' + +test_expect_success \ + 'With incomplete lines.' \ + 'check_count A 2 B 1 B1 2 B2 1 "A U Thor" 1 C 1' + +test_expect_success \ + 'some edit' \ + 'mv file file1 && + sed -e 1d -e "5s/3A/99/" file1 >file && + rm -f file1 && + GIT_AUTHOR_NAME="D" git commit -a -m "edit"' + +test_expect_success \ + 'some edit' \ + 'check_count A 1 B 1 B1 1 B2 1 "A U Thor" 1 C 1 D 1'