Skip to content

Enable JSS's --git backend by default (pod becomes a git remote) #26

Description

@melvincarvalho

Context

JSS ships a `--git` flag that enables a Git HTTP backend — the pod becomes a real git remote for any path the user has ACL Read / Write on. jspod currently doesn't pass `--git` to JSS, so every fresh `npx jspod` is missing this capability for no good reason.

Turning it on by default unlocks meaningful surface area without any new code:

  • `git clone http://localhost:5444/public/apps/` — clone any public app or resource the pod hosts
  • `git push http://localhost:5444/public/apps/` — push updates as the pod owner (DPoP-bound auth, gated by ACL Write)
  • `git pull` — keep a local working copy in sync with the pod
  • Two-way collaboration: multiple devs can collaborate on a Solid app hosted in a shared pod

Proposal

Add `--git` to jspod's default spawn args. Add `--no-git` flag for users who want to opt out. Update docs.

Out of scope (separate issues)

  • Init / server-side clone — JSS doesn't currently let you create a new bare repo at a pod path over HTTP. Without that, `git push` to a fresh path 404s. Filed upstream as JSS init primitive issue (see comments below for the exact link). This issue is just about turning on what JSS already provides; the `jspod install` story (Support git sources in jspod install (jspod install <repo>) #25) needs the upstream init primitive to land before it's smooth.
  • Auth ergonomics — git CLI doesn't speak DPoP natively. Push from the CLI today needs `git -c http.extraHeader="Authorization: DPoP "` or a credential helper. Worth a separate doc + maybe a `jspod-git-helper` script.

Test plan once shipped

```bash

From a fresh npx jspod:

git clone http://localhost:5444/public/apps/pilot ./pilot-local

Should clone the bundled Pilot app (assuming it gets git-init'd as part of seed,

or after the upstream init lands)

Then locally:

cd pilot-local
git log

History should match the upstream Pilot repo (once we either bundle as a real

repo or fetch on first start)

```

Cross-references

  • jspod#24, jspod#25 — install-apps story (this is the enabling capability)
  • JSS#464 — apps-in-pods primitives
  • JSS init issue (linked above) — required before `git push` to a fresh path works

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions