Subject: Re: [PATCH 2/2] git-gc: skip stashes when expiring reflogs

From: Andreas Ericsson <[email-masked]>
Date: Fri, 13 Jun 2008 06:26:28 +0200

Wincent Colaiuta wrote:
> El 12/6/2008, a las 6:32, Eric Raible escribió:
> 
>> Nicolas Pitre <nico <at> cam.org> writes:
>>
>>> As you say, branches are there just for that: keeping changes for
>>> months.  Stashes are not meant to be used like that nor should we
>>> encourage it.
>>
>> This unfortunately goes against the recommended usage in John Wiegley's
>> otherwise excellent "Git From the Bottom Up".  I've contacted him 
>> separately to
>> make him aware of the collective wisdom of not relying on stashes for 
>> long-term
>> storage.
> 
> Yes, we shouldn't _encourage_ people to use stashes as a long-term 
> storage mechanism, but neither should we allow old stashes to silently 
> disappear as a result of reflog expiry, especially as part of automatic 
> garbage collection. There are two reasons:
> 
> (1) Normal reflogs accumulate cruft automatically through normal use and 
> if not cleaned up they'll just grow and grow and grow. On the other 
> hand, for "git stash" to accumulate cruft over the long term the user 
> actually has to take action and _abuse_ them. Abuse is less likely 
> because it requires this conscious action, and as the output of "git 
> stash list" gets bigger and more unwieldy this will serve to encourage 
> people to clean out their stashes themselves, or not let the list grow 
> out of control in the first place. In other words, the size of the stash 
> reflog is unlikely to be a problem.
> 
> (2) Automatically expiring normal reflogs is a service to the user, 
> because it's cleaning up something that is automatically generated. 
> Stashes are the result of a concious user decision to create them, so 
> automatically "cleaning them up" is _not_ going to help the user.
> 

I agree.

> So yes, branches _are_ better and more appropriate for long term storage 
> than stashes, but even so I don't think it's right for us to risk 
> throwing away information that the user explicitly stashed and expected 
> Git to look after for them.
> 

Why are branches better and more appropriate?
Is it because the developer who first thought of stashes didn't think they'd
be used for any halflong period of time?
Is it because there are actions you can do on a branch that you can't do on
a stash?

Who's to say what's appropriate and not? If I explicitly tell a system to
save something for me I damn well expect it to be around when I ask that
same system to load it for me too.

-- 
Andreas Ericsson                   [email-masked]
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231