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.
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 statusOn branch prob/84acc91bnothing to commit, working tree cleanfull form · plm <any git command>
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✓ committedfull form · plm commit -m "fix the reconnect loop" [--for <problem-id>]
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 PLMHubfull form · plm push [<git args>]
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 queuedfull form · plm queue [--flush]
Also in this chapter
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.