On Fri, May 9, 2025 at 4:15 PM brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> wrote: > > On 2025-05-09 at 16:53:17, D. Ben Knoble wrote: > > - Can't we "git push <remote> stash[@{n}]:<branch>" to share a stash somewhere? > > - And then, doesn't "git stash apply [--index] <arbitrary sha>" work? > > (At which point you could presumably create a new stash, though I'll > > admit that's cumbersome relative to dedicated export/import.) > > I haven't tried, but it does certainly seem plausible that you can > import and export them in that way. > > > I can see how that doesn't help you quickly export a whole _chain_ of > > stashes, so I'm not saying "this series seems like the wrong tack" > > (far be it from me, who doesn't understand your use case, to say > > that!). Rather, I'm confused about the inability to move a (single) > > stash across machines. > > Let me explain the intended use case here. At work, many people use > GitHub Codespaces, which are throwaway development environments. Since > one's whole set of stashes cannot be imported or exported, it's hard to > use stashes effectively in such a case, since they'd be deleted when you > destroyed the environment. I like stashes a lot (my personal Git > development repository has 153), so I want to synchronize all of them > across. > > The other case is people who routinely work on multiple machines. > (Remote or throwaway development environments, like GitHub Codespaces or > Devcontainers, are just a special case of this.) Many of these users > want to keep their working tree and other state across machines and lots > of them rely on cloud syncing services, such as Dropbox, to do this, > which often ends up corrupting the repository (as outlined in the FAQ). > Providing a way to quickly and easily synchronize the working tree > across systems, including any stashes, is really important to encourage > best practices that don't result in data loss or have unpleasant > security issues (such as untrusted local config). > > > Unrelated question: Can we import arbitrary refs into stashes? That > > is, what happens if the commit structure doesn't look right? (Maybe I > > should go read the tests and see.) > > That doesn't work because the commit used here has to have a fixed > number of parents, since we need to keep track of the index and the > working tree. Stash commits, even the regular ones used in the reflog, > always have to have a certain structure. > > If you try to do that anyway, you get this message: > > % git stash import HEAD > error: 3bf235c35ef51d01663f2ab9665026b05b8af1dd is not a valid exported stash commit > > I did try to avoid people accidentally destroying data. > -- > brian m. carlson (they/them) > Toronto, Ontario, CA You've answered all my questions, thanks! -- D. Ben Knoble