fix: use working clones for git repos

- Create normal working clones for remote repositories
- Initialize blank repositories with a main branch
- Align pull and branch helpers with unborn HEAD handling
- Gate fetch/pull on repositories with a remote

Quality gates: vitest repositories-settings-tab (passed); api pytest blocked by missing fastapi in environment
This commit is contained in:
2026-05-22 19:54:42 +02:00
parent 2525c58471
commit 4547105f3b
10 changed files with 215 additions and 38 deletions
+8 -4
View File
@@ -17,6 +17,7 @@ interface GitToolbarProps {
repoId: string;
currentBranch: string;
branches: string[];
hasRemote: boolean;
onBranchChange: (branch: string) => void;
onRefresh: () => void;
}
@@ -26,6 +27,7 @@ export const GitToolbar = ({
repoId,
currentBranch,
branches,
hasRemote,
onBranchChange,
onRefresh,
}: GitToolbarProps) => {
@@ -55,6 +57,7 @@ export const GitToolbar = ({
}, [loadStatus]);
const handleFetch = async () => {
if (!hasRemote) return;
setLoading(true);
try {
await fetchRepository(projectId, repoId);
@@ -67,9 +70,10 @@ export const GitToolbar = ({
};
const handlePull = async () => {
if (!hasRemote) return;
setLoading(true);
try {
await pullRepository(projectId, repoId, currentBranch);
await pullRepository(projectId, repoId, currentBranch || undefined);
await loadStatus();
onRefresh();
} catch {
@@ -162,10 +166,10 @@ export const GitToolbar = ({
</div>
<div className="toolbar-group">
<button
<button
className="toolbar-button"
onClick={handleFetch}
disabled={loading}
disabled={loading || !hasRemote}
type="button"
>
<Icon name="fetch" size="sm" /> Fetch
@@ -173,7 +177,7 @@ export const GitToolbar = ({
<button
className="toolbar-button"
onClick={handlePull}
disabled={loading}
disabled={loading || !hasRemote}
type="button"
>
<Icon name="pull" size="sm" /> Pull
+1 -1
View File
@@ -196,6 +196,7 @@ export const RepoWorkspace = () => {
repoId={selectedRepoId}
currentBranch={currentBranch}
branches={branches}
hasRemote={Boolean(selectedRepo?.remote_url)}
onBranchChange={(branch) => {
setCurrentBranch(branch);
const newParams = new URLSearchParams(searchParams);
@@ -391,4 +392,3 @@ const FileBrowser = ({
</div>
);
};