mirror of
https://github.com/desktop/desktop
synced 2024-09-18 07:32:01 +00:00
Merge pull request #12382 from desktop/squash-merge-via-branch-menu
Squash merge via branch menu
This commit is contained in:
commit
3c4c000b08
|
@ -10,6 +10,7 @@ import { TipState } from '../models/tip'
|
|||
import { updateMenuState as ipcUpdateMenuState } from '../ui/main-process-proxy'
|
||||
import { AppMenu, MenuItem } from '../models/app-menu'
|
||||
import { hasConflictedFiles } from './status'
|
||||
import { enableSquashMerging } from './feature-flag'
|
||||
|
||||
export interface IMenuItemState {
|
||||
readonly enabled?: boolean
|
||||
|
@ -101,6 +102,10 @@ function menuItemStateEqual(state: IMenuItemState, menuItem: MenuItem) {
|
|||
return true
|
||||
}
|
||||
|
||||
const squashAndMergeMenuIds: ReadonlyArray<MenuIDs> = enableSquashMerging()
|
||||
? ['squash-and-merge-branch']
|
||||
: []
|
||||
|
||||
const allMenuIds: ReadonlyArray<MenuIDs> = [
|
||||
'rename-branch',
|
||||
'delete-branch',
|
||||
|
@ -133,6 +138,7 @@ const allMenuIds: ReadonlyArray<MenuIDs> = [
|
|||
'clone-repository',
|
||||
'about',
|
||||
'create-pull-request',
|
||||
...squashAndMergeMenuIds,
|
||||
]
|
||||
|
||||
function getAllMenusDisabledBuilder(): MenuStateBuilder {
|
||||
|
@ -258,6 +264,9 @@ function getRepositoryMenuBuilder(state: IAppState): MenuStateBuilder {
|
|||
onNonDefaultBranch && hasDefaultBranch && !onDetachedHead
|
||||
)
|
||||
menuStateBuilder.setEnabled('merge-branch', onBranch)
|
||||
if (enableSquashMerging()) {
|
||||
menuStateBuilder.setEnabled('squash-and-merge-branch', onBranch)
|
||||
}
|
||||
menuStateBuilder.setEnabled('rebase-branch', onBranch)
|
||||
menuStateBuilder.setEnabled(
|
||||
'compare-on-github',
|
||||
|
@ -330,6 +339,9 @@ function getRepositoryMenuBuilder(state: IAppState): MenuStateBuilder {
|
|||
menuStateBuilder.disable('stash-all-changes')
|
||||
menuStateBuilder.disable('update-branch')
|
||||
menuStateBuilder.disable('merge-branch')
|
||||
if (enableSquashMerging()) {
|
||||
menuStateBuilder.disable('squash-and-merge-branch')
|
||||
}
|
||||
menuStateBuilder.disable('rebase-branch')
|
||||
|
||||
menuStateBuilder.disable('push')
|
||||
|
|
|
@ -6,6 +6,7 @@ import { getLogDirectoryPath } from '../../lib/logging/get-log-path'
|
|||
import { ensureDir } from 'fs-extra'
|
||||
import { UNSAFE_openDirectory } from '../shell'
|
||||
import { MenuLabelsEvent } from '../../models/menu-labels'
|
||||
import { enableSquashMerging } from '../../lib/feature-flag'
|
||||
|
||||
const platformDefaultShell = __WIN32__ ? 'Command Prompt' : 'Terminal'
|
||||
const createPullRequestLabel = __DARWIN__
|
||||
|
@ -337,88 +338,102 @@ export function buildDefaultMenu({
|
|||
],
|
||||
})
|
||||
|
||||
const branchSubmenu = [
|
||||
{
|
||||
label: __DARWIN__ ? 'New Branch…' : 'New &branch…',
|
||||
id: 'create-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+N',
|
||||
click: emit('create-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__ ? 'Rename…' : '&Rename…',
|
||||
id: 'rename-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+R',
|
||||
click: emit('rename-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__ ? 'Delete…' : '&Delete…',
|
||||
id: 'delete-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+D',
|
||||
click: emit('delete-branch'),
|
||||
},
|
||||
separator,
|
||||
{
|
||||
label: __DARWIN__ ? 'Discard All Changes…' : 'Discard all changes…',
|
||||
id: 'discard-all-changes',
|
||||
accelerator: 'CmdOrCtrl+Shift+Backspace',
|
||||
click: emit('discard-all-changes'),
|
||||
},
|
||||
{
|
||||
label: askForConfirmationWhenStashingAllChanges
|
||||
? confirmStashAllChangesLabel
|
||||
: stashAllChangesLabel,
|
||||
id: 'stash-all-changes',
|
||||
accelerator: 'CmdOrCtrl+Shift+S',
|
||||
click: emit('stash-all-changes'),
|
||||
},
|
||||
separator,
|
||||
{
|
||||
label: __DARWIN__
|
||||
? `Update from ${defaultBranchName}`
|
||||
: `&Update from ${defaultBranchName}`,
|
||||
id: 'update-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+U',
|
||||
click: emit('update-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__ ? 'Compare to Branch' : '&Compare to branch',
|
||||
id: 'compare-to-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+B',
|
||||
click: emit('compare-to-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__
|
||||
? 'Merge into Current Branch…'
|
||||
: '&Merge into current branch…',
|
||||
id: 'merge-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+M',
|
||||
click: emit('merge-branch'),
|
||||
},
|
||||
]
|
||||
|
||||
if (enableSquashMerging()) {
|
||||
branchSubmenu.push({
|
||||
label: __DARWIN__
|
||||
? 'Squash and Merge into Current Branch…'
|
||||
: 'Squas&h and merge into current branch…',
|
||||
id: 'squash-and-merge-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+H',
|
||||
click: emit('squash-and-merge-branch'),
|
||||
})
|
||||
}
|
||||
|
||||
branchSubmenu.push(
|
||||
{
|
||||
label: __DARWIN__ ? 'Rebase Current Branch…' : 'R&ebase current branch…',
|
||||
id: 'rebase-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+E',
|
||||
click: emit('rebase-branch'),
|
||||
},
|
||||
separator,
|
||||
{
|
||||
label: __DARWIN__ ? 'Compare on GitHub' : 'Compare on &GitHub',
|
||||
id: 'compare-on-github',
|
||||
accelerator: 'CmdOrCtrl+Shift+C',
|
||||
click: emit('compare-on-github'),
|
||||
},
|
||||
{
|
||||
label: pullRequestLabel,
|
||||
id: 'create-pull-request',
|
||||
accelerator: 'CmdOrCtrl+R',
|
||||
click: emit('open-pull-request'),
|
||||
}
|
||||
)
|
||||
|
||||
template.push({
|
||||
label: __DARWIN__ ? 'Branch' : '&Branch',
|
||||
id: 'branch',
|
||||
submenu: [
|
||||
{
|
||||
label: __DARWIN__ ? 'New Branch…' : 'New &branch…',
|
||||
id: 'create-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+N',
|
||||
click: emit('create-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__ ? 'Rename…' : '&Rename…',
|
||||
id: 'rename-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+R',
|
||||
click: emit('rename-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__ ? 'Delete…' : '&Delete…',
|
||||
id: 'delete-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+D',
|
||||
click: emit('delete-branch'),
|
||||
},
|
||||
separator,
|
||||
{
|
||||
label: __DARWIN__ ? 'Discard All Changes…' : 'Discard all changes…',
|
||||
id: 'discard-all-changes',
|
||||
accelerator: 'CmdOrCtrl+Shift+Backspace',
|
||||
click: emit('discard-all-changes'),
|
||||
},
|
||||
{
|
||||
label: askForConfirmationWhenStashingAllChanges
|
||||
? confirmStashAllChangesLabel
|
||||
: stashAllChangesLabel,
|
||||
id: 'stash-all-changes',
|
||||
accelerator: 'CmdOrCtrl+Shift+S',
|
||||
click: emit('stash-all-changes'),
|
||||
},
|
||||
separator,
|
||||
{
|
||||
label: __DARWIN__
|
||||
? `Update from ${defaultBranchName}`
|
||||
: `&Update from ${defaultBranchName}`,
|
||||
id: 'update-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+U',
|
||||
click: emit('update-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__ ? 'Compare to Branch' : '&Compare to branch',
|
||||
id: 'compare-to-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+B',
|
||||
click: emit('compare-to-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__
|
||||
? 'Merge into Current Branch…'
|
||||
: '&Merge into current branch…',
|
||||
id: 'merge-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+M',
|
||||
click: emit('merge-branch'),
|
||||
},
|
||||
{
|
||||
label: __DARWIN__
|
||||
? 'Rebase Current Branch…'
|
||||
: 'R&ebase current branch…',
|
||||
id: 'rebase-branch',
|
||||
accelerator: 'CmdOrCtrl+Shift+E',
|
||||
click: emit('rebase-branch'),
|
||||
},
|
||||
separator,
|
||||
{
|
||||
label: __DARWIN__ ? 'Compare on GitHub' : 'Compare on &GitHub',
|
||||
id: 'compare-on-github',
|
||||
accelerator: 'CmdOrCtrl+Shift+C',
|
||||
click: emit('compare-on-github'),
|
||||
},
|
||||
{
|
||||
label: pullRequestLabel,
|
||||
id: 'create-pull-request',
|
||||
accelerator: 'CmdOrCtrl+R',
|
||||
click: emit('open-pull-request'),
|
||||
},
|
||||
],
|
||||
submenu: branchSubmenu,
|
||||
})
|
||||
|
||||
if (__DARWIN__) {
|
||||
|
|
|
@ -19,6 +19,7 @@ export type MenuEvent =
|
|||
| 'update-branch'
|
||||
| 'compare-to-branch'
|
||||
| 'merge-branch'
|
||||
| 'squash-and-merge-branch'
|
||||
| 'rebase-branch'
|
||||
| 'show-repository-settings'
|
||||
| 'open-in-shell'
|
||||
|
|
|
@ -7,6 +7,7 @@ export type MenuIDs =
|
|||
| 'preferences'
|
||||
| 'update-branch'
|
||||
| 'merge-branch'
|
||||
| 'squash-and-merge-branch'
|
||||
| 'rebase-branch'
|
||||
| 'view-repository-on-github'
|
||||
| 'compare-on-github'
|
||||
|
|
|
@ -385,6 +385,8 @@ export class App extends React.Component<IAppProps, IAppState> {
|
|||
case 'merge-branch':
|
||||
this.props.dispatcher.recordMenuInitiatedMerge()
|
||||
return this.mergeBranch()
|
||||
case 'squash-and-merge-branch':
|
||||
return this.mergeBranch(true)
|
||||
case 'rebase-branch':
|
||||
this.props.dispatcher.recordMenuInitiatedRebase()
|
||||
return this.showRebaseDialog()
|
||||
|
|
Loading…
Reference in a new issue