Skip to content

Commit 90fa891

Browse files
committed
feat: git: skip auto-commit and status calls for protected branches
1 parent d64361e commit 90fa891

File tree

5 files changed

+47
-8
lines changed

5 files changed

+47
-8
lines changed

app/client/src/git/sagas/fetchStatusSaga.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { GitArtifactPayloadAction } from "git/store/types";
77
import { call, put, select } from "redux-saga/effects";
88
import { validateResponse } from "sagas/ErrorSagas";
99
import handleApiErrors from "./helpers/handleApiErrors";
10+
import { selectProtectedMode } from "git/store/selectors/gitArtifactSelectors";
1011

1112
export default function* fetchStatusSaga(
1213
action: GitArtifactPayloadAction<FetchStatusInitPayload>,
@@ -20,6 +21,22 @@ export default function* fetchStatusSaga(
2021
selectGitApiContractsEnabled,
2122
);
2223

24+
const isCurrentBranchProtected: boolean = yield select(
25+
selectProtectedMode,
26+
artifactDef,
27+
);
28+
29+
if (isCurrentBranchProtected) {
30+
// Skip status check for protected branches and set empty status
31+
yield put(
32+
gitArtifactActions.resetGitStatus({
33+
artifactDef,
34+
}),
35+
);
36+
37+
return;
38+
}
39+
2340
response = yield call(
2441
fetchStatusRequest,
2542
artifactDef.artifactType,

app/client/src/git/sagas/initGitSaga.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,24 @@ export default function* initGitForEditorSaga(
3636
yield put(gitArtifactActions.fetchMetadataInit({ artifactDef }));
3737
yield take(gitArtifactActions.fetchMetadataSuccess.type);
3838

39-
if (isAutocommitEnabled(artifactDef)) {
40-
yield put(
41-
gitArtifactActions.triggerAutocommitInit({ artifactDef, artifactId }),
42-
);
43-
}
44-
4539
yield put(
4640
gitArtifactActions.fetchBranchesInit({ artifactDef, artifactId }),
4741
);
4842

43+
// We skip the auto-commit and status check for protected branches
44+
// Hence we need to check if the current branch is protected before triggering auto-commit and status check
4945
if (isProtectedBranchesEnabled(artifactDef)) {
5046
yield put(
5147
gitArtifactActions.fetchProtectedBranchesInit({ artifactDef }),
5248
);
5349
}
5450

51+
if (isAutocommitEnabled(artifactDef)) {
52+
yield put(
53+
gitArtifactActions.triggerAutocommitInit({ artifactDef, artifactId }),
54+
);
55+
}
56+
5557
yield put(
5658
gitArtifactActions.fetchStatusInit({ artifactDef, artifactId }),
5759
);

app/client/src/git/sagas/triggerAutocommitSaga.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ import type {
1111
} from "git/requests/triggerAutocommitRequest.types";
1212
import type { TriggerAutocommitInitPayload } from "git/store/actions/triggerAutocommitActions";
1313
import { gitArtifactActions } from "git/store/gitArtifactSlice";
14-
import { selectAutocommitEnabled } from "git/store/selectors/gitArtifactSelectors";
14+
import {
15+
selectAutocommitEnabled,
16+
selectProtectedMode,
17+
} from "git/store/selectors/gitArtifactSelectors";
1518
import type { GitArtifactPayloadAction } from "git/store/types";
1619
import {
1720
call,
@@ -142,8 +145,13 @@ export default function* triggerAutocommitSaga(
142145
selectAutocommitEnabled,
143146
artifactDef,
144147
);
148+
const isCurrentBranchProtected: boolean = yield select(
149+
selectProtectedMode,
150+
artifactDef,
151+
);
152+
const shouldAutocommit = isAutocommitEnabled && !isCurrentBranchProtected;
145153

146-
if (isAutocommitEnabled) {
154+
if (shouldAutocommit) {
147155
const params = { artifactDef, artifactId };
148156
const pollTask: Task = yield fork(pollAutocommitProgressSaga, params);
149157

app/client/src/git/store/actions/fetchStatusActions.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const fetchStatusInitAction =
1313
createArtifactAction<FetchStatusInitPayload>((state) => {
1414
state.apiResponses.status.loading = true;
1515
state.apiResponses.status.error = null;
16+
state.apiResponses.status.value = null;
1617

1718
return state;
1819
});
@@ -26,6 +27,15 @@ export const fetchStatusSuccessAction = createArtifactAction<
2627
return state;
2728
});
2829

30+
export const resetGitStatusAction =
31+
createArtifactAction<FetchStatusRequestParams>((state) => {
32+
state.apiResponses.status.loading = false;
33+
state.apiResponses.status.error = null;
34+
state.apiResponses.status.value = null;
35+
36+
return state;
37+
});
38+
2939
export const fetchStatusErrorAction =
3040
createArtifactAction<GitAsyncErrorPayload>((state, action) => {
3141
const { error } = action.payload;

app/client/src/git/store/gitArtifactSlice.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
fetchStatusErrorAction,
2222
fetchStatusInitAction,
2323
fetchStatusSuccessAction,
24+
resetGitStatusAction,
2425
} from "./actions/fetchStatusActions";
2526
import {
2627
clearCommitErrorAction,
@@ -200,6 +201,7 @@ export const gitArtifactSlice = createSlice({
200201
clearDiscardError: clearDiscardErrorAction,
201202
fetchStatusInit: fetchStatusInitAction,
202203
fetchStatusSuccess: fetchStatusSuccessAction,
204+
resetGitStatus: resetGitStatusAction,
203205
fetchStatusError: fetchStatusErrorAction,
204206
fetchMergeStatusInit: fetchMergeStatusInitAction,
205207
fetchMergeStatusSuccess: fetchMergeStatusSuccessAction,

0 commit comments

Comments
 (0)