Operating System - OpenVMS
1828578 Members
2279 Online
109982 Solutions
New Discussion

Re: Subversion Client for OpenVMS

 
SOLVED
Go to solution
Heinz Huber
New Member

Re: Subversion Client for OpenVMS

Our current settings for svnkit:
$ set proc/parse=extended
$ JAVA$M_UNIX_AND_VMS = 8
$ DEFINE/JOB/nolog JAVA$FILENAME_CONTROLS 'JAVA$M_UNIX_AND_VMS'
$ define/job/nolog DECC$ARGV_PARSE_STYLE ENABLE ! preserve argv case
$ define/job/nolog DECC$EFS_CASE_PRESERVE ENABLE ! enable ODS-5 names
$ define/job/nolog DECC$EFS_CASE_SPECIAL ENABLE ! enable ODS-5 names
$ define/job/nolog DECC$EFS_CHARSET ENABLE ! enable ODS-5 names
$ @dsa1:[java.jre1503.lib]java$150_jre_setup FAST


Seems to work.
Only two problems:
1) After checkout, update doesn't work on the root directory of the checkout.
2) Java translates file names with more than one dot in a lossy fashion (all but one dot are converted to underscores instead of ^.). svnkit can handle these files without a problem since it gets the correct names from it's svn-files. But other apps have problems if they need more than one dot.
Larry Bohan
Advisor

Re: Subversion Client for OpenVMS

Ben, sorry I wasted your time; I went back
to double check, turns out i was mixing priv'ed/non-prived sessions.

It does look like a delete ACL is needed
as a work-around. (just now, i recall
a similar issue doing svn client tasks against a AdvancedServer share)
Ben Armstrong
Regular Advisor

Re: Subversion Client for OpenVMS

Heinz,

Why do you need this line?

$ define/job/nolog DECC$EFS_CASE_SPECIAL ENABLE ! enable ODS-5 names

If I execute @jsvnsetup.openvms in the svnkit 1.1.7 release it complains:

JSVNSETUP: DECC$EFS_CASE_SPECIAL defined! Please deassign logical otherwise jsvn might not function properly!

So I have commented this out in my setup with no ill effects.

What do you mean by "After checkout, update doesn't work on the root directory of the checkout."? I have no problem updating in the root directory of the checkout. What happens when you try this?

Larry,

OK. I have set up an ACL and now everything works! Thanks.

The only remaining mystery is that somehow in some of my commits I ended up with strange characters introduced into my text files (NUL, VT) at the beginning and end of each line. But since I changed quite a number of different settings during the course of my tests, I'm waiting to see now if I can reproduce the problem before pursuing it further.

Ben
Ben Armstrong
Regular Advisor

Re: Subversion Client for OpenVMS

Here's my current shortcut for svn:

SVN == "pipe define/user sys$login DYM$USRACCT:[BG] ;define/user JAVA$FILENAME_CONTROLS 8 ;define/user DECC$ARGV_PARSE_STYLE ENABLE ; define/user DECC$EFS_CA
SE_PRESERVE ENABLE ; define/user DECC$EFS_CHARSET ENABLE ; jsvn"

The SYS$LOGIN thing is a bit specific to our environment, but the rest are all logicals discussed here. Using PIPE and user-mode logical names does away saves me from "tainting" my login session with logicals that may cause unexpected behaviours in other apps and does with the need for a DCL wrapper which would otherwise mangle the parameter list by uppercasing all commands.

My problem now is that while I have enabled DECC$ARGV_PARSE_STYLE, when I test this, case does not seem to be perserved, e.g.

$ svn co svn://ntts/RubyDyLib/trunk dylib
svn: URL 'svn://ntts/rubydylib/trunk' doesn't exist

But if I put double-quotes around the svn address, the checkout proceeds without further errors. So what's going on, here? Are there actually multiple image invocations when I execute 'jsvn' so that the user-mode logical isn't defined when it is needed?

Ben
Ben Armstrong
Regular Advisor

Re: Subversion Client for OpenVMS

Argh. This forum system needs a way to edit posts. I meant "... does away with the need for a DCL ...", of course.
Larry Bohan
Advisor

Re: Subversion Client for OpenVMS

try $set proc/parse=extended ?

(I don't see a ready solution for trying
to do this with a one-liner pipe-command,
unless there's a java$ feature logical
for the argv processing)

$help set proc /parse
...
C/C++ programs that use the argc/argv mechanism will have unquoted arguments in lowercase unless the C Run-Time
Library logical DECC$ARGV_PARSE_STYLE is set to ENABLE. When DECC$ARGV_PARSE_STYLE is enabled, case is preserved in command
when DECC$ARGV_PARSE_STYLE is enabled,
case is preserved in command line arguments when the process is set up for extended DCL
parsing using /PARSE_STYLE=EXTENDED.
...
$!
$ xxx == ""
$ xxx == xxx + "pipe "
$ xxx == xxx + "define/user JAVA$FILENAME_CONTROLS 8 ; "
$ xxx == xxx + "define/user DECC$ARGV_PARSE_STYLE ENABLE ; "
$ xxx == xxx + "define/user DECC$EFS_CASE_PRESERVE ENABLE ; "
$ xxx == xxx + "define/user DECC$EFS_CHARSET ENABLE ; "
$ xxx == xxx + "set proc/parse=extended ; "
$ xxx == xxx + "mcr []print_argv.exe "
$!
$ set proc/parse=trad
$ xxx Alpha Bravo Charlie Delta
alpha bravo charlie delta
$ set proc/parse=ext
$ xxx Alpha Bravo Charlie Delta
Alpha Bravo Charlie Delta
$
$ ty print_argv.c
#include
int main( int argc, char *argv[] )
{
for( unsigned int i=1; (i < argc); i++ )
printf( "%s " , &argv[i][0] );

printf( "\n" );

} // end main() ...
$!
Ben Armstrong
Regular Advisor

Re: Subversion Client for OpenVMS

Ah, of course! That's it.

OK, I can live with having to do this command or else put double-quotes around mixed-case paths in the repo, as these are in the very small minority (and really should be renamed to all lowercase anyway ... it's just that this would immediately invalidate any workspaces, so I haven't bothered yet).

Ben