Re: Can I remove multiple stashed states at a time?

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

 



On Sat, Oct 14, 2017 at 05:01:23PM +0200, Kevin Daudt wrote:

> On Fri, Oct 13, 2017 at 01:35:22PM -0400, Jeff King wrote:
> > On Fri, Oct 13, 2017 at 11:58:12AM +0900, 小川恭史 wrote:
> > 
> > You can also just do:
> > 
> >   for i in 1 2 3; do
> >      git stash drop $i
> >   done
> > 
> 
> Doesn't stash 2 become stash 1 after the first drop, and the same for 3,
> resulting in dropping stash 1, 3 and 5?
> 
> So something like
> 
>   for i in 3 2 1; do
>       git stash drop $i;
>   done
> 
> Or leave $i out altogether.

Oops, you're right.

For that matter, I didn't double check that a single "reflog delete"
handles this case correctly. That should be easy to test, though:

  git init
  echo base >file
  git add file
  git commit -m base

  for i in $(seq 10); do
    echo $i >file
    git stash push -m $i
  done

  git reflog delete --updateref --rewrite refs/stash@{1} refs/stash@{2} refs/stash@{3}

That seems to leave:

  $ git stash list
  stash@{0}: On master: 10
  stash@{1}: On master: 8
  stash@{2}: On master: 6
  stash@{3}: On master: 4
  stash@{4}: On master: 3
  stash@{5}: On master: 2
  stash@{6}: On master: 1

which is not what we wanted (I'd guess also that it rewrites the reflog
3 times, negating any efficiency I claimed earlier).

-Peff



[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