-
Notifications
You must be signed in to change notification settings - Fork 184
Add a workflow to sync commits to ruby/ruby #951
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@rhenium I see that today's merge commit b7ee7e0 failed the sync due to 632d6e6 whose conflict seems to be resolved by the merge commit. I want to discuss how to avoid failing the sync workflow going forward. In ruby/ruby, because a couple of committers did not like merge commits (see also: mame's git hook), we decided not to allow merge commits. Because of that, By nature, if you push a merge commit that resolves a conflict in it, the commit with the conflict (e.g. 632d6e6, which conflicts with 64f4aae) in the merged tree will always result in a conflict when cherry-picking it. To address the situation, I've thought of the following options:
WDYT? |
|
Honestly, I didn't really see this as a major problem. It happens rather infrequently, only when branches are merged upwards, so the manual work required on my side has been minimal. The new sync workflow also generates a notification email now, which is convenient. Since the main motivation for copying default gems into ruby/ruby was to let committers quickly apply patches without waiting for gem maintainers, there can be local changes in ruby/ruby at times. I think occasional sync failures are somewhat expected, even without tricky merge commits.
I believe this is still a goal for every default gem, which has been gradually progressing over the past ~10 years. AFAIK the remaining blockers for openssl are RubyGems and net/http (which is also blocked by RubyGems). |
Yeah, that's part of the features this was intended to deliver, so I'm glad you like it.
That's right. I expect this to happen at times, and I want the maintainer to notice the discrepancy by the workflow failure. But it's not a reason to fail sync when there's no
The current workflow is that you merge a branch, resolve a conflict in the merge commit, and manually fix failed syncs. If you resolve a conflict in the commit that introduced the conflict by doing (1) or (2), the sync should automatically succeed. So you can remove the "manually fix failed syncs" step from the "minimal" workflow if you do so.
Yeah, so it's not a short-term solution for |
|
I feel this is best handled by I'm a big fan of using merge commits to group related changes logically or to avoid making duplicate commits. Option (2) likely causes more issues than it resolves. In particular, git bisect can become harder to use if not every commit in the repositories compiles. |
|
OK, I respect your preference of merge commits. I leave it for you to decide how to handle them. FYI, I made a little improvement on the sync workflow ruby/ruby@d82a590, which shows a diff like this on conflicts. I hope it helps you fix sync failures. |
https://bugs.ruby-lang.org/issues/21628