This workspace's {devLabelNoun(pairedDev.label)} is {pairedDev.name}
({pairedDev.id}). Edits to this workspace are redirected there.
{@render protectionsPanel({
title: 'Protections in force on this workspace',
rules: ownRules,
onOpen: openRulesets,
editLabel: 'Edit',
manageLabel: 'Manage in Rulesets'
})}
{#if pairedDev.isMember || $superadmin}
{/if}
{:else if availableAttachLabels.length === 0}
Every environment label is already taken by a dev workspace in this chain, and two carrying
the same label would deploy to the same branch. Promote through the existing chain instead.
{:else}
Pair this workspace with a dev workspace: the same code with a different environment
(resource and variable values). Edits are made in the dev workspace and promoted here.
Attach an existing workspace as dev
{#if candidateClash}
{candidateClash} comes with the selected workspace and already deploys to a branch this
chain would then use twice. Pick a different label, or another workspace.
{/if}
Protect this workspace on attach
Nothing is enforced until you attach: these add protection rules to this workspace so
changes are made in the dev workspace and promoted here.
{#if ownRules.deployLocked}
{#if ownRules.alreadyBlocksDeploy}
Already enforced by an existing protection rule
{/if}
{:else}
{/if}
{#if ownRules.forkingLocked}
{#if ownRules.alreadyBlocksForking}
Already enforced by an existing protection rule
{/if}
{:else}
{/if}
{/if}
{/snippet}
{#if isThrowawayFork}
Dev workspace pairing is not available on a throwaway fork. This workspace is a fork of
{parentId}.
{@render deployTarget?.()}
{:else if isDev && parentId}
This is a {devLabelNoun(currentWs?.dev_workspace_label)} paired with
{parentWs?.is_dev_workspace ? devLabelNoun(parentWs.dev_workspace_label) : 'root workspace'}
{parentId}. Promote changes from the home page banner or the Compare & Deploy page.
Environment: {devBadgeText(currentLabel)}
Set when the workspace is created or attached. Git sync deploys to the
{currentLabel} branch.
{@render deployTarget?.()}
{#if !parentRules.readFailed}
{@render protectionsPanel({
title: `Protections in force on ${parentId}`,
rules: parentRules,
onOpen: canEditParentRules ? openRulesetsInParent : undefined,
editLabel: `Edit in ${parentId}`,
manageLabel: `Manage in ${parentId}`
})}
{/if}
This workspace's own dev workspace
A dev workspace can itself be paired with one, giving a longer promotion chain (for example
dev into staging into prod). It is not the recommended shape — each extra level is another
promotion to run — but nothing prevents it.