[ 
https://issues.apache.org/jira/browse/IVY-1316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13144624#comment-13144624
 ] 

Maarten Coene commented on IVY-1316:
------------------------------------

1) The default overwriteMode was set to 'newer' for backwards compatibility 
reasons.
2) I agree the log message should be more clear when an artifat is not retrieved
                
> ivy:retrieve Ant tasks should have overwriteMode of "always" by default, 
> inform user when file not overwritten
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: IVY-1316
>                 URL: https://issues.apache.org/jira/browse/IVY-1316
>             Project: Ivy
>          Issue Type: Improvement
>          Components: Ant
>    Affects Versions: 2.2.0
>            Reporter: Brett Langston
>              Labels: ant, retrieval
>
> The Ant ivy:retrieve task defaults to overwriting the destination file only 
> if one with a more recent timestamp is available (overwriteMode="newer").  
> Moreover, if it decides not to overwrite, it informs the user that the 
> artifact was retrieved, even though it wasn't.  This default behavior and 
> incorrect retrieval message caused us a bit of pain today.
> These are the two main problems, with some possible solutions:
> 1)  Even though the ivy.xml file specified the desired revision, it was not 
> retreived because the desired revision had an older timestamp than what the 
> user already had.  This will happen constantly in the scenario where the user 
> is changing their ivy.xml file to work with an older version of an artifact.  
> Why is it assumed that the user will only be pulling down newer and newer 
> artifacts?  It is quite common to want artifacts with older timestamps than 
> what you are working with at the moment.  The default value of 
> overwriteMode="newer" for the ivy:retrieve task is surprising, and goes 
> against the default behavior of any other file utilities I can think of.
> Proposed solution:  Make the ivy:retrieve overwriteMode="always" be the 
> expected default.  After all, if I tell Ivy to retrieve something, I expect 
> it to be retrieved!  It makes much more sense to override this behavior only 
> in the case where the "newer" behavior is wanted, not the other way around.
> 2)  The ivy:retrieve Ant task told us that the higher version had been 
> retrieved, even though it was not.
> Proposed solution:  If Ivy is going to decide not to retrieve an artifact due 
> to the overwriteMode setting, it should inform the user that the desired 
> version was found, but that it was not used due to the overwriteMode.  
> Otherwise, the user (rightly) assumes that if Ivy says an artifact was 
> retrieved, it was, indeed, retrieved.
> In summary, we might have shipped the wrong version of an artifact, just 
> because the ivy:retrieve task didn't give us the version we asked for due to 
> an older timestamp.  It seems like a default overwriteMode of "newer" is very 
> dangerous (especially since the user isn't informed of the lack of 
> overwrite), and that a default overwriteMode of "always" is the more expected 
> behavior when requesting a file to be placed somewhere.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to