This is a bit of 30,000ft thinko. On 01/09/2021 08:44, c.buhtz@xxxxxxxxx wrote: > Hello, > my question has to goals. I want to understand the design decisions > behind a (missing) feature and and wan't to explore the needs of other > users before I start to implement something. > > There is no usual way to exchange stashes with other repos/users. > Stashes are code snippets that are unfinished and not clean enough to > commit them anywhere not even in another branch. I suspect that this "not even in another branch" is where the confusion may arise. I've always understood git branches to be lightweight and ephemeral. We usually fail to take that mental model to its rightful conclusion. While some branches are rock solid release branches, that does not preclude their use for whimsical, unfinished snippets of code. There can be reticence to create local wip branches (a trap I often fall into) when we should be far more free with our branches - they take up no space! Ultimately stashes are branches, their _extra_ capability is that they can handle un-staged changes and other _local_ changes to allow for interruptions. > > Why? What is the concept behind this? I am sure this was well thought. > I just try to understand. > > A feature like this is often asked by users when you asked the search > engine of your trust. > > One workaround is to simply commit the stashed code, push/pull it, > checkoutit into the other repo and delete the last commit. If the commit was on a new [wip] branch then a later branch deletion and `gc` will clear it. Isn't this an XYproblem for how to exchange snippets? And how to decide/indicate what should be in the snippet? > > The other workaround is to create a patch-file from a stash. But then > the question is how to exchange this file? `send-email` ? > > Why not use the git infrastructure itself? > > I have workaround in my mind. I couuld use a script wich creates patch > files for each existing stash and commit them into the repo. Thats > all. To keep the repo "clean" the path files could be archived into a > hidden (dotted filed) tar file. Or the tar file could be stored inside > the ".git" folder if there is a way. The stash does manage to combine the selection of the code change files and creation of a branch [aka stash]. Maybe `commit` needs a --wip option that will create the branch while adding the selected files. The 'transmission' method would also need resolving as there are too many ways folk interact these days - we already have patches, tar files, remote push/fetch, then there will be web browsing methods.. > > I am interested in your thoughts about this. There is always (after checking the manual) `git stash branch <branchname> [<stash>]` - not used it myself, so it may not do what I think I read.. Sounds like it needs combining with an initial `stash push` to allow the new branch (containing the stash snippet) to be exchanged using the regular methods for on-branch code. -- Philip