Bert Huijben wrote: > Philip Martin wrote: >> "svn add" won't add files that set both a binary svn:mime-type and an >> svn:eol-style. The low level function that checks the properties has a >> skip_some_checks flag to allow the combination which is how both >> properties can be set using "svn propset --force". "svn add" also has >> --force but it doesn't work to add the file with both properties because >> svn_wc_add_from_disk2 doesn't support skip_some_checks. This is >> explicitly mentioned in the docs: >> >> * Check and canonicalize the properties in the same way as >> * svn_wc_prop_set4(). Return an error and don't add the node if the >> * properties are not valid on this node. Unlike svn_wc_prop_set4() >> * there is no option to skip some of the checks and canonicalizations. >> >> but without any rationale. This function is new in 1.8 so we could >> easily change it. Does anyone remember why the function behaves this >> way? > > Julian made the add function atomic, instead of add + propset and on error > revert.
FWIW, I also added some comments here and there, probably including the one above, to describe the current behaviour. That doesn't mean I know why it behaves that way or that I agree that it should. I can't think of any reason why it should not support the 'skip some checks' option. - Julian > And I tried to make this canonicalize behavior optional, but halfway through > the patch I found different related issues that made the problem space much > harder than I anticipated. > > The --force flag also disables other checks such as on svn:mergeinfo and all > other properties, so by resolving one particular issue it will most likely > introduce several others. > > And there are other checks on the mimetype that can cause related problems. > (And libsvn magic combined with these other problems might cause even more > problems). > > I added a few tests on these strange cases in trans_tests.py in r1449522 and > r1449559. > > We probably really need some kinds of checks here, while we would only like > to skip the actual file check that just checks if the file has normalized > eols. (We will check that again at commit time, so it involves no risk of > getting invalid state committed). [...]