Skip to content
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

Simplify/rethink branch->mirror relationship #114

Open
ahpook opened this issue May 9, 2024 · 6 comments
Open

Simplify/rethink branch->mirror relationship #114

ahpook opened this issue May 9, 2024 · 6 comments
Assignees
Labels
enhancement New feature or request high priority high impact improvements and fixes

Comments

@ahpook
Copy link
Contributor

ahpook commented May 9, 2024

Is your feature request related to a problem?

We've gotten feedback that the relationship between mirrors and branches is both confusing and counter to user expectations. We may need to adapt the current implementation to make this easier to understand and work with.

Describe the solution you'd like

The current state can be described as:

A public fork has N [ fork's topic branch -> main on private mirror ] relationships that ICF manages. The private mirrors may have work in flight in their own branches but when that work is merged to main, the sync to their topic branch on the public fork ( middle column in the diagram ) happens - and that topic branch becomes the basis for a PR upstream.

But this results in a proliferation of mirrors and a mix of branches on the fork that might map to upstream, might map to work directly on the fork, or might be part of a ICF-managed mirror. Additionally, at least one user says they expected a mapping of [ fork topic branch -> mirror topic branch ] and was surprised at the current implementation.

So this at least requires better explanation if not some additional work to simplify this mapping.

Image

Describe alternatives you've considered

No response

Additional context

No response

@ahpook ahpook added the enhancement New feature or request label May 9, 2024
@ahpook ahpook mentioned this issue May 17, 2024
4 tasks
@ahpook
Copy link
Contributor Author

ahpook commented Aug 29, 2024

This has come up a lot for people who want to maintain long-running private mirrors that are effectively their internal fork of an upstream project. One typical use-case is that there's an upstream project which has some additional "secret sauce" added locally - code which will never be contributed upstream - but the internal team that owns the fork needs a way to continue to update their fork to keep current with upstream and continually rebase their local modifications. Currently this is a painful process; PMA doesn't directly address it because we expect that private mirror branches are ephemeral and will be closed out as soon as the contribution is merged upstream.

@ahpook ahpook self-assigned this Aug 29, 2024
@ahpook ahpook added the high priority high impact improvements and fixes label Aug 29, 2024
@riley-kohler
Copy link
Contributor

Given the interest here, I wanted to share out a potential alternative branch-based contribution model that I drew up. It makes use of "magic words" in this example being "sync_" but would greatly help with user experience of the contribution process through private-mirrors.

Screenshot 2024-06-06 at 2 26 39 PM

@wrslatz
Copy link
Contributor

wrslatz commented Aug 29, 2024

I don't mind sync_ as a magic branch prefix necessarily. It's more clear and shorter than contrib_ which was something I was thinking about.

@wrslatz
Copy link
Contributor

wrslatz commented Aug 29, 2024

Would a user create a branch on the public fork and then instruct Private Mirrors to sync that through the UI? So branch name would be an additional input in the process, maybe with a default to the default branch?

@riley-kohler
Copy link
Contributor

In my mind branch name would be the only input to the process (through the UI) and private-mirrors would create all of the necessary branches for you.

@wrslatz
Copy link
Contributor

wrslatz commented Aug 29, 2024

In my mind branch name would be the only input to the process (through the UI) and private-mirrors would create all of the necessary branches for you.

If this could support the branch already existing on the public fork, that would be best. This would help in cases where someone wants to sync and work on changes from upstream that aren't in the default branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request high priority high impact improvements and fixes
Projects
None yet
Development

No branches or pull requests

3 participants