{"thread":{"id":"18382","subject":"[PATCH 3/3] format-patch: --attach/inline uses filename instead of sha1","startedAt":"2009-03-18T19:51:25Z","lastAt":"2009-03-18T19:51:25Z","messageCount":1,"participants":["Stephen Boyd"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"108412","messageId":"780e0a6b0903181251ua7b6992y45407c8ee806011c@mail.gmail.com","threadId":"18382","inReplyTo":null,"subject":"[PATCH 3/3] format-patch: --attach/inline uses filename instead of sha1","fromName":"Stephen Boyd","fromEmail":"bebarino@gmail.com","sentAt":"2009-03-18T19:51:25Z","receivedAt":"2009-03-18T19:51:25Z","isPatch":true,"sender":{"key":"bebarino@gmail.com","avatar":"https://avatars.githubusercontent.com/u/38832?v=4"},"body":"Currently when format-patch is used with --attach or --inline the patch\nattachment has the sha1 of the commit for the filename. This replaces\nthe sha1 with the filename used by format-patch when outputting to files.\n\nThis allows users to do something like:\n\n    git format-patch --attach --suffix=.diff --numbered-files HEAD~~\n\nand get two patches attached to the email with filenames 1.diff and\n2.diff\n\nSigned-off-by: Stephen Boyd <bebarino@gmail.com>\n---\nI'm not sure if adding fmt_patch_filename to the rev_info struct is a good idea.\n\n builtin-log.c                                      |    6 +++---\n log-tree.c                                         |    8 ++++----\n revision.h                                         |    1 +\n ....format-patch_--attach_--stdout_initial..master |   12 ++++++------\n ...format-patch_--attach_--stdout_initial..master^ |    8 ++++----\n ...ff.format-patch_--attach_--stdout_initial..side |    4 ++--\n ...tdout_--subject-prefix=TESTCASE_initial..master |   12 ++++++------\n ....format-patch_--inline_--stdout_initial..master |   12 ++++++------\n ...format-patch_--inline_--stdout_initial..master^ |    8 ++++----\n ...ormat-patch_--inline_--stdout_initial..master^^ |    4 ++--\n ...ff.format-patch_--inline_--stdout_initial..side |    4 ++--\n 11 files changed, 40 insertions(+), 39 deletions(-)\n\ndiff --git a/builtin-log.c b/builtin-log.c\nindex f2a687f..491cebb 100644\n--- a/builtin-log.c\n+++ b/builtin-log.c\n@@ -1104,9 +1104,9 @@ int cmd_format_patch(int argc, const char\n**argv, const char *prefix)\n \t\t * subject line.\n \t\t */\n \t\tsol = numbered_files ? NULL : strstr(commit->buffer, \"\\n\\n\")+2;\n-\t\tif (!use_stdout && reopen_stdout(get_patch_filename(sol,\n-\t\t\t\t\t\t\t\tkeep_subject,\n-\t\t\t\t\t\t\t\trev.nr)))\n+\t\trev.fmt_patch_filename = get_patch_filename(sol, keep_subject,\n+\t\t\t\t\t\t\t\trev.nr);\n+\t\tif (!use_stdout && reopen_stdout(rev.fmt_patch_filename))\n \t\t\tdie(\"Failed to create output files\");\n \t\tshown = log_tree_commit(&rev, commit);\n \t\tfree(commit->buffer);\ndiff --git a/log-tree.c b/log-tree.c\nindex 9565c18..dc37d16 100644\n--- a/log-tree.c\n+++ b/log-tree.c\n@@ -245,14 +245,14 @@ void log_write_email_headers(struct rev_info\n*opt, const char *name,\n \t\tsnprintf(buffer, sizeof(buffer) - 1,\n \t\t\t \"\\n--%s%s\\n\"\n \t\t\t \"Content-Type: text/x-patch;\"\n-\t\t\t \" name=\\\"%s.diff\\\"\\n\"\n+\t\t\t \" name=\\\"%s\\\"\\n\"\n \t\t\t \"Content-Transfer-Encoding: 8bit\\n\"\n \t\t\t \"Content-Disposition: %s;\"\n-\t\t\t \" filename=\\\"%s.diff\\\"\\n\\n\",\n+\t\t\t \" filename=\\\"%s\\\"\\n\\n\",\n \t\t\t mime_boundary_leader, opt->mime_boundary,\n-\t\t\t name,\n+\t\t\t opt->fmt_patch_filename,\n \t\t\t opt->no_inline ? \"attachment\" : \"inline\",\n-\t\t\t name);\n+\t\t\t opt->fmt_patch_filename);\n \t\topt->diffopt.stat_sep = buffer;\n \t}\n \t*subject_p = subject;\ndiff --git a/revision.h b/revision.h\nindex ad123d7..c34eac9 100644\n--- a/revision.h\n+++ b/revision.h\n@@ -86,6 +86,7 @@ struct rev_info {\n \tstruct log_info *loginfo;\n \tint\t\tnr, total;\n \tconst char\t*mime_boundary;\n+\tconst char\t*fmt_patch_filename;\n \tchar\t\t*message_id;\n \tstruct string_list *ref_message_ids;\n \tconst char\t*add_signoff;\ndiff --git a/t/t4013/diff.format-patch_--attach_--stdout_initial..master\nb/t/t4013/diff.format-patch_--attach_--stdout_initial..master\nindex e5ab744..ce49bd6 100644\n--- a/t/t4013/diff.format-patch_--attach_--stdout_initial..master\n+++ b/t/t4013/diff.format-patch_--attach_--stdout_initial..master\n@@ -22,9 +22,9 @@ This is the second commit.\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Type: text/x-patch; name=\"0001-Second.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: attachment;\nfilename=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Disposition: attachment; filename=\"0001-Second.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..8422d40 100644\n@@ -80,9 +80,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Type: text/x-patch; name=\"0002-Third.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: attachment;\nfilename=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Disposition: attachment; filename=\"0002-Third.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 8422d40..cead32e 100644\n@@ -129,9 +129,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Type: text/x-patch; name=\"0003-Side.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: attachment;\nfilename=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Disposition: attachment; filename=\"0003-Side.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..7289e35 100644\ndiff --git a/t/t4013/diff.format-patch_--attach_--stdout_initial..master^\nb/t/t4013/diff.format-patch_--attach_--stdout_initial..master^\nindex 2c71d20..5f1b238 100644\n--- a/t/t4013/diff.format-patch_--attach_--stdout_initial..master^\n+++ b/t/t4013/diff.format-patch_--attach_--stdout_initial..master^\n@@ -22,9 +22,9 @@ This is the second commit.\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Type: text/x-patch; name=\"0001-Second.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: attachment;\nfilename=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Disposition: attachment; filename=\"0001-Second.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..8422d40 100644\n@@ -80,9 +80,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Type: text/x-patch; name=\"0002-Third.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: attachment;\nfilename=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Disposition: attachment; filename=\"0002-Third.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 8422d40..cead32e 100644\ndiff --git a/t/t4013/diff.format-patch_--attach_--stdout_initial..side\nb/t/t4013/diff.format-patch_--attach_--stdout_initial..side\nindex 38f7902..4a2364a 100644\n--- a/t/t4013/diff.format-patch_--attach_--stdout_initial..side\n+++ b/t/t4013/diff.format-patch_--attach_--stdout_initial..side\n@@ -20,9 +20,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Type: text/x-patch; name=\"0001-Side.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: attachment;\nfilename=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Disposition: attachment; filename=\"0001-Side.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..7289e35 100644\ndiff --git a/t/t4013/diff.format-patch_--inline_--stdout_--subject-prefix=TESTCASE_initial..master\nb/t/t4013/diff.format-patch_--inline_--stdout_--subject-prefix=TESTCASE_initial..master\nindex 58f8a7b..ca3f60b 100644\n--- a/t/t4013/diff.format-patch_--inline_--stdout_--subject-prefix=TESTCASE_initial..master\n+++ b/t/t4013/diff.format-patch_--inline_--stdout_--subject-prefix=TESTCASE_initial..master\n@@ -22,9 +22,9 @@ This is the second commit.\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Type: text/x-patch; name=\"0001-Second.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Disposition: inline; filename=\"0001-Second.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..8422d40 100644\n@@ -80,9 +80,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Type: text/x-patch; name=\"0002-Third.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Disposition: inline; filename=\"0002-Third.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 8422d40..cead32e 100644\n@@ -129,9 +129,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Type: text/x-patch; name=\"0003-Side.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Disposition: inline; filename=\"0003-Side.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..7289e35 100644\ndiff --git a/t/t4013/diff.format-patch_--inline_--stdout_initial..master\nb/t/t4013/diff.format-patch_--inline_--stdout_initial..master\nindex 9e7bbdf..08f2301 100644\n--- a/t/t4013/diff.format-patch_--inline_--stdout_initial..master\n+++ b/t/t4013/diff.format-patch_--inline_--stdout_initial..master\n@@ -22,9 +22,9 @@ This is the second commit.\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Type: text/x-patch; name=\"0001-Second.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Disposition: inline; filename=\"0001-Second.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..8422d40 100644\n@@ -80,9 +80,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Type: text/x-patch; name=\"0002-Third.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Disposition: inline; filename=\"0002-Third.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 8422d40..cead32e 100644\n@@ -129,9 +129,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Type: text/x-patch; name=\"0003-Side.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Disposition: inline; filename=\"0003-Side.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..7289e35 100644\ndiff --git a/t/t4013/diff.format-patch_--inline_--stdout_initial..master^\nb/t/t4013/diff.format-patch_--inline_--stdout_initial..master^\nindex f881f64..07f1230 100644\n--- a/t/t4013/diff.format-patch_--inline_--stdout_initial..master^\n+++ b/t/t4013/diff.format-patch_--inline_--stdout_initial..master^\n@@ -22,9 +22,9 @@ This is the second commit.\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Type: text/x-patch; name=\"0001-Second.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Disposition: inline; filename=\"0001-Second.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..8422d40 100644\n@@ -80,9 +80,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Type: text/x-patch; name=\"0002-Third.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff\"\n+Content-Disposition: inline; filename=\"0002-Third.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 8422d40..cead32e 100644\ndiff --git a/t/t4013/diff.format-patch_--inline_--stdout_initial..master^^\nb/t/t4013/diff.format-patch_--inline_--stdout_initial..master^^\nindex 4f258b8..29e00ab 100644\n--- a/t/t4013/diff.format-patch_--inline_--stdout_initial..master^^\n+++ b/t/t4013/diff.format-patch_--inline_--stdout_initial..master^^\n@@ -22,9 +22,9 @@ This is the second commit.\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Type: text/x-patch; name=\"0001-Second.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff\"\n+Content-Disposition: inline; filename=\"0001-Second.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..8422d40 100644\ndiff --git a/t/t4013/diff.format-patch_--inline_--stdout_initial..side\nb/t/t4013/diff.format-patch_--inline_--stdout_initial..side\nindex e86dce6..67633d4 100644\n--- a/t/t4013/diff.format-patch_--inline_--stdout_initial..side\n+++ b/t/t4013/diff.format-patch_--inline_--stdout_initial..side\n@@ -20,9 +20,9 @@ Content-Transfer-Encoding: 8bit\n\n\n --------------g-i-t--v-e-r-s-i-o-n\n-Content-Type: text/x-patch;\nname=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Type: text/x-patch; name=\"0001-Side.patch\"\n Content-Transfer-Encoding: 8bit\n-Content-Disposition: inline;\nfilename=\"c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a.diff\"\n+Content-Disposition: inline; filename=\"0001-Side.patch\"\n\n diff --git a/dir/sub b/dir/sub\n index 35d242b..7289e35 100644\n-- \n1.6.2\n"}]}