Re: [PATCH 0/2] git stash drop stash@{2.days.ago}
Junio C Hamano <[email protected]> Thu, 30 Jul 2026 13:29:39 -0700
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
Junio C Hamano <[email protected]> writes: > Because 'stash' is implemented in terms of the reflog, it can accept > not only a small integer index (such as 'stash@{4}') but also a > time-based reference. This is not a good thing. > > - 'git stash pop stash@{2.days.ago}' picks the first stash entry > that is no younger than the specified time and uses it to modify > the working tree and the index, but then removes all stash > entries that are no younger than that specified time. > > - 'git stash drop stash@{2.days.ago}' does the same, except that > no entry is used to affect the working tree and the index. > > These two patches forbid passing time-based stash references to the > 'git stash drop' and 'git stash pop' commands as minor safety > improvements. > > 1/2: stash: record positional index in 'struct stash_info' > 2/2: stash: reject time-based selectors in drop and pop > > Documentation/git-stash.adoc | 8 ++++++++ > builtin/stash.c | 18 ++++++++++++++++++ > t/t3903-stash.sh | 13 +++++++++++++ > 3 files changed, 39 insertions(+) Sorry, it turns out that the collateral damange claim was completely bogus. We do abuse the reflog expiration machinery but make sure we only remove a single entry, it seems, so only one entry is consumed and then removed. Consider these patches retracted. Thanks.