Skip to content

Better daemonization/service model #2

@abathur

Description

@abathur

The current MVP model uses bash coproc for bi-directional I/O. Convenient for dev, but has a few issues:

  • the daemon is actually attached to the shell...
    • it may show up in your window/tab title
    • terminal may block on exit because lilgitd is running (workaround at least in macOS Terminal.app: Terminal > Preferences > Shell > add lilgitd to the ask-before-closing exception list)
    • common signals for the shell may kill it (tentatively addressed with dc9f749)
  • there's technically a process per terminal; it's pretty small (a few mb), but it is a little wasteful if you run many terminals (as I do)

An obvious answer is "do what gitstatus does", and I assume named pipes/fifos are part of the solution, but this is a bit of a blind spot for me. I've done one-way client communication to a service over a fifo, but I'm not sure what the simplest way to design around multi-client is.

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions