Hi,
I'd like to propose adding a small porcelain workflow for sharing stashes through a Git remote.
git stash export and git stash import already provide a transportable representation of stashes. I tested the following workflow using existing commands:
Alice:
git stash export --print stash@{0}
git push origin <export-tip>:refs/stashes/alice/wipBob: git fetch origin refs/stashes/alice/wip:refs/shared-stashes/origin/alice/wip git stash import refs/shared-stashes/origin/alice/wip
The imported stash is a normal local stash and retains the original stash object ID. Removing the remote ref afterward does not affect Bob's imported stash.
I'd like to add porcelain around this existing mechanism for four operations:
1. publish a selected stash to a remote 2. list available shared stashes 3. get a shared stash as a normal local stash 4. remove a shared stash from the remote
This would not introduce a new stash object format, server-side service, or synchronization model. It would essentially compose the existing export/import mechanism with normal push/fetch operations. Before working on an implementation, I'd appreciate feedback on a few design points: 1. What remote ref namespace would be appropriate? 2. Should shared stashes use an explicit user-provided name or an object-derived identifier? 3. Should listing only inspect remote refs, or fetch the export commits so stash messages can also be displayed? 4. What command naming would fit best with the existing git stash interface?
If the general direction seems reasonable, I can follow up with a more concrete interface and implementation.
Thanks, Hanan Arshad