On Tue, Feb 10, 2015 at 06:06:25PM +0000, Julian Foad wrote:
> I don't have any objection to merging this to trunk. Comments from a partial 
> review follow.
> 
> I'd like to repeat my request for a written description of what "pinning" 
> means. Specifically, the condition for an external definition to be eligible 
> for pinning, and in what way we change it. This should be written down 
> somewhere in the source tree. The doc string of svn_client_copy7() should 
> refer to it.
> 
> The doc string of svn_client_copy7() should describe the restriction on a WC 
> copy source being a complete, single-rev tree.
> 
> These new static functions need doc strings:
>   make_external_description()
>   resolve_pinned_externals()
>   queue_externals_change_path_infos()
> 
> Please adjust svncopy.pl's help text to direct the users of its 
> '--pin-externals' option to try 'svn copy --pin-externals' instead (or delete 
> the script, but as I said before I mildly prefer keeping it for now).
> 
> test_copy_pin_externals():
>   I gather that the purpose of this test is just to check that the 
> 'externals_to_pin' option takes effect, not to test the full range of 
> possible transformations and non-transformations of external definitions, and 
> that's why it only covers a small sample of possible forms of definition. The 
> test might be much simpler if it would test the exact string format of the 
> resulting definitions, instead of their parsed form. The input and output 
> cases could then be defined next to each other in the test source code for 
> easier reading. You might still want to parse the definitions just to 
> double-check that they're parsable.
>   The test calls svn_wc_parse_externals_description3(canonicalize_url=TRUE) 
> which is declared by its doc string as inappropriate when the input contains 
> a repos-relative URL, which it does.
>   The test says it sets up "parameters for pinning 2 externals" but in fact 
> sets up for 3; and while one case ensures a request for '^/A/D/H' doesn't 
> match '^/A/D/H@1'
>   It lacks test cases for externals_to_pin entries that don't match any 
> actual definition.
>   It lacks test cases for externals_to_pin entries that are keyed by the 
> 'wrong' target path/URL but otherwise would match an actual definition.
> 
> Do the tests cover: cases that use {DATE} format, and cases that have both 
> an operative rev and a peg rev? (I'm staring at the tests and not easily 
> seeing these.)
> 

Thanks for poking me on these points. I'll look into them.

> Repeating something I said before, re. {DATE}: Looks like timestamp rev specs 
> can have an issue with ambiguous time zone. 
> That's a separate problem, but I wonder if converting it to a Zulu time 
> at this point is the right thing to do. I think not. In other words, this 
> code should preserve the exact textual form of the {DATE} spec. I'm not sure 
> if it currently does.

That has been fixed in r1655872. The date string is preserved now.

BTW, I don't know why the Z was in the generated date string but
I don't think its intended meaning is "Zulu time". It's part of
a static string in our own code (libsvn_subr/time.c):

#define TIMESTAMP_FORMAT "%04d-%02d-%02dT%02d:%02d:%02d.%06dZ"

Reply via email to