Skip to content

teach branch-specific options for format-patch

Denton Liu git 4 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest posting 2/20 of 8 patches 0 repliesNew
  2. v3 posting 1/28 patches 1 replySuperseded
  3. v26 patches 3 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v17 patches6 repliesSuperseded

Changes in v3 from the cover letter

* Replaced format.<branch-name>.coverSubject and --cover-subject with format.inferCoverSubject and --infer-cover-subject which reads the subject from the branch description
* Do not let git branch -d delete format.<branch-name>.* configs
* More documentation cleanup
* Taught format-patch to read format.<branch-name>.outputDirectory as well

Patches in v3 posting 2/2 No applies recorded yet

None of the 8 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [RESEND PATCH v3 0/8] teach branch-specific options for format-patch

Hi all,

Although 'config: learn the "onbranch:" includeIf condition'[1] seems to be on track for "next", the content in this patchset is not entirely superseded by it.

Patches 1 and 2 should be relatively uncontroversial since they just do a bit of cleanup.

Patch 3 is a new feature that isn't included in the config onbranch stuff at all. In introduces the --infer-cover-subject command-line option which would allow a cover-letter's subject to be automatically inferred from the branch's description.

Finally, patches 4-8 are all needed to implement branch-specific format-patch options. Although this behaviour can be replicated by the config onbranch patches, it's not a direct replacement. Consider the following:

	$ git checkout foo
	$ git format-patch master..bar

With config onbranch, this would generate patches using foo's settings but with this patchset, we would generate patches using bar's settings, which seems more desirable and intuitive for users.

I suppose if adding a format.<branch>.* option is controversial since we won't be sure if we're adding other intermediate format keys, we could follow onbranch convention and use format.forbranch:<branch>.* as configuration keys instead.

Thanks,

Denton

[1]: https://public-inbox.org/git/49e22269d5a66d1975fca71a300e9099f46e1c40.1559769658.git.liu.denton@gmail.com/

Changes since v2:

* Replaced format.<branch-name>.coverSubject and --cover-subject with format.inferCoverSubject and --infer-cover-subject which reads the subject from the branch description
* Do not let git branch -d delete format.<branch-name>.* configs
* More documentation cleanup
* Taught format-patch to read format.<branch-name>.outputDirectory as well

Changes since v1:

* Used format.<branch-name>.* variables instead of branch.<branch-name>.*

Denton Liu (8):
t4014: clean up style
Doc: add more detail for git-format-patch
format-patch: infer cover letter from branch description
format-patch: move extra_headers logic later
string-list: create string_list_append_all
format-patch: read branch-specific To: and Cc: headers
format-patch: move output_directory logic later
format-patch: read branch-specific output directory

 Documentation/config/format.txt    |  17 +-
 Documentation/git-format-patch.txt |  44 +-
 builtin/log.c                      | 237 ++++++---
 string-list.c                      |   9 +
 string-list.h                      |   7 +
 t/t4014-format-patch.sh            | 739 +++++++++++++++++------------
 6 files changed, 667 insertions(+), 386 deletions(-)

Range-diff against v2:

1:  75474e18f4 = 1:  650f04bc04 t4014: clean up style
2:  9ae349bf8a ! 2:  14b40b1dec Doc: add more detail for git-format-patch

@@ -9,7 +9,10 @@

In addition, document the special value of --base=auto.

- Finally, while we're at it, surround option arguments with <>.
+ Next, while we're at it, surround option arguments with <>.
+
+ Finally, document the format.outputDirectory config and change
+ format.coverletter to use camelcase.

@@ -67,3 +70,25 @@

--root::
Treat the revision argument as a <revision range>, even if it
+@@
+ -------------
+ You can specify extra mail header lines to be added to each message,
+ defaults for the subject prefix and file suffix, number patches when +-outputting more than one patch, add "To" or "Cc:" headers, configure +-attachments, and sign off patches with configuration variables. ++outputting more than one patch, add "To:" or "Cc:" headers, configure ++attachments, change the patch output directory, and sign off patches ++with configuration variables.
+
+ ------------
+ [format]
+@@
+ cc = <email>
+ attach [ = mime-boundary-string ]
+ signOff = true
+- coverletter = auto
++ outputDirectory = <directory>
++ coverLetter = auto
+ ------------
+
+

3:  c0403f5139 < -:  ---------- format-patch: make cover letter subject configurable
-:  ---------- > 3:  ca2b4c21c1 format-patch: infer cover letter from branch description
4:  534c6fd48a ! 4:  82a56a0d76 format-patch: move extra_headers logic later

@@ -7,10 +7,10 @@
logic later in the function so that this happens. (This patch is best viewed with git diff --color-moved.)

- Note that this logic only depends on the git_config and
+ Note that this logic only depends on git_config and
repo_init_revisions and is depended on by the patch creation logic
- which is directly below it so this move is effectively a no-op as
- no dependencies being reordered.
+ which is directly below it so this move is effectively a no-op as no
+ dependencies being reordered.

5:  491297c40a = 5:  3554164deb string-list: create string_list_append_all
6:  e2c71fa593 ! 6:  6ad1b25858 format-patch: read branch-specific To: and Cc: headers

@@ -59,29 +59,20 @@
far (from config or command line).

@@
- -------------
- You can specify extra mail header lines to be added to each message,
- defaults for the subject prefix and file suffix, number patches when --outputting more than one patch, add "To" or "Cc:" headers, configure -+outputting more than one patch, add "To:" or "Cc:" headers, configure
- attachments, and sign off patches with configuration variables. -
- ------------
-@@
+ inferCoverSubject = true
------------

- In addition, for a specific branch, you can specify a custom cover --letter subject.
++In addition, for a specific branch, you can specify a custom cover
+letter subject, and add additional "To:" or "Cc:" headers.
-
- ------------
- [format "branch-name"]
- coverSubject = "subject for branch-name only"
++
++------------
++[format "branch-name"]
+ to = <email>
+ cc = <email>
- ------------
++------------

DISCUSSION
+ ----------

diff --git a/builtin/log.c b/builtin/log.c
--- a/builtin/log.c
@@ -96,7 +87,7 @@
static void add_header(const char *value)
{
@@
- return 0;
+ fprintf(rev->diffopt.file, "\n");
}

+static void add_branch_headers(struct rev_info *rev, const char *branch_name)
@@ -186,25 +177,6 @@
strbuf_addstr(&buf, extra_hdr.items[i].string); strbuf_addch(&buf, '\n');

- diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
- --- a/t/t3200-branch.sh
- +++ b/t/t3200-branch.sh
-@@
-
- test_expect_success 'test deleting branch deletes branch config' '
- git config format.my7.coverSubject "cover subject" &&
-+ git config format.my7.to "To Me <[email protected]>" &&
-+ git config format.my7.cc "Cc Me <[email protected]>" &&
- git branch -d my7 &&
- test -z "$(git config branch.my7.remote)" &&
- test -z "$(git config branch.my7.merge)" &&
- test -z "$(git config format.my7.coverSubject)"
-+ test -z "$(git config format.my7.to)" &&
-+ test -z "$(git config format.my7.cc)"
- '
-
- test_expect_success 'test deleting branch without config' ' -
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh --- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh

-:  ---------- > 7:  3bc1b95a4e format-patch: move output_directory logic later
-:  ---------- > 8:  2cf7c77f59 format-patch: read branch-specific output directory
Signature · 1 line
2.22.0.355.g3bfa262345