From 9740d289ee76097a2ec43e59f7ecb8974bcf8634 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 23:53:07 -0700 Subject: Update SubmittingPatches to add MUA specific notes. Signed-off-by: Junio C Hamano --- Documentation/SubmittingPatches | 110 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 6121e902ae..15b917f786 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -128,3 +128,113 @@ then you just add a line saying Some people also put extra tags at the end. They'll just be ignored for now, but you can do this to mark internal company procedures or just point out some special detail about the sign-off. + + +------------------------------------------------ +MUA specific hints + +Some of patches I receive or pick up from the list share common +patterns of breakage. Please make sure your MUA is set up +properly not to corrupt whitespaces. Here are two common ones +I have seen: + +* Empty context lines that do not have _any_ whitespace. + +* Non empty context lines that have one extra whitespace at the + beginning. + + +Pine +---- + +(Johannes Schindelin) + +I don't know how many people still use pine, but for those poor +souls it may be good to mention that the quell-flowed-text is +needed for recent versions. + +... the "no-strip-whitespace-before-send" option, too. AFAIK it +was introduced in 4.60. + +(Linus Torvalds) + +And 4.58 needs at least this. + +--- +diff-tree 8326dd8350be64ac7fc805f6563a1d61ad10d32c (from e886a61f76edf5410573e92e38ce22974f9c40f1) +Author: Linus Torvalds +Date: Mon Aug 15 17:23:51 2005 -0700 + + Fix pine whitespace-corruption bug + + There's no excuse for unconditionally removing whitespace from + the pico buffers on close. + +diff --git a/pico/pico.c b/pico/pico.c +--- a/pico/pico.c ++++ b/pico/pico.c +@@ -219,7 +219,9 @@ PICO *pm; + switch(pico_all_done){ /* prepare for/handle final events */ + case COMP_EXIT : /* already confirmed */ + packheader(); ++#if 0 + stripwhitespace(); ++#endif + c |= COMP_EXIT; + break; + + + +Thunderbird +----------- + +(A Large Angry SCM) + +Here are some hints on how to successfully submit patches inline using +Thunderbird. + +This recipe appears to work with the current [*1*] Thunderbird from Suse. + +The following Thunderbird extensions are needed: + AboutConfig 0.5 + http://aboutconfig.mozdev.org/ + External Editor 0.5.4 + http://extensionroom.mozdev.org/more-info/exteditor + +1) Prepare the patch as a text file using your method of choice. + +2) Before opening a compose window, use Edit->Account Settings to +uncheck the "Compose messages in HTML format" setting in the +"Composition & Addressing" panel of the account to be used to send the +patch. [*2*] + +3) In the main Thunderbird window, _before_ you open the compose window +for the patch, use Tools->about:config to set the following to the +indicated values: + mailnews.send_plaintext_flowed => false + mailnews.wraplength => 999 + +4) Open a compose window and click the external editor icon. + +5) In the external editor window, read in the patch file and exit the +editor normally. + +6) Back in the compose window: Add whatever other text you wish to the +message, complete the addressing and subject fields, and press send. + +7) Optionally, undo the about:config/account settings changes made in +steps 2 & 3. + + +[Footnotes] +*1* Version 1.0 (20041207) from the MozillaThunderbird-1.0-5 rpm of Suse +9.3 professional updates. + +*2* It may be possible to do this with about:config and the following +settings but I haven't tried, yet. + mail.html_compose => false + mail.identity.default.compose_html => false + mail.identity.id?.compose_html => false + + + -- cgit v1.2.3 From 5f5608bcec417d4c92ac727fdcc83563730c21e9 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 27 Aug 2005 13:54:42 -0700 Subject: [PATCH] Make .git directory validation code test HEAD Inspired by a report by Kalle Valo, this changes git-sh-setup-script and the "setup_git_directory()" function to test that $GIT_DIR/HEAD is a symlink, since a number of core git features depend on that these days. We used to allow a regular file there, but git-fsck-cache has been complaining about that for a while, and anything that uses branches depends on the HEAD file being a symlink, so let's just encode that as a fundamental requirement. Before, a non-symlink HEAD file would appear to work, but have subtle bugs like not having the HEAD show up as a valid reference (because it wasn't under "refs"). Now, we will complain loudly, and the user can fix it up trivially instead of getting strange behaviour. This also removes the tests for "$GIT_DIR" and "$GIT_OBJECT_DIRECTORY" being directories, since the other tests will implicitly test for that anyway (ie the tests for HEAD, refs and 00 would fail). Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- git-sh-setup-script | 3 +-- setup.c | 31 ++++++++++++++++++++----------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/git-sh-setup-script b/git-sh-setup-script index 5bf471f781..84e15df1bc 100755 --- a/git-sh-setup-script +++ b/git-sh-setup-script @@ -11,7 +11,6 @@ die() { exit 1 } -[ -d "$GIT_DIR" ] && +[ -h "$GIT_DIR/HEAD" ] && [ -d "$GIT_DIR/refs" ] && -[ -d "$GIT_OBJECT_DIRECTORY" ] && [ -d "$GIT_OBJECT_DIRECTORY/00" ] diff --git a/setup.c b/setup.c index b8789de5c5..258da17615 100644 --- a/setup.c +++ b/setup.c @@ -72,6 +72,24 @@ const char **get_pathspec(const char *prefix, char **pathspec) return (const char **) pathspec; } +/* + * Test it it looks like we're at the top + * level git directory. We want to see a + * + * - a HEAD symlink and a refs/ directory under ".git" + * - either a .git/objects/ directory _or_ the proper + * GIT_OBJECT_DIRECTORY environment variable + */ +static int is_toplevel_directory(void) +{ + struct stat st; + + return !lstat(".git/HEAD", &st) && + S_ISLNK(st.st_mode) && + !access(".git/refs/", X_OK) && + (gitenv(DB_ENVIRONMENT) || !access(".git/objects/", X_OK)); +} + const char *setup_git_directory(void) { static char cwd[PATH_MAX+1]; @@ -89,17 +107,8 @@ const char *setup_git_directory(void) offset = len = strlen(cwd); for (;;) { - /* - * We always want to see a .git/refs/ subdirectory - */ - if (!access(".git/refs/", X_OK)) { - /* - * Then we need either a GIT_OBJECT_DIRECTORY define - * or a .git/objects/ directory - */ - if (gitenv(DB_ENVIRONMENT) || !access(".git/objects/", X_OK)) - break; - } + if (is_toplevel_directory()) + break; chdir(".."); do { if (!offset) -- cgit v1.2.3 From 9a9cbb6e9f2a5ceca16cae2a959a7162abc36c54 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 10:37:17 -0700 Subject: Barf nicely when "git push" is run without parameter. Saying "internal error" makes it look like my fault ;-). Signed-off-by: Junio C Hamano --- git-push-script | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/git-push-script b/git-push-script index 5fa5af2af8..744ee7e7dc 100755 --- a/git-push-script +++ b/git-push-script @@ -26,6 +26,10 @@ do esac shift done +case "$#" in +0) + die "Where would you want to push today?" ;; +esac . git-parse-remote-script remote=$(get_remote_url "$@") -- cgit v1.2.3 From 9804b7dc1974d59d4d37c37ba4624bb835456207 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 16:53:26 -0700 Subject: Show the branch name more prominently in "git status". When not working on "master" branch, remind the user at the beginning of the status message, not at the end. Signed-off-by: Junio C Hamano --- git-commit-script | 4 ++-- git-status-script | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/git-commit-script b/git-commit-script index e47a090c97..4987e37861 100755 --- a/git-commit-script +++ b/git-commit-script @@ -195,8 +195,8 @@ else fi if [ "$?" != "0" -a ! -f $GIT_DIR/MERGE_HEAD ] then - sed -ne '/^#/p' .editmsg - rm .editmsg + rm -f .editmsg + git-status-script exit 1 fi case "$no_edit" in diff --git a/git-status-script b/git-status-script index 947cc21975..1999a66979 100755 --- a/git-status-script +++ b/git-status-script @@ -28,6 +28,11 @@ report () { [ "$header" ] } +branch=`readlink "$GIT_DIR/HEAD"` +case "$branch" in +refs/heads/master) ;; +*) echo "# On branch $branch" ;; +esac git-update-cache --refresh >/dev/null 2>&1 git-diff-cache -M --cached HEAD | sed 's/^://' | report "Updated but not checked in" "will commit" committable="$?" @@ -37,10 +42,4 @@ then echo "nothing to commit" exit 1 fi -branch=`readlink "$GIT_DIR/HEAD"` -case "$branch" in -refs/heads/master) ;; -*) echo "# -# On branch $branch" ;; -esac exit 0 -- cgit v1.2.3 From ba966b957908248396402acd785d10ba1da07294 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 02:12:50 -0700 Subject: Teach git-status-script about git-ls-files --others When there is non-empty $GIT_DIR/info/exclude file, use it along with .gitignore per-directory exclude pattern files (which was a convention agreed on the list while ago and is compatible with Cogito) to generate a list of ignored files as well. Signed-off-by: Junio C Hamano (cherry picked from d330948a5ff0df55c2f12627c0583b4e16f1ea4d commit) --- git-status-script | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/git-status-script b/git-status-script index 1999a66979..1696f23e04 100755 --- a/git-status-script +++ b/git-status-script @@ -1,4 +1,7 @@ #!/bin/sh +# +# Copyright (c) 2005 Linus Torvalds +# . git-sh-setup-script || die "Not a git archive" report () { @@ -33,10 +36,35 @@ case "$branch" in refs/heads/master) ;; *) echo "# On branch $branch" ;; esac + git-update-cache --refresh >/dev/null 2>&1 -git-diff-cache -M --cached HEAD | sed 's/^://' | report "Updated but not checked in" "will commit" + +git-diff-cache -M --cached HEAD | +sed 's/^://' | +report "Updated but not checked in" "will commit" + committable="$?" -git-diff-files | sed 's/^://' | report "Changed but not updated" "use git-update-cache to mark for commit" + +git-diff-files | +sed 's/^://' | +report "Changed but not updated" "use git-update-cache to mark for commit" + +if grep -v '^#' "$GIT_DIR/info/exclude" >/dev/null 2>&1 +then + git-ls-files --others \ + --exclude-from="$GIT_DIR/info/exclude" \ + --exclude-per-directory=.gitignore | + sed -e ' + 1i\ +#\ +# Ignored files:\ +# (use "git add" to add to commit)\ +# + s/^/# / + $a\ +#' +fi + if [ "$committable" == "0" ] then echo "nothing to commit" -- cgit v1.2.3 From e70a165d3db26dbab62e3430553a21d5e97b74ec Mon Sep 17 00:00:00 2001 From: Robert Fitzsimons Date: Sun, 28 Aug 2005 15:24:27 +0000 Subject: [PATCH] Fix git patch header processing in git-apply. Stop processing and return NULL if we encounter a '\n' character before we have two matching names in the git header. Signed-off-by: Robert Fitzsimons Signed-off-by: Junio C Hamano --- apply.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apply.c b/apply.c index 7c1a8411f2..3ebbf6b1dc 100644 --- a/apply.c +++ b/apply.c @@ -387,7 +387,7 @@ static char *git_header_name(char *line) default: continue; case '\n': - break; + return NULL; case '\t': case ' ': second = name+len; for (;;) { -- cgit v1.2.3 From ff3412ee1f74cc267e6d65c03c5fd8ea2214fbe7 Mon Sep 17 00:00:00 2001 From: Robert Fitzsimons Date: Sun, 28 Aug 2005 15:25:06 +0000 Subject: [PATCH] New git-apply test cases for patches with mulitple fragments. Added a test case for patches with multiple fragments. Signed-off-by: Robert Fitzsimons Signed-off-by: Junio C Hamano --- t/t4109-apply-multifrag.sh | 176 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 t/t4109-apply-multifrag.sh diff --git a/t/t4109-apply-multifrag.sh b/t/t4109-apply-multifrag.sh new file mode 100644 index 0000000000..5988e1ae4c --- /dev/null +++ b/t/t4109-apply-multifrag.sh @@ -0,0 +1,176 @@ +#!/bin/sh +# +# Copyright (c) 2005 Junio C Hamano +# Copyright (c) 2005 Robert Fitzsimons +# + +test_description='git-apply test patches with multiple fragments. + +' +. ./test-lib.sh + +# setup + +cat > patch1.patch <<\EOF +diff --git a/main.c b/main.c +new file mode 100644 +--- /dev/null ++++ b/main.c +@@ -0,0 +1,23 @@ ++#include ++ ++int func(int num); ++void print_int(int num); ++ ++int main() { ++ int i; ++ ++ for (i = 0; i < 10; i++) { ++ print_int(func(i)); ++ } ++ ++ return 0; ++} ++ ++int func(int num) { ++ return num * num; ++} ++ ++void print_int(int num) { ++ printf("%d", num); ++} ++ +EOF +cat > patch2.patch <<\EOF +diff --git a/main.c b/main.c +--- a/main.c ++++ b/main.c +@@ -1,7 +1,9 @@ ++#include + #include + + int func(int num); + void print_int(int num); ++void print_ln(); + + int main() { + int i; +@@ -10,6 +12,8 @@ + print_int(func(i)); + } + ++ print_ln(); ++ + return 0; + } + +@@ -21,3 +25,7 @@ + printf("%d", num); + } + ++void print_ln() { ++ printf("\n"); ++} ++ +EOF +cat > patch3.patch <<\EOF +diff --git a/main.c b/main.c +--- a/main.c ++++ b/main.c +@@ -1,9 +1,7 @@ +-#include + #include + + int func(int num); + void print_int(int num); +-void print_ln(); + + int main() { + int i; +@@ -12,8 +10,6 @@ + print_int(func(i)); + } + +- print_ln(); +- + return 0; + } + +@@ -25,7 +21,3 @@ + printf("%d", num); + } + +-void print_ln() { +- printf("\n"); +-} +- +EOF +cat > patch4.patch <<\EOF +diff --git a/main.c b/main.c +--- a/main.c ++++ b/main.c +@@ -1,13 +1,14 @@ + #include + + int func(int num); +-void print_int(int num); ++int func2(int num); + + int main() { + int i; + + for (i = 0; i < 10; i++) { +- print_int(func(i)); ++ printf("%d", func(i)); ++ printf("%d", func3(i)); + } + + return 0; +@@ -17,7 +18,7 @@ + return num * num; + } + +-void print_int(int num) { +- printf("%d", num); ++int func2(int num) { ++ return num * num * num; + } + +EOF + +test_expect_success "S = git-apply (1)" \ + 'git-apply patch1.patch patch2.patch' +mv main.c main.c.git + +test_expect_success "S = patch (1)" \ + 'cat patch1.patch patch2.patch | patch -p1' + +test_expect_success "S = cmp (1)" \ + 'cmp main.c.git main.c' + +rm -f main.c main.c.git + +test_expect_success "S = git-apply (2)" \ + 'git-apply patch1.patch patch2.patch patch3.patch' +mv main.c main.c.git + +test_expect_success "S = patch (2)" \ + 'cat patch1.patch patch2.patch patch3.patch | patch -p1' + +test_expect_success "S = cmp (2)" \ + 'cmp main.c.git main.c' + +rm -f main.c main.c.git + +test_expect_success "S = git-apply (3)" \ + 'git-apply patch1.patch patch4.patch' +mv main.c main.c.git + +test_expect_success "S = patch (3)" \ + 'cat patch1.patch patch4.patch | patch -p1' + +test_expect_success "S = cmp (3)" \ + 'cmp main.c.git main.c' + +test_done + -- cgit v1.2.3 From debb9d84445239ffbc630611548af630fb8e1e7a Mon Sep 17 00:00:00 2001 From: Robert Fitzsimons Date: Sun, 28 Aug 2005 15:25:10 +0000 Subject: [PATCH] New git-apply test cases for scanning forwards and backwards. Added a new test case for the scanning forwards and backwards for the correct location to apply a patch fragment. Signed-off-by: Robert Fitzsimons Signed-off-by: Junio C Hamano --- t/t4110-apply-scan.sh | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 t/t4110-apply-scan.sh diff --git a/t/t4110-apply-scan.sh b/t/t4110-apply-scan.sh new file mode 100644 index 0000000000..005f744816 --- /dev/null +++ b/t/t4110-apply-scan.sh @@ -0,0 +1,101 @@ +#!/bin/sh +# +# Copyright (c) 2005 Junio C Hamano +# Copyright (c) 2005 Robert Fitzsimons +# + +test_description='git-apply test for patches which require scanning forwards and backwards. + +' +. ./test-lib.sh + +# setup + +cat > patch1.patch <<\EOF +diff --git a/new.txt b/new.txt +new file mode 100644 +--- /dev/null ++++ b/new.txt +@@ -0,0 +1,12 @@ ++a1 ++a11 ++a111 ++a1111 ++b1 ++b11 ++b111 ++b1111 ++c1 ++c11 ++c111 ++c1111 +EOF +cat > patch2.patch <<\EOF +diff --git a/new.txt b/new.txt +--- a/new.txt ++++ b/new.txt +@@ -1,7 +1,3 @@ +-a1 +-a11 +-a111 +-a1111 + b1 + b11 + b111 +EOF +cat > patch3.patch <<\EOF +diff --git a/new.txt b/new.txt +--- a/new.txt ++++ b/new.txt +@@ -6,6 +6,10 @@ + b11 + b111 + b1111 ++b2 ++b22 ++b222 ++b2222 + c1 + c11 + c111 +EOF +cat > patch4.patch <<\EOF +diff --git a/new.txt b/new.txt +--- a/new.txt ++++ b/new.txt +@@ -1,3 +1,7 @@ ++a1 ++a11 ++a111 ++a1111 + b1 + b11 + b111 +EOF +cat > patch5.patch <<\EOF +diff --git a/new.txt b/new.txt +--- a/new.txt ++++ b/new.txt +@@ -10,3 +10,7 @@ + c11 + c111 + c1111 ++c2 ++c22 ++c222 ++c2222 +EOF + +test_expect_success "S = git-apply scan" \ + 'git-apply patch1.patch patch2.patch patch3.patch patch4.patch patch5.patch' +mv new.txt apply.txt + +test_expect_success "S = patch scan" \ + 'cat patch1.patch patch2.patch patch3.patch patch4.patch patch5.patch | patch' +mv new.txt patch.txt + +test_expect_success "S = cmp" \ + 'cmp apply.txt patch.txt' + +test_done + -- cgit v1.2.3 From f58b7432d286d30117e76aeca5515c67b3ba5bb0 Mon Sep 17 00:00:00 2001 From: A Large Angry SCM Date: Sun, 28 Aug 2005 17:16:01 -0400 Subject: [PATCH] Add some documentation. Add some documentation. Text taken from the the commit messages and the command sources. Signed-off-by: Signed-off-by: Junio C Hamano --- Documentation/git-mailsplit.txt | 18 ++++++++---------- Documentation/git-stripspace.txt | 15 +++++---------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/Documentation/git-mailsplit.txt b/Documentation/git-mailsplit.txt index 617276a011..789d3a9f1e 100644 --- a/Documentation/git-mailsplit.txt +++ b/Documentation/git-mailsplit.txt @@ -3,26 +3,24 @@ git-mailsplit(1) NAME ---- -git-mailsplit - Some git command not yet documented. - +git-mailsplit - Totally braindamaged mbox splitter program. SYNOPSIS -------- -'git-mailsplit' [ --option ] ... +'git-mailsplit' DESCRIPTION ----------- -Does something not yet documented. - +Splits a mbox file into a list of files: "0001" "0002" .. in the specified +directory so you can process them further from there. OPTIONS ------- ---option:: - Some option not yet documented. - -...:: - Some argument not yet documented. +:: + Mbox file to split. +:: + Directory in which to place the individual messages. Author ------ diff --git a/Documentation/git-stripspace.txt b/Documentation/git-stripspace.txt index fc87146d59..d1a550c202 100644 --- a/Documentation/git-stripspace.txt +++ b/Documentation/git-stripspace.txt @@ -3,26 +3,21 @@ git-stripspace(1) NAME ---- -git-stripspace - Some git command not yet documented. +git-stripspace - Fileter out empty lines. SYNOPSIS -------- -'git-stripspace' [ --option ] ... +'git-stripspace' < DESCRIPTION ----------- -Does something not yet documented. - +Remove multiple empty lines, and empty lines at beginning and end. OPTIONS ------- ---option:: - Some option not yet documented. - -...:: - Some argument not yet documented. - +:: + Byte stream to act on. Author ------ -- cgit v1.2.3 From a698bafb5529f7a1dbf6c105428fff8eae564484 Mon Sep 17 00:00:00 2001 From: A Large Angry SCM Date: Sun, 28 Aug 2005 17:17:15 -0400 Subject: [PATCH] Add footnote about Thunderbird about trimming trailing WS. Add footnote about Thunderbird about trimming trailing WS. Signed-off-by: Signed-off-by: Junio C Hamano --- Documentation/SubmittingPatches | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 15b917f786..dea1fa8c95 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -191,7 +191,7 @@ Thunderbird (A Large Angry SCM) Here are some hints on how to successfully submit patches inline using -Thunderbird. +Thunderbird. [*3*] This recipe appears to work with the current [*1*] Thunderbird from Suse. @@ -236,5 +236,7 @@ settings but I haven't tried, yet. mail.identity.default.compose_html => false mail.identity.id?.compose_html => false - +*3* Even after following these hints, Thunderbird will still trim +trailing whitespace from each line. I currently have no work around for +for this issue. -- cgit v1.2.3 From 9847f7e0db8359b3932fd51290d777610090c33f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 28 Aug 2005 17:54:18 -0700 Subject: Update SubmittingPatches. - It does not matter how I read git list. What matters is that I do not necessarily read everything on it. - Talk a bit about how to use applymbox to check one's own patches. - Talk a bit about PGP signed patches. Signed-off-by: Junio C Hamano --- Documentation/SubmittingPatches | 62 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 7 deletions(-) diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index dea1fa8c95..fd9881f26c 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -73,14 +73,25 @@ MIME-attached change being accepted, but it makes it more likely that it will be postponed. Exception: If your mailer is mangling patches then someone may ask -you to re-send them using MIME. +you to re-send them using MIME, that is OK. -Note that your maintainer does not subscribe to the git mailing -list (he reads it via mail-to-news gateway). If your patch is -for discussion first, send it "To:" the mailing list, and -optoinally "cc:" him. If it is trivially correct or after list -discussion reached consensus, send it "To:" the maintainer and -optionally "cc:" the list. +Do not PGP sign your patch, at least for now. Most likely, your +maintainer or other people on the list would not have your PGP +key and would not bother obtaining it anyway. Your patch is not +judged by who you are; a good patch from an unknown origin has a +far better chance of being accepted than a patch from a known, +respected origin that is done poorly or does incorrect things. + +If you really really really really want to do a PGP signed +patch, format it as "multipart/signed", not a text/plain message +that starts with '-----BEGIN PGP SIGNED MESSAGE-----'. That is +not a text/plain, it's something else. + +Note that your maintainer does not necessarily read everything +on the git mailing list. If your patch is for discussion first, +send it "To:" the mailing list, and optionally "cc:" him. If it +is trivially correct or after the list reached a consensus, send +it "To:" the maintainer and optionally "cc:" the list. (6) Sign your work @@ -143,6 +154,43 @@ I have seen: * Non empty context lines that have one extra whitespace at the beginning. +One test you could do yourself if your MUA is set up correctly is: + +* Send the patch to yourself, exactly the way you would, except + To: and Cc: lines, which would not contain the list and + maintainer address. + +* Save that patch to a file in UNIX mailbox format. Call it say + a.patch. + +* Try to apply to the tip of the "master" branch from the + git.git public repository: + + $ git fetch http://kernel.org/pub/scm/git/git.git master:test-apply + $ git checkout test-apply + $ git reset --hard + $ git applymbox a.patch + +If it does not apply correctly, there can be various reasons. + +* Your patch itself does not apply cleanly. That is _bad_ but + does not have much to do with your MUA. Please rebase the + patch appropriately. + +* Your MUA corrupted your patch; applymbox would complain that + the patch does not apply. Look at .dotest/ subdirectory and + see what 'patch' file contains and check for the common + corruption patterns mentioned above. + +* While you are at it, check what are in 'info' and + 'final-commit' files as well. If what is in 'final-commit' is + not exactly what you would want to see in the commit log + message, it is very likely that your maintainer would end up + hand editing the log message when he applies your patch. + Things like "Hi, this is my first patch.\n", if you really + want to put in the patch e-mail, should come after the + three-dash line that signals the end of the commit message. + Pine ---- -- cgit v1.2.3