git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git stash push/save/create all return exit code 0, even if no object was created
@ 2020-03-22 15:09 Σταύρος Ντέντος
  2020-03-22 15:50 ` Junio C Hamano
  0 siblings, 1 reply; 3+ messages in thread
From: Σταύρος Ντέντος @ 2020-03-22 15:09 UTC (permalink / raw)
  To: git

Hello there,

I am trying to run a `git checkout` command on a repository, without
the possibility of getting any error message about files interfering
with the checkout process.
I thought a safe way to do this was to run `git-stash`, similarly to
`rebase.autoStash = true`

However, I find two issues with those:
1) Exit code is 0, even if no object/stash was created.

It feels weird to parse stdout/stderr to decide "what happened".

2) `git stash create` (which sounds more like what I need), does not
clear what it was stored.
I can "take the pain" of printing the object-sha1 to be traceable if
something happens (even though I would prefer more if it was
"securely" stored in `refs/stash` i.e. `git stash push`), but then
`git stash` won't clean what it just stored.
Is the solution to also run `git reset --hard` there?

With regards,
Ntentos Stavros

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: git stash push/save/create all return exit code 0, even if no object was created
  2020-03-22 15:09 git stash push/save/create all return exit code 0, even if no object was created Σταύρος Ντέντος
@ 2020-03-22 15:50 ` Junio C Hamano
  2020-03-22 16:15   ` Σταύρος Ντέντος
  0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2020-03-22 15:50 UTC (permalink / raw)
  To: Σταύρος
	Ντέντος
  Cc: git

This has been asked and answered recently at least twice, I think.

https://lore.kernel.org/git/01020169a7ad6af3-ad50e2d1-19fb-46eb-b397-759f8d579e8b-000000@eu-west-1.amazonses.com/

https://lore.kernel.org/git/CADZUK1cjvifbFYk9w6+vE95jgEBuwjoOi_1QfZHoPFBXuXHCCg@mail.gmail.com/

I think these previous ones wanted something more relevant to "git
stash", in the sense that they wanted to be able to

	git stash
	do some other things
	do many other things
	if earlier "git stash" produced an entry
		git stash pop

and the answer to that may be "use stash create upfront, save it
away yourself in a variable or something, then use that to restore"

But to me your use case does not look like it has much to "git
stash".  If a user wants to ask "is my working tree and the index
dirty (iow, have I made any changes)?", wouldn't "git status" be the
right tool for the job?  It even has an option to produce output
designed to be machine readable.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: git stash push/save/create all return exit code 0, even if no object was created
  2020-03-22 15:50 ` Junio C Hamano
@ 2020-03-22 16:15   ` Σταύρος Ντέντος
  0 siblings, 0 replies; 3+ messages in thread
From: Σταύρος Ντέντος @ 2020-03-22 16:15 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sun, 22 Mar 2020 at 17:50, Junio C Hamano <gitster@pobox.com> wrote:
>
> This has been asked and answered recently at least twice, I think.
>
> https://lore.kernel.org/git/01020169a7ad6af3-ad50e2d1-19fb-46eb-b397-759f8d579e8b-000000@eu-west-1.amazonses.com/
>
> https://lore.kernel.org/git/CADZUK1cjvifbFYk9w6+vE95jgEBuwjoOi_1QfZHoPFBXuXHCCg@mail.gmail.com/
>
> I think these previous ones wanted something more relevant to "git
> stash", in the sense that they wanted to be able to
>
>         git stash
>         do some other things
>         do many other things
>         if earlier "git stash" produced an entry
>                 git stash pop
>
> and the answer to that may be "use stash create upfront, save it
> away yourself in a variable or something, then use that to restore"

I guess I was too much into my stuff, and couldn't think straight on
how to search for this. Apologies, and thank you! :-)

Maybe I find https://public-inbox.org/git/20190927230747.yjdeaen34nnpcchy@camp.crustytoothpaste.net/
| grep -vP '^??' (or git-status-filtering equivalent; I'm in a rush to
commit this e-mail) somehow useful in my case

> But to me your use case does not look like it has much to "git
> stash".  If a user wants to ask "is my working tree and the index
> dirty (iow, have I made any changes)?", wouldn't "git status" be the
> right tool for the job?  It even has an option to produce output
> designed to be machine readable.

I tried to minimize the message, and left that important part out. I
am also part of the first case.

Then my fear/question remains:
* Wouldn't it be safer if it was "securely" stored in `refs/stash`
(i.e. `git stash push`) instead of `sha1="$(git stash create)"; echo
"Created autostash: ${sha1}"`?
  How is `rebase.autoStash = true` protected from "stuff" happening?
  A tin-foil hat example that I'm thinking is terminal output lost for
some reason and git rebase ancestor is killed -9.
  Or is there is "not much" to protect against?
* ... then `git stash` won't clean what it just stored. Is the
solution to also run `git reset --hard` here?
--
With regards,
Ntentos Stavros

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-03-22 16:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-22 15:09 git stash push/save/create all return exit code 0, even if no object was created Σταύρος Ντέντος
2020-03-22 15:50 ` Junio C Hamano
2020-03-22 16:15   ` Σταύρος Ντέντος

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).