DxCherry
DxCherry is an extension for Visual Studio Code created by Anton Kuznetsov and Jaan Toming to automate routine processes of cherry-picking and pull requests creating.
It extends functionality of GitCherry open-sourced extension to get the best flow.
Advantages
- You don't need to create branches for cherry picks, check out to them, fetch upstreams, cherry pick, push it manually anymore.
:zap: Just select necessary branches in side tree view, click on a button and cherry picks will be done.
- You don't need to create pull requests for each cherry pick separately.
:zap: Customized pull requests for selected branches will be created automatically after button click. You should just click on Open
button in popped up information window to see the pull request on Github.
- You don't need to search a created pull request in Github and configure it manually.
:zap: You can make it once for base branch right in Visual Studio Code using friendly UI interface
- You don't need to add
cherry-pick
and version labels to your pull requests.
:zap: DxCherry will do it for you
- You don't need to fix a pull request title when there is more than one commit in your branch or first commit length is too much.
:zap: The extension fill put a full first commit message as the pull request title. But you still can modify it right in Visual Studio Code
- You don't need to stash changes if there is unstaged changes before cherry-pick.
:zap: The extension will stash the changes before cherry pick and return it back after cherry picking.
- You don't need to abort cherry-picking and check out back manually if something goes wrong during merge conflict solving.
:zap: Just click abort
button and it becomes as not cherry pick was there.
Actual restrictions
- Branches should be named with upstream branch name in suffix separated by
__
(double underscore). Example: myBranch__21_2
. It's necessary for extension to understand which branch is current branch checked out from.
- Remote should be named as
upstream
. It means that extension will not work if you name your remote as mainDevextreme
on another way.
It's planned to research the way to avoid this restrictions in the future :blush:
Main features:
- One-click cherry-pick to multiple branches
- One-click multiple pull requests with custom configuration creating
- Integration with https://int.devexpress.com/Employees/ to get reviewers names and squads
- Specific UX improvements:
- only 5 branches are shown by default. Expand
more
node to see all upstream branches.
- useless labels are not shown
- reviewers are grouped by squads
some more:
Cherry-pick to multiple branches
- Create a local branch named as
*name__upstreamBranchName*
, etc myBranch_master
. Commit changes.
- Toggle checkboxes with appropriate branch names to specify necessary upstream branches to which cherry-pick.
- Click
Cherry-pick
button to start cherry-picking.
Result: Local branches with commits cherry picked from current one are created.
Merge conflicts solving
- If merge conflict is detected cherry picking stops,
Cherry-pick
button replaces with Continue cherry-picking
button.
- Resolve merge conflict using familiar way and commit the changes.
- Press
Continue cherry-picking
button.
Result: Cherry-picking continues.
Abort cherry-pick when merge conflict is detected
Click on Abort cherry-pick
button when merge conflict is detected to cancel current cherry-pick.
Result: actual cherry-pick is aborted.
Multiple pull requests creating
- Select branches. Select labels and reviewers if it's necessary.
- Click on the
Create pull requests
button.
- Customize a title in the shown input box (by default first commit message is placed here). Input some description if you want.
Result: Local branch named as *currentBranch__upstreamBranch*
is pushed for every selected upstream branch. And for every pushed branch customized pull request is created. It remains only to click on Open
button placed in the information toast to see pull request github page.
Data tree refreshing
Extension data tree can become outdated if some new labels, branches or reviewers were added to upstream repo.
Click on Refresh
button to load new data and update the tree.
Unselect checkboxes
If you wanna to unselect all checkboxes in some TreeView subtree, just hover appropriate node and click Unselect all
button.
Details and future plans
See CHANGELOG