plmhub
All commands

Git

5 commands · plm git

plm IS git: the same verbs you already type, plus a hub report when you push.

plm is git with a reporter riding along. Every git verb you already know keeps working, byte for byte, because anything plm does not recognise passes straight through to git. What plm adds is the other direction: when you push, plm tells PLMHub which commits you just shared and who made them, so the hub renders a live map of the repo without ever touching your code. Nothing leaves your machine until you push.

  1. Step 1 of 4

    Keep typing git. plm answers.

    plm is a superset of git. status, diff, rebase, stash, cherry-pick: unknown verbs pass through untouched, so you can alias git to plm and lose nothing. Git always works, even fully offline.

    plm status
    $ plm status
    On branch prob/84acc91b
    nothing to commit, working tree clean

    full form · plm <any git command>

  2. Step 2 of 4

    Commit like always, tag the problem.

    plm commit is git commit that also stamps the commit with the problem it belongs to (a PLM trailer). Nothing is sent to the hub yet: a commit is private, and its diff link cannot resolve, until it is pushed. The --for flag ties the commit to a problem explicitly; starting the problem with plm work does it automatically.

    plm commit
    $ plm commit -m "fix the reconnect loop" --for prob_84acc91b
    ✓ committed

    full form · plm commit -m "fix the reconnect loop" [--for <problem-id>]

  3. Step 3 of 4

    Push is where the hub learns.

    A commit is yours alone until you push it. On push, plm reports exactly the commits that landed on the remote, each with its author, branch, and problem, so the hub shows only shared history and every diff link resolves on your own host. plm map pulls the whole project picture back into your terminal when you want it.

    plm push
    $ plm push
    ✓ pushed · reported 3 commits to PLMHub

    full form · plm push [<git args>]

  4. Step 4 of 4

    Offline is not an error

    Hub reports that cannot be delivered land in .plmhub/queue/ (a directory next to .git) and flush on your next online command. Nothing blocks, nothing is lost, git never waits for a network.

    plm queue
    $ plm queue --flush
    ✓ delivered 2, 0 still queued

    full form · plm queue [--flush]

Also in this chapter

plm map
$ plm map

Print the project map. ETag-cached, works offline.

  • Offline-first: .plmhub/ is a directory (like .git). Hub writes that cannot be delivered land in .plmhub/queue/ and flush on the next online command.
  • Any git command plm does not know passes straight through to git, so plm can be your only git remote-facing tool.
  • Starting and closing problems (plm work, plm done) lives in the Goals & Problems chapter; this one is the git wrapper itself.