fix: better handling of gitignore (once)

This commit is contained in:
2026-02-16 11:29:59 +01:00
parent 4695570c34
commit 4c437cbea2
4 changed files with 7 additions and 7 deletions

View File

@@ -135,7 +135,7 @@ export class GitEngine {
}
private async existingStageTargets(projectPath: string): Promise<string[]> {
const targets = ['posts', 'media', 'meta', '.gitattributes'];
const targets = ['posts', 'media', 'meta', 'thumbnails', '.gitattributes', '.gitignore'];
const existing: string[] = [];
for (const target of targets) {
@@ -383,6 +383,8 @@ export class GitEngine {
}
}
await this.ensureGitignore(projectPath);
const stageTargets = await this.existingStageTargets(projectPath);
if (stageTargets.length === 0) {
emitProgress('staging-files', 75, 'Staging project files...', 'no target files found');

View File

@@ -49,8 +49,6 @@ export const GitSidebar: React.FC = () => {
return;
}
await window.electronAPI.git.ensureGitignore(resolvedProjectPath);
const repoState = await window.electronAPI.git.getRepoState(resolvedProjectPath);
setIsRepo(repoState.isRepo);
setCurrentBranch(repoState.currentBranch || null);

View File

@@ -294,8 +294,8 @@ describe('GitEngine', () => {
expect(mockRaw).toHaveBeenCalledWith(['lfs', 'track', '*.tiff']);
expect(mockRaw).toHaveBeenCalledWith(['lfs', 'track', '*.bmp']);
expect(mockRaw).toHaveBeenCalledWith(['lfs', 'track', '*.ico']);
expect(mockAdd).toHaveBeenNthCalledWith(1, ['posts', 'media', 'meta', '.gitattributes']);
expect(mockAdd).toHaveBeenNthCalledWith(2, ['--renormalize', 'posts', 'media', 'meta', '.gitattributes']);
expect(mockAdd).toHaveBeenNthCalledWith(1, ['posts', 'media', 'meta', 'thumbnails', '.gitattributes', '.gitignore']);
expect(mockAdd).toHaveBeenNthCalledWith(2, ['--renormalize', 'posts', 'media', 'meta', 'thumbnails', '.gitattributes', '.gitignore']);
expect(mockCommit).toHaveBeenCalledWith('initial commit');
expect(mockAddRemote).not.toHaveBeenCalled();
});

View File

@@ -35,12 +35,12 @@ describe('GitSidebar', () => {
};
});
it('checks gitignore defaults when sidebar loads', async () => {
it('does not modify gitignore when sidebar loads', async () => {
render(<GitSidebar />);
await screen.findByRole('button', { name: /initialize git/i });
expect((window as any).electronAPI.git.ensureGitignore).toHaveBeenCalledWith('/repo/path');
expect((window as any).electronAPI.git.ensureGitignore).not.toHaveBeenCalled();
});
it('shows Initialize Git button when active project is not a git repository', async () => {