Why aren’t there cherry-pick requests?

One disadvantage to pull requests (aka merge requests) is lots and lots of merge commits.

It’s not the worst thing, but it does clutter the commit logs, and make for lots of unnecessary non-sequential history.

A - C - E - G
   /   /   /
  B   D   F

What I think would be better is to cherry-pick the commits.

A - B' - D' - F'

Of course I can do that myself, but one of the advantages in a pull request system like Github, Bitbucket, Stash, or Gerrit is the ability to do this through the interface, immediately following a review of the changes. And doing that manually wouldn’t show the pull request as accepted in the UI.

Why don’t pull request tools offer “cherry-pick requests”?


I understand the advantages of merges and non-sequential history in the general case. (Otherwise, I’d be using SVN.) I am specifically taking about one or two commit changes from transient branches. (Many tools even help you delete the branch right after merging.) A one-commit change is probably the most common case for pull requests.

6

The thing about pull requests is that it makes known that there are changes that someone wants to bring into the project.

If the owner/maintainer wants to cherry pick parts of the pull request, they can do that from that pull request.

And just because there is a pull request does not mean that the maintainer is not allowed, or incapable, of doing a rebase.

So this is indicative of a style that may be wanted in the history.

You can always display the history without the merge history, or even the other way around.

  • git log --merges
  • git log --no-merges

So it boils down to, I think:

  1. The project owner wanting to enforce, or not, a certain style of history
  2. The fact that you can get either set of information easily from Git itself, regardless.

You also mention that “A one-commit change is probably the most common case for pull requests” but I am not sure about that.

For one, the number of commits may be unknown due to the developers habits of doing micro-commits and then rebasing them. Also, it is common for me to see project owners asking for those commits to be squashed in the CONTRIBUTING.txt file, or other communication.

Edit: Of course, I can’t answer the question of why doesn’t X, Y and Z companies do something. Not sure anyone can, except for those entities.

4

I think there are some points to consider:

  1. Forge-focused development (pull requests)
  2. Using merges to mark where features where incorporated
  3. Rebase as cherry-picks
  4. Not wanting to change incoming commit messages

I think many projects that use Git can get very forge-focused. Meaning
that they end up using the information in the forge-only pull request
link.

The standard merge message is convenient for that:

Merged xzy into `master` (PR #789)

Now if you’re viewing the commit in some forge’s webapp then #789
could be a hyperlink to the pull request. And if the merge commit
message is nothing more than that line then they might need to open the
PR in order to view the description and the discussion.

Squash merges

The pseudo-merge variant “squash” also acts like this since they can be
also written as “Merged …”, i.e. with the same kind of information.

Rebase as cherry-picks

Arguably cherry-picks are an option on forges that allow you to
incorporate a pull request by way of a rebase + fast-forward.

Not wanting to change incoming commit messages

We’ve already talked about how merge commits can be used to add metadata
to an incorporated branch. In contrast, there is no culture for changing
commit messages in forge-based workflows.

I don’t mean changing the commit message proper but adding or modifying
metadata in the form of trailers.

Some projects, like the Git project, use a patch-based workflow with
signoffs. Which means that both the developer signs off the patch
when they send it out:

Implement X

Signed-off-by: John Smith <[email protected]>

And the integrator as well when they import the patch from their
mailbox:

Implement X

Signed-off-by: John Smith <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

These trailers are also used for other kinds of metadata about the
review process:

Implement X

Signed-off-by: John Smith <[email protected]>
Tested-by: Hobsbert Fedora <[email protected]>
Acked-by: Frank Wall <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

In this way, each patch (a future commit) can get their own metadata.

I haven’t seen any culture for this in forge-based (read: PRs)
workflows. But I see no reason why commits can’t be cherry-picked with
metadata about whence the PR:

Implement X

Pull-request: #654

Conclusion and personal opinion

Personally I prefer true merges on my own multi-commit pull requests. On
single-commit PRs I do prefer what is effectively a cherry-pick, since I
use a “squash merge” for those if I’m the one who is incorporating the
change.

But sometimes I want to make a small PR on top of another person’s
PR. For such smaller PRs I think this cherry-pick idea is nice, and that
creating a true merge is often overkill (and distracting). Then a
cherry-pick (or rebase) with some metadata about the provenance of the
change would work great, I think.

Include Y in X as well

Pull-request: #4935

Good question by the way.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa

Why aren’t there cherry-pick requests?

One disadvantage to pull requests (aka merge requests) is lots and lots of merge commits.

It’s not the worst thing, but it does clutter the commit logs, and make for lots of unnecessary non-sequential history.

A - C - E - G
   /   /   /
  B   D   F

What I think would be better is to cherry-pick the commits.

A - B' - D' - F'

Of course I can do that myself, but one of the advantages in a pull request system like Github, Bitbucket, Stash, or Gerrit is the ability to do this through the interface, immediately following a review of the changes. And doing that manually wouldn’t show the pull request as accepted in the UI.

Why don’t pull request tools offer “cherry-pick requests”?


I understand the advantages of merges and non-sequential history in the general case. (Otherwise, I’d be using SVN.) I am specifically taking about one or two commit changes from transient branches. (Many tools even help you delete the branch right after merging.) A one-commit change is probably the most common case for pull requests.

6

The thing about pull requests is that it makes known that there are changes that someone wants to bring into the project.

If the owner/maintainer wants to cherry pick parts of the pull request, they can do that from that pull request.

And just because there is a pull request does not mean that the maintainer is not allowed, or incapable, of doing a rebase.

So this is indicative of a style that may be wanted in the history.

You can always display the history without the merge history, or even the other way around.

  • git log --merges
  • git log --no-merges

So it boils down to, I think:

  1. The project owner wanting to enforce, or not, a certain style of history
  2. The fact that you can get either set of information easily from Git itself, regardless.

You also mention that “A one-commit change is probably the most common case for pull requests” but I am not sure about that.

For one, the number of commits may be unknown due to the developers habits of doing micro-commits and then rebasing them. Also, it is common for me to see project owners asking for those commits to be squashed in the CONTRIBUTING.txt file, or other communication.

Edit: Of course, I can’t answer the question of why doesn’t X, Y and Z companies do something. Not sure anyone can, except for those entities.

4

I think there are some points to consider:

  1. Forge-focused development (pull requests)
  2. Using merges to mark where features where incorporated
  3. Rebase as cherry-picks
  4. Not wanting to change incoming commit messages

I think many projects that use Git can get very forge-focused. Meaning
that they end up using the information in the forge-only pull request
link.

The standard merge message is convenient for that:

Merged xzy into `master` (PR #789)

Now if you’re viewing the commit in some forge’s webapp then #789
could be a hyperlink to the pull request. And if the merge commit
message is nothing more than that line then they might need to open the
PR in order to view the description and the discussion.

Squash merges

The pseudo-merge variant “squash” also acts like this since they can be
also written as “Merged …”, i.e. with the same kind of information.

Rebase as cherry-picks

Arguably cherry-picks are an option on forges that allow you to
incorporate a pull request by way of a rebase + fast-forward.

Not wanting to change incoming commit messages

We’ve already talked about how merge commits can be used to add metadata
to an incorporated branch. In contrast, there is no culture for changing
commit messages in forge-based workflows.

I don’t mean changing the commit message proper but adding or modifying
metadata in the form of trailers.

Some projects, like the Git project, use a patch-based workflow with
signoffs. Which means that both the developer signs off the patch
when they send it out:

Implement X

Signed-off-by: John Smith <[email protected]>

And the integrator as well when they import the patch from their
mailbox:

Implement X

Signed-off-by: John Smith <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

These trailers are also used for other kinds of metadata about the
review process:

Implement X

Signed-off-by: John Smith <[email protected]>
Tested-by: Hobsbert Fedora <[email protected]>
Acked-by: Frank Wall <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

In this way, each patch (a future commit) can get their own metadata.

I haven’t seen any culture for this in forge-based (read: PRs)
workflows. But I see no reason why commits can’t be cherry-picked with
metadata about whence the PR:

Implement X

Pull-request: #654

Conclusion and personal opinion

Personally I prefer true merges on my own multi-commit pull requests. On
single-commit PRs I do prefer what is effectively a cherry-pick, since I
use a “squash merge” for those if I’m the one who is incorporating the
change.

But sometimes I want to make a small PR on top of another person’s
PR. For such smaller PRs I think this cherry-pick idea is nice, and that
creating a true merge is often overkill (and distracting). Then a
cherry-pick (or rebase) with some metadata about the provenance of the
change would work great, I think.

Include Y in X as well

Pull-request: #4935

Good question by the way.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa

Why aren’t there cherry-pick requests?

One disadvantage to pull requests (aka merge requests) is lots and lots of merge commits.

It’s not the worst thing, but it does clutter the commit logs, and make for lots of unnecessary non-sequential history.

A - C - E - G
   /   /   /
  B   D   F

What I think would be better is to cherry-pick the commits.

A - B' - D' - F'

Of course I can do that myself, but one of the advantages in a pull request system like Github, Bitbucket, Stash, or Gerrit is the ability to do this through the interface, immediately following a review of the changes. And doing that manually wouldn’t show the pull request as accepted in the UI.

Why don’t pull request tools offer “cherry-pick requests”?


I understand the advantages of merges and non-sequential history in the general case. (Otherwise, I’d be using SVN.) I am specifically taking about one or two commit changes from transient branches. (Many tools even help you delete the branch right after merging.) A one-commit change is probably the most common case for pull requests.

6

The thing about pull requests is that it makes known that there are changes that someone wants to bring into the project.

If the owner/maintainer wants to cherry pick parts of the pull request, they can do that from that pull request.

And just because there is a pull request does not mean that the maintainer is not allowed, or incapable, of doing a rebase.

So this is indicative of a style that may be wanted in the history.

You can always display the history without the merge history, or even the other way around.

  • git log --merges
  • git log --no-merges

So it boils down to, I think:

  1. The project owner wanting to enforce, or not, a certain style of history
  2. The fact that you can get either set of information easily from Git itself, regardless.

You also mention that “A one-commit change is probably the most common case for pull requests” but I am not sure about that.

For one, the number of commits may be unknown due to the developers habits of doing micro-commits and then rebasing them. Also, it is common for me to see project owners asking for those commits to be squashed in the CONTRIBUTING.txt file, or other communication.

Edit: Of course, I can’t answer the question of why doesn’t X, Y and Z companies do something. Not sure anyone can, except for those entities.

4

I think there are some points to consider:

  1. Forge-focused development (pull requests)
  2. Using merges to mark where features where incorporated
  3. Rebase as cherry-picks
  4. Not wanting to change incoming commit messages

I think many projects that use Git can get very forge-focused. Meaning
that they end up using the information in the forge-only pull request
link.

The standard merge message is convenient for that:

Merged xzy into `master` (PR #789)

Now if you’re viewing the commit in some forge’s webapp then #789
could be a hyperlink to the pull request. And if the merge commit
message is nothing more than that line then they might need to open the
PR in order to view the description and the discussion.

Squash merges

The pseudo-merge variant “squash” also acts like this since they can be
also written as “Merged …”, i.e. with the same kind of information.

Rebase as cherry-picks

Arguably cherry-picks are an option on forges that allow you to
incorporate a pull request by way of a rebase + fast-forward.

Not wanting to change incoming commit messages

We’ve already talked about how merge commits can be used to add metadata
to an incorporated branch. In contrast, there is no culture for changing
commit messages in forge-based workflows.

I don’t mean changing the commit message proper but adding or modifying
metadata in the form of trailers.

Some projects, like the Git project, use a patch-based workflow with
signoffs. Which means that both the developer signs off the patch
when they send it out:

Implement X

Signed-off-by: John Smith <[email protected]>

And the integrator as well when they import the patch from their
mailbox:

Implement X

Signed-off-by: John Smith <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

These trailers are also used for other kinds of metadata about the
review process:

Implement X

Signed-off-by: John Smith <[email protected]>
Tested-by: Hobsbert Fedora <[email protected]>
Acked-by: Frank Wall <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

In this way, each patch (a future commit) can get their own metadata.

I haven’t seen any culture for this in forge-based (read: PRs)
workflows. But I see no reason why commits can’t be cherry-picked with
metadata about whence the PR:

Implement X

Pull-request: #654

Conclusion and personal opinion

Personally I prefer true merges on my own multi-commit pull requests. On
single-commit PRs I do prefer what is effectively a cherry-pick, since I
use a “squash merge” for those if I’m the one who is incorporating the
change.

But sometimes I want to make a small PR on top of another person’s
PR. For such smaller PRs I think this cherry-pick idea is nice, and that
creating a true merge is often overkill (and distracting). Then a
cherry-pick (or rebase) with some metadata about the provenance of the
change would work great, I think.

Include Y in X as well

Pull-request: #4935

Good question by the way.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa

Why aren’t there cherry-pick requests?

One disadvantage to pull requests (aka merge requests) is lots and lots of merge commits.

It’s not the worst thing, but it does clutter the commit logs, and make for lots of unnecessary non-sequential history.

A - C - E - G
   /   /   /
  B   D   F

What I think would be better is to cherry-pick the commits.

A - B' - D' - F'

Of course I can do that myself, but one of the advantages in a pull request system like Github, Bitbucket, Stash, or Gerrit is the ability to do this through the interface, immediately following a review of the changes. And doing that manually wouldn’t show the pull request as accepted in the UI.

Why don’t pull request tools offer “cherry-pick requests”?


I understand the advantages of merges and non-sequential history in the general case. (Otherwise, I’d be using SVN.) I am specifically taking about one or two commit changes from transient branches. (Many tools even help you delete the branch right after merging.) A one-commit change is probably the most common case for pull requests.

6

The thing about pull requests is that it makes known that there are changes that someone wants to bring into the project.

If the owner/maintainer wants to cherry pick parts of the pull request, they can do that from that pull request.

And just because there is a pull request does not mean that the maintainer is not allowed, or incapable, of doing a rebase.

So this is indicative of a style that may be wanted in the history.

You can always display the history without the merge history, or even the other way around.

  • git log --merges
  • git log --no-merges

So it boils down to, I think:

  1. The project owner wanting to enforce, or not, a certain style of history
  2. The fact that you can get either set of information easily from Git itself, regardless.

You also mention that “A one-commit change is probably the most common case for pull requests” but I am not sure about that.

For one, the number of commits may be unknown due to the developers habits of doing micro-commits and then rebasing them. Also, it is common for me to see project owners asking for those commits to be squashed in the CONTRIBUTING.txt file, or other communication.

Edit: Of course, I can’t answer the question of why doesn’t X, Y and Z companies do something. Not sure anyone can, except for those entities.

4

I think there are some points to consider:

  1. Forge-focused development (pull requests)
  2. Using merges to mark where features where incorporated
  3. Rebase as cherry-picks
  4. Not wanting to change incoming commit messages

I think many projects that use Git can get very forge-focused. Meaning
that they end up using the information in the forge-only pull request
link.

The standard merge message is convenient for that:

Merged xzy into `master` (PR #789)

Now if you’re viewing the commit in some forge’s webapp then #789
could be a hyperlink to the pull request. And if the merge commit
message is nothing more than that line then they might need to open the
PR in order to view the description and the discussion.

Squash merges

The pseudo-merge variant “squash” also acts like this since they can be
also written as “Merged …”, i.e. with the same kind of information.

Rebase as cherry-picks

Arguably cherry-picks are an option on forges that allow you to
incorporate a pull request by way of a rebase + fast-forward.

Not wanting to change incoming commit messages

We’ve already talked about how merge commits can be used to add metadata
to an incorporated branch. In contrast, there is no culture for changing
commit messages in forge-based workflows.

I don’t mean changing the commit message proper but adding or modifying
metadata in the form of trailers.

Some projects, like the Git project, use a patch-based workflow with
signoffs. Which means that both the developer signs off the patch
when they send it out:

Implement X

Signed-off-by: John Smith <[email protected]>

And the integrator as well when they import the patch from their
mailbox:

Implement X

Signed-off-by: John Smith <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

These trailers are also used for other kinds of metadata about the
review process:

Implement X

Signed-off-by: John Smith <[email protected]>
Tested-by: Hobsbert Fedora <[email protected]>
Acked-by: Frank Wall <[email protected]>
Signed-off-by: Jane Underhill <[email protected]>

In this way, each patch (a future commit) can get their own metadata.

I haven’t seen any culture for this in forge-based (read: PRs)
workflows. But I see no reason why commits can’t be cherry-picked with
metadata about whence the PR:

Implement X

Pull-request: #654

Conclusion and personal opinion

Personally I prefer true merges on my own multi-commit pull requests. On
single-commit PRs I do prefer what is effectively a cherry-pick, since I
use a “squash merge” for those if I’m the one who is incorporating the
change.

But sometimes I want to make a small PR on top of another person’s
PR. For such smaller PRs I think this cherry-pick idea is nice, and that
creating a true merge is often overkill (and distracting). Then a
cherry-pick (or rebase) with some metadata about the provenance of the
change would work great, I think.

Include Y in X as well

Pull-request: #4935

Good question by the way.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật