Re: [PATCH v5 0/4] Importing and exporting stashes to refs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux