@@ -114,7 +126,7 @@ function pullWorkfolder() {
:class="$style.icon"
:style="{
color: accessibleTextColor,
- background: sourceControlStore.preferences.branchColor,
+ background: branchColor,
}"
>
@@ -125,7 +137,7 @@ function pullWorkfolder() {
:class="$style.icon"
:style="{
color: accessibleTextColor,
- background: sourceControlStore.preferences.branchColor,
+ background: branchColor,
}"
>
@@ -157,16 +169,14 @@ function pullWorkfolder() {
/>
{{
- sourceControlStore.preferences.branchReadOnly || !hasPushPermission
+ branchReadOnly || !hasPushPermission
? i18n.baseText('settings.sourceControl.button.push.forbidden')
: i18n.baseText('settings.sourceControl.button.push')
}}
@@ -178,7 +188,7 @@ function pullWorkfolder() {
data-test-id="main-sidebar-source-control-push"
icon="arrow-up"
:label="isCollapsed ? '' : i18n.baseText('settings.sourceControl.button.push')"
- :disabled="sourceControlStore.preferences.branchReadOnly || !hasPushPermission"
+ :disabled="branchReadOnly || !hasPushPermission"
@click="pushWorkfolder"
/>
diff --git a/packages/frontend/editor-ui/src/app/components/Modals.vue b/packages/frontend/editor-ui/src/app/components/Modals.vue
index b0e1d130578..d95ee692dd1 100644
--- a/packages/frontend/editor-ui/src/app/components/Modals.vue
+++ b/packages/frontend/editor-ui/src/app/components/Modals.vue
@@ -66,6 +66,8 @@ import {
MOVE_FOLDER_MODAL_KEY,
} from '@/features/core/folders/folders.constants';
import {
+ SOURCE_CONTROL_CONNECTION_PULL_MODAL_KEY,
+ SOURCE_CONTROL_CONNECTION_PUSH_MODAL_KEY,
SOURCE_CONTROL_PULL_MODAL_KEY,
SOURCE_CONTROL_PULL_RESULT_MODAL_KEY,
SOURCE_CONTROL_PUSH_MODAL_KEY,
@@ -109,6 +111,8 @@ import PersonalizationModal from '@/features/settings/users/components/Personali
import ProjectMoveResourceModal from '@/features/collaboration/projects/components/ProjectMoveResourceModal.vue';
import EventDestinationSettingsModal from '@/features/integrations/logStreaming.ee/components/EventDestinationSettingsModal.vue';
import SetupWorkflowCredentialsModal from '@/features/workflows/templates/components/SetupWorkflowCredentialsModal.vue';
+import SourceControlConnectionPullModal from '@/features/integrations/sourceControl.ee/components/SourceControlConnectionPullModal.vue';
+import SourceControlConnectionPushModal from '@/features/integrations/sourceControl.ee/components/SourceControlConnectionPushModal.vue';
import SourceControlPullModal from '@/features/integrations/sourceControl.ee/components/SourceControlPullModal.vue';
import SourceControlPullResultModal from '@/features/integrations/sourceControl.ee/components/SourceControlPullResultModal.vue';
import SourceControlPushModal from '@/features/integrations/sourceControl.ee/components/SourceControlPushModal.vue';
@@ -325,6 +329,18 @@ const TrialIntroModal = defineAsyncComponent(
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/editor-ui/src/app/stores/ui.store.ts b/packages/frontend/editor-ui/src/app/stores/ui.store.ts
index f04b54d44fe..d07c1f66704 100644
--- a/packages/frontend/editor-ui/src/app/stores/ui.store.ts
+++ b/packages/frontend/editor-ui/src/app/stores/ui.store.ts
@@ -72,6 +72,8 @@ import type { WorkflowListEventMap } from '@/features/core/folders/folders.types
import {
SOURCE_CONTROL_PUSH_MODAL_KEY,
SOURCE_CONTROL_PULL_MODAL_KEY,
+ SOURCE_CONTROL_CONNECTION_PUSH_MODAL_KEY,
+ SOURCE_CONTROL_CONNECTION_PULL_MODAL_KEY,
SOURCE_CONTROL_PULL_RESULT_MODAL_KEY,
} from '@/features/integrations/sourceControl.ee/sourceControl.constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/collaboration/projects/projects.constants';
@@ -154,6 +156,8 @@ export const useUIStore = defineStore(STORES.UI, () => {
SOURCE_CONTROL_PUSH_MODAL_KEY,
SOURCE_CONTROL_PULL_MODAL_KEY,
SOURCE_CONTROL_PULL_RESULT_MODAL_KEY,
+ SOURCE_CONTROL_CONNECTION_PUSH_MODAL_KEY,
+ SOURCE_CONTROL_CONNECTION_PULL_MODAL_KEY,
EXTERNAL_SECRETS_PROVIDER_MODAL_KEY,
SECRETS_PROVIDER_CONNECTION_MODAL_KEY,
DELETE_SECRETS_PROVIDER_MODAL_KEY,
diff --git a/packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectSourceControl.vue b/packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectSourceControl.vue
new file mode 100644
index 00000000000..bd53058b0c9
--- /dev/null
+++ b/packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectSourceControl.vue
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
diff --git a/packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectSettings.vue b/packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectSettings.vue
index fcc655429fb..16d98fce033 100644
--- a/packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectSettings.vue
+++ b/packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectSettings.vue
@@ -27,6 +27,7 @@ import type { TableOptions } from '@n8n/design-system/components/N8nDataTableSer
import type { UserAction } from '@n8n/design-system';
import { isProjectRole } from '@/app/utils/typeGuards';
import ProjectExternalSecrets from '../components/ProjectExternalSecrets.vue';
+import ProjectSourceControl from '../components/ProjectSourceControl.vue';
import ProjectSettingsCustomTelemetryTags from '../components/ProjectSettingsCustomTelemetryTags.vue';
import { getResourcePermissions } from '@n8n/permissions';
import { hasPermission } from '@/app/utils/rbac/permissions';
@@ -653,6 +654,8 @@ onMounted(async () => {
+
+