mirror of
https://github.com/tiddly-gittly/TidGi-Desktop.git
synced 2026-03-07 06:20:50 -08:00
fix
This commit is contained in:
parent
56a2ef167c
commit
95daa9ce99
2 changed files with 29 additions and 9 deletions
|
|
@ -1076,6 +1076,11 @@ export async function handleGitUploadPack(
|
|||
request.pipe(git.stdin);
|
||||
git.stdout.pipe(response);
|
||||
|
||||
// Handle stdin errors to prevent process from hanging
|
||||
git.stdin.on('error', (error: Error) => {
|
||||
console.error('Git upload-pack stdin error:', error.message);
|
||||
});
|
||||
|
||||
git.stderr.on('data', (data: Buffer) => {
|
||||
console.debug('Git upload-pack stderr:', data.toString());
|
||||
});
|
||||
|
|
@ -1125,6 +1130,11 @@ export async function handleGitReceivePack(
|
|||
request.pipe(git.stdin);
|
||||
git.stdout.pipe(response);
|
||||
|
||||
// Handle stdin errors to prevent process from hanging
|
||||
git.stdin.on('error', (error: Error) => {
|
||||
console.error('Git receive-pack stdin error:', error.message);
|
||||
});
|
||||
|
||||
git.stderr.on('data', (data: Buffer) => {
|
||||
console.debug('Git receive-pack stderr:', data.toString());
|
||||
});
|
||||
|
|
|
|||
|
|
@ -483,8 +483,10 @@ export class Git implements IGitService {
|
|||
*/
|
||||
public async getGitExecutablePath(): Promise<string> {
|
||||
const platform = process.platform;
|
||||
const gitExecutable = platform === 'win32' ? 'git.exe' : 'git';
|
||||
return path.join(LOCAL_GIT_DIRECTORY, 'cmd', gitExecutable);
|
||||
if (platform === 'win32') {
|
||||
return path.join(LOCAL_GIT_DIRECTORY, 'cmd', 'git.exe');
|
||||
}
|
||||
return path.join(LOCAL_GIT_DIRECTORY, 'bin', 'git');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -493,7 +495,7 @@ export class Git implements IGitService {
|
|||
public async handleInfoRefs(workspaceId: string, service: string, _request: IncomingMessage, response: ServerResponse): Promise<void> {
|
||||
const repoPath = await this.getWorkspaceRepoPath(workspaceId);
|
||||
if (!repoPath) {
|
||||
response.statusCode = 404;
|
||||
response.writeHead(404, { 'Content-Type': 'text/plain' });
|
||||
response.end('Workspace not found');
|
||||
return;
|
||||
}
|
||||
|
|
@ -502,7 +504,10 @@ export class Git implements IGitService {
|
|||
await gitOperations.handleGitInfoReferences(repoPath, service, response);
|
||||
} catch (error) {
|
||||
logger.error('Git info/refs error:', { error, workspaceId, service });
|
||||
throw error;
|
||||
if (!response.headersSent) {
|
||||
response.writeHead(500, { 'Content-Type': 'text/plain' });
|
||||
response.end('Git info/refs failed');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -512,7 +517,7 @@ export class Git implements IGitService {
|
|||
public async handleUploadPack(workspaceId: string, request: IncomingMessage, response: ServerResponse): Promise<void> {
|
||||
const repoPath = await this.getWorkspaceRepoPath(workspaceId);
|
||||
if (!repoPath) {
|
||||
response.statusCode = 404;
|
||||
response.writeHead(404, { 'Content-Type': 'text/plain' });
|
||||
response.end('Workspace not found');
|
||||
return;
|
||||
}
|
||||
|
|
@ -521,7 +526,10 @@ export class Git implements IGitService {
|
|||
await gitOperations.handleGitUploadPack(repoPath, request, response);
|
||||
} catch (error) {
|
||||
logger.error('Git upload-pack error:', { error, workspaceId });
|
||||
throw error;
|
||||
if (!response.headersSent) {
|
||||
response.writeHead(500, { 'Content-Type': 'text/plain' });
|
||||
response.end('Git upload-pack failed');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -531,18 +539,20 @@ export class Git implements IGitService {
|
|||
public async handleReceivePack(workspaceId: string, request: IncomingMessage, response: ServerResponse): Promise<void> {
|
||||
const repoPath = await this.getWorkspaceRepoPath(workspaceId);
|
||||
if (!repoPath) {
|
||||
response.statusCode = 404;
|
||||
response.writeHead(404, { 'Content-Type': 'text/plain' });
|
||||
response.end('Workspace not found');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await gitOperations.handleGitReceivePack(repoPath, request, response);
|
||||
// Notify git state change after successful push
|
||||
this.notifyGitStateChange(repoPath, 'sync');
|
||||
} catch (error) {
|
||||
logger.error('Git receive-pack error:', { error, workspaceId });
|
||||
throw error;
|
||||
if (!response.headersSent) {
|
||||
response.writeHead(500, { 'Content-Type': 'text/plain' });
|
||||
response.end('Git receive-pack failed');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue