TFS Rename upper case to lower case causes SVN UPDATE to fail


SVN is case sensitve.

Rename a file from upper case to lower case.. checkin

checkout the changeset before, then update to the one after.

svn update will fail saying

loldfield:/releases/compass/2014.06> svn update -r 24955
U os/vms/bin/uim_group_lgcls_assign.com
UU os/vms/bin/ccc_group_lgcls_assign.com
U os/vms/src/apps/obm/obm_app_lib_ccs.mms
U os/vms/src/build_pas.com
D os/nto/boot/scripts/qnx_6_3_0/cap_ccu_fc.abt
D os/nto/boot/scripts/qnx_6_3_0/cap_ccu_alltech_logging.abt
A run_cfg/bris/dev/uim/prf/eng/ccs/uim_menu.dat
A run_cfg/bris/dev/uim/prf/eng/uim_menu.dat
Updated to revision 24955.
loldfield:/releases/compass/2014.06> svn update -r 24956
svn: File 'pot_excptn_history.h' in directory 'os/include' is not a versioned resource
loldfield:/releases/compass/2014.06> svn update -r 24956
svn: Directory 'Release' is missing
loldfield:/releases/compass/2014.06> svn update

then another update will casue the entire workspace to become corrupt. yaya


am42 wrote Apr 24, 2015 at 8:45 AM

Indeed, properly case sensitive handling of current SvnBridge code is rather incomplete, both on checkout and commit side.
Note that even with many corrections in this area (which I do have), I'm currently stuck at an even more severe issue:
it's TFS (TFS2013, at least) itself which sometimes ends up registering broken base commit data records!!!!!!!!!
Example: moving item $/proj/SUB1/MyTest.cpp from $/proj/SUB1 to $/proj/SUB2 (via TFS, not SVN), and somehow ending up having it committed as $/proj/sub2/MyTest.cpp (note that "sub2" DOES NOT EXIST), with additional items in the changeset records being properly listed as $/proj/SUB2/.... IOW, TFS itself failed to enforce fully correct case sensitivity prior to having the submitted content committed. IOW, any revisions after that commit ARE NOT RETRIEVABLE, at least in not-case-insensitive environments --> final and full TFS commit records breakage.

Subsequent QueryItems() results:
"$/proj/sub2/MyTest.cpp" --> "$/proj/sub2/MyTest.cpp"
"$/proj/sub2" --> "$/proj/SUB2"

I'm currently trying hard to rectify this, by doing very painful correction handling (with hopefully heavy item caching) right after such broken commit data (QueryHistory(), QueryItems(), QueryBranches()) having left the innermost SourceControlProvider interface implementation (read: the broken-data supplier called TFS) -
these things need to be eradicated right where they do enter the surface, rather than dirtily worked around "somewhere else".