Skydio / revup

Effortlessly create and manage pull requests without changing branches. Powers a stacked diffs workflow with python and git "plumbing" commands.
https://github.com/Skydio/revup
MIT License
310 stars 61 forks source link

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

Open nikhil-marathe-skydio opened 1 year ago

nikhil-marathe-skydio commented 1 year ago

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.

Geethree commented 1 year ago

Hey Skydio friends!

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

jerry-skydio commented 6 months ago

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 commented 6 months ago

other thoughts