[darcs-users] [patch156] Remove unused force_replace_slurpy. (and 3 more)

Ganesh Sittampalam ganesh at earth.li
Tue Feb 23 20:38:10 UTC 2010


On Sat, 20 Feb 2010, Petr Rockai wrote:

> Hi,
>
> Ganesh Sittampalam <bugs at darcs.net> writes:
>> I've started reviewing this. Here are some partial comments. Petr, are
>> you ok for me to any patches I'm already happy with (so long as darcs
>> compiles/the testsuite passes, of course) while the rest of the review
>> is still ongoing?
> Sure, go ahead.

I've now pushed a few patches. Note that some of the remaining patches are 
in conflict with current HEAD.

The rest of my review is at the bottom.

>>> Fri Feb 12 10:32:58 GMT 2010  Petr Rockai <me at mornfall.net>
>>>   * Use a more canonic way to create empty hashed pristine.
>>
>>> Fri Feb 12 10:18:44 GMT 2010  Petr Rockai <me at mornfall.net>
>>>   * Use a more canonic way to create empty hashed pristine in optimize
>> (--upgrade).
>>
>> hardcoded "_darcs/pristine.hashed" is not a good standard, IMO
> Dunno. It's easier to write this way and it can't be changed most of the
> time (only when we break backward compatibility) and is easy to grep
> anyway. It also avoids an extra lookup when reading the code.

I think we need to have a separate discussion on darcs-users to establish 
the standard one way or another.

>>> Fri Feb 12 10:17:51 GMT 2010  Petr Rockai <me at mornfall.net>
>>>   * Cannot "darcs remove" non-existent files.
>>
>> What's the logic behind this? I agree that removing a file that's in
>> pristine but not working is redundant, but I don't see why there should
>> be a complaint. BTW while scratching my head at the remove code I found
>> a bug which I'll raise as a separate ticket.
> Hm. The logic is that old darcs would write out a pending patch with the
> removal even if the file was not there, which would then alter behaviour
> of darcs show files --pending. Or somesuch (maybe the other way
> around). The same patch should have a change to the testsuite to a
> similar effect. I am not convinced either way, just seemed a sane thing
> to do.

Thinking about it again, I can also see a use case for when you want to 
make sure the file stays marked as removed but actually put it back later. 
So I'm against this patch without further evidence on the other side.

>>> Thu Feb 11 00:14:35 GMT 2010  Petr Rockai <me at mornfall.net>
>>>   * Re-implement setScriptsExecutable using Trees instead of Slurpies.
>>
>>> +    tree <- expand =<< readPlainTree "." -- TODO filter out _darcs
>>
>> This TODO needs doing
> Well, it should be safe, even if less optimal. It could be argued boring
> files should be ignored as well here. But then, this is only called in
> contexts where we are constructing a new working tree
> (get/convert/test/trackdown) and we have an untouched _darcs (which by
> darcs action alone cannot contain anything starting with #! even if
> there was any harm in +x-ing such files). Ok ok I'll do that.

OK, this is awaiting amendment/a follow-up.

>>> Mon Feb  8 23:11:25 GMT 2010  Petr Rockai <me at mornfall.net>
>>>   * Avoid use of SlurpDirectory in Commands.ShowFiles.
>>>
>>> +import Prelude hiding ( all )
>>> ...
>>> +all <- ...
>>
>> Just call the variable a different name instead of breaking hiding
>> standard Prelude functions in the rest of the module
> : - ( I hate the shadowing warning. All concise and reasonable names I
> want to use are always taken...

I'd be in favour of turning off the shadowing warnings, because they block 
legitimate deliberate uses of shadowing where you want to avoid 
accidentally reusing the shadowed value.

But actually I'm still against using standard Prelude function names as 
variables in anything but a very limited scope, because of the potential 
for confusion for someone else editing the code later.

>>> Mon Feb  8 22:47:04 GMT 2010  Petr Rockai <me at mornfall.net>
>>>   * Remove implementation of --store-in-memory, simplifying matcher code.
>>
>> This seems to be a live option. If you're dumping it, (a) there needs to
>> be some discussion and (b) you haven't actually removed it properly,
>> you're just ignoring it.
> Yeah, I dumped it because I didn't think it was of any use. Discussion
> can of course happen, my vote is to drop it. :) I agree it should be
> removed completely if that's the decision.

The right way to remove features is to explicitly start a discussion, not 
slip in a patch and hope it gets past the reviewer :-)

> Fri Feb 12 10:36:41 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Remove SlurpDirectory.

OK

> Fri Feb 12 10:33:22 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Replace slurp_recorded with readRecorded in make_new_pending.

OK

> Fri Feb 12 10:28:42 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Reimplement applyHashed in terms of hashedTreeIO (Storage.Hashed.Monad).

Why does this ignore the cache parameter?

Note that we are switching the monad apply uses from SlurpMonad to TreeIO,
and as a result fail inside apply turns directly into fail in IO, which is
what the old code did explicitly.

I still don't like hardcoded directories.

Otherwise OK.

> Fri Feb 12 10:19:46 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Purge unused bits of checkpoint reading.

OK

Note that there were two separate copies of read_checkpoints!

> Thu Feb 11 09:31:53 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Port Commands.Move from Slurpy to Tree.

OK

> Thu Feb 11 00:13:53 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Re-implement optimize --relink using Trees instead of Slurpies.

More hardcoded paths

otherwise OK

> Thu Feb 11 00:13:26 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Use stock setScriptsExecutable from Darcs.Repository in Commands.Convert.

The old code worked on an explicit repository, while the new code relies 
on getCurrentDirectory. Are we sure this is ok?

otherwise OK

> Wed Feb 10 23:58:47 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Purge unused fileExists from Commands.Add.

description wrong - should be Commands.Record

> Wed Feb 10 23:57:54 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Purge Slurpy usage in Commands.Rollback (use announceFiles from whatsnew).

OK

> Wed Feb 10 23:50:00 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Generalize announceFiles used by whatsnew and use it in record as well.

This extracts options from the repository rather than having them passed 
down to it. What difference does this make?

otherwise OK

> Wed Feb 10 23:48:20 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Re-work Commands.Add (simplify, use the new treeHas* functions).

Replacing a chain of tests with a whole set at once - could any of the 
later tests fail when previously they'd have been skipped?

otherwise OK

> Wed Feb 10 23:47:11 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Re-implement the Slurp-based file/dir existence-check functions in 
terms of Trees.

I think we should be trying to break up Darcs.Utils or restrict it to 
really generic utility code, rather than dumping more stuff in it.
Can this stuff go elsewhere or in a new module?

otherwise OK

> Wed Feb 10 12:26:01 GMT 2010  Petr Rockai <me at mornfall.net>
>   * Replace SlurpDirectory usage in Commands.Add with Tree-based code.

Likewise for Darcs.Utils

otherwise OK



More information about the darcs-users mailing list