Skip to content

If local .db files are gitignored then looms will be hard or impossible to test #400

@Gromski

Description

@Gromski
Diagnostic Information
Property Value
CLI Version 0.5.3
Node.js Version v24.5.0
OS darwin
OS Version 25.1.0
Architecture x64
Capabilities web
Claude CLI Version 2.0.73 (Claude Code)

I'm running a db locally with the .db files stored within the project structure. However they're gitignored, which means that they don't transfer to the loom when fixing an issue. As a result I can't test the changes in the loom without merging the fix first


Enhancement Request Analysis

Questions for Reporter

Question Answer
What type of database are you using (SQLite, PostgreSQL via Docker, etc.) and how is it configured in your main branch? @Gromski, please edit this issue to answer these questions.
Are your .db files explicitly listed in .gitignore or matched by a pattern (e.g., *.db)? Could you share the relevant .gitignore entries?
Would you prefer iloom to automatically copy database files to looms, or would you like a configuration option to control this behavior?
Are there any security concerns with copying potentially sensitive database content to looms that we should consider?

Problem Summary
When using local database files (.db, .sqlite, etc.) that are gitignored, these files don't get copied to iloom workspaces (looms), preventing proper testing of database-dependent features without first merging changes back to the main branch. This breaks the isolated testing environment that iloom provides.

User Impact
Developers working with local file-based databases (SQLite, etc.) cannot fully test their changes in isolated looms, forcing them to either merge untested code or manually copy database files to each workspace, defeating iloom's automation benefits.

Enhancement Goal
Enable iloom to handle gitignored database files intelligently, allowing developers to test database-dependent changes in isolated workspaces while maintaining security and not accidentally committing sensitive data.

Next Steps

  • Reporter to answer questions above for full context
  • Investigate adding a copyGitIgnoredPatterns configuration option in .iloom/settings.json
  • Consider implementing automatic detection of common database file patterns with opt-in copying

📋 Complete Context & Details (click to expand)

Current Behavior
When il start creates a new loom workspace, it:

  1. Creates a Git worktree (which only includes tracked files)
  2. Copies environment files (.env, .env.local, etc.) from the main branch
  3. Sets up database branching for cloud databases (Neon)
  4. Does NOT copy gitignored database files (.db, .sqlite, etc.)

This means local file-based databases remain in the main branch directory and aren't accessible from the loom workspace.

Proposed Solution
Add configuration support for copying specific gitignored files/patterns to looms:

  1. Configuration in .iloom/settings.json:
{
  "workspace": {
    "copyGitIgnoredPatterns": [
      "*.db",
      "*.sqlite",
      "data/*.db"
    ]
  }
}
  1. Implementation in LoomManager:
  • During workspace creation, after worktree setup
  • Check for configured patterns
  • Copy matching files from main branch to loom workspace
  • Preserve file permissions and structure
  • Log copied files for transparency
  1. Security Considerations:
  • Never copy these files during il finish (one-way copy only)
  • Add warning if large database files detected (>100MB)
  • Document that these files should remain gitignored
  • Consider adding .iloom/workspace.ignore for workspace-specific ignores

Benefits

  • Maintains iloom's isolated testing promise for all project types
  • Supports local development workflows without cloud database dependencies
  • Preserves security by keeping database files gitignored
  • Provides flexibility through configuration rather than hard-coding behavior
  • Enables true parallel development with database-dependent features

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions