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

"revup download": Ability to pull other people's relative changes down in one go #90

Open
nikhil-marathe-skydio opened this issue Feb 22, 2023 · 3 comments
Labels
enhancement New feature or request

Comments

@nikhil-marathe-skydio
Copy link

Is your feature request related to a problem? Please describe.
When I revup upload a bunch of changes, it would be really cool if another team member could do something like revup download <topic> and it would update their working copy to a branch with the full series of commits from <topic>, including downloading Relative: dependencies.

Describe the solution you'd like
revup download <topic>
There are open questions here about would it be supported to then revup upload to update that same PR (the answer is probably no).
The basic functionality seems useful just to conveniently try/build upon others changes.

Describe alternatives you've considered
I am not familiar enough with Github or Git or how revup integrates with them to know if something like this is even possible, nor what the alternatives are, however I figured I would ask.

The current strategy I do is to manually follow the list of PRs and use git cherry-pick.

@nikhil-marathe-skydio nikhil-marathe-skydio added the enhancement New feature or request label Feb 22, 2023
@Geethree
Copy link

Hey Skydio friends!

It has been awhile. Anyways, I'm +1 this request from @nikhil-marathe-skydio .

@jerry-skydio jerry-skydio mentioned this issue Mar 14, 2024
@jerry-skydio jerry-skydio changed the title Ability to pull other people's relative changes down in one go "revup download": Ability to pull other people's relative changes down in one go Mar 14, 2024
@jerry-skydio
Copy link
Collaborator

ok let's do this

cherry-pick mode (if specified branch isn't already downloaded locally):
revup download - queries github to find the head ref and base ref of the pull request, which can be given by several methods. squashes the remote branch into a single commit and attempts to cherry-pick it. rewrites the commit text to remove any Topic: lines, adds a warning message like "This commit is managed by "revup download", any changes made to it will be lost so don't modify it manually". Also adds metadata necessary for downloading, like "Revup-Download: "

sync mode (if specified branch exists locally, or no arg is specified)
revup download - for all local changes with the metadata "Revup-Download:", queries the branch in github and fetches the head and base refs, squashes them into single commits, and attempts to cherry-pick them with revup's in-place cherry-pick engine. If a branch is specified it will only sync that one.

@jerry-skydio
Copy link
Collaborator

jerry-skydio commented Mar 14, 2024

other thoughts

  • might be useful to have a mode that squashes all branches in a series, otherwise you have do to it one by one. in this case we'd need additional metadata like "Download-Base-Branch:"
  • to drop a downloaded change, use revup amend. We can modify it to recognize "Revup-Download:" just as it recognizes topics
  • it might be nice to fall back into interactive rebase if a conflict occurs while syncing
  • this is mainly for downloading changes to keep them in sync easily locally. it's not for downloading for intent to upload (that is much easier to accomplish and doesn't require any synthetic cherry picks)
  • it might be nice for "revup amend" to show the list of downloaded branches in the edit msg so you can more easily choose one to be "Relative-Branch:" to

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

No branches or pull requests

3 participants