1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
function svnpath = GetSubversionPath
% svnpath = GetSubversionPath -- Return auto-detected installation path
% for svn client, if any. Return empty string if auto-detection not
% possible. Typical usage is like this:
%
% mysvncommand = [GetSubversionPath 'svn status']; system(mysvncommand);
%
% GetSubversionPath will return the path to be prefixed in front of the svn
% executable. If none can be found, the svn executable will be executed
% without path spec. If it is installed in the system executable search
% path, it will then still work.
%
% The function simply checks if the svn executable is in the Matlab path
% and returns a proper path-spec. If it isn't found in the Matlab path, it
% tries default path locations for OS-X and Windows. If that doesn't work,
% it returns an empty string.
% History:
% 11/21/06 Written (MK).
% 01/19/09 Update to search in /bin and /usr/bin as well on OS/X.
% 03/10/13 Change search path order to match DownloadPsychtoolbox on OS/X (MK)
% 04/24/13 Move check for /opt/subversion/bin/svn first. Nicolas Cottaris in
% my lab says this fixes a problem that arose when he installed SVN 1.7.9. (DHB)
% 10/28/13 Add IsLinux where we try out various possible UNIX paths.
% Maria Olkkonen reports that doing so makes this work properly
% on her linux system. (DHB)
% 06/11/18 Change search order for svn executable to account for preferred location
% on macOS, as provided by XCode command line tools. (MK)
% 10/28/20 Change path search order to deal with latest Apple XCode BS.
% Also add some hint on how to get svn if needed on macOS.
% Check for alternative install location of Subversion:
if IsWin
% Search for Windows executable in Matlabs path:
svnpath = which('svn.exe');
else
% Search for Unix executable in Matlabs path:
svnpath = which('svn.');
end
% Found one?
if ~isempty(svnpath)
% Extract basepath and use it:
svnpath=[fileparts(svnpath) filesep];
else
% Could not find svn executable in Matlabs path. Check the default
% install location on OS-X and abort if it isn't there. On M$-Win we
% simply have to hope that it is in some system dependent search path.
% Currently, we only know how to check this for Mac OSX and Linux.
if (IsOSX || IsLinux)
svnpath = '';
% /usr/local/bin is our best shot, because that's where
% HomeBrew will install its svn client:
if isempty(svnpath) && exist('/usr/local/bin/svn', 'file')
svnpath = '/usr/local/bin/';
end
% XCode would install its svn in /usr/bin/, except the iToys
% company f$#ked it up as of the Catalina trainwreck:
if isempty(svnpath) && exist('/usr/bin/svn', 'file')
svnpath = '/usr/bin/';
end
% From here on unlikely fallback locations:
if isempty(svnpath) && exist('/bin/svn','file')
svnpath='/bin/';
end
if isempty(svnpath) && exist('/opt/local/bin/svn', 'file')
svnpath = '/opt/local/bin/';
end
if isempty(svnpath) && exist('/opt/subversion/bin/svn', 'file')
svnpath = '/opt/subversion/bin/';
end
end
end
% Check that subversion client is installed.
if IsOSX && isempty(svnpath)
fprintf('The Subversion command line client "svn" is not in its expected\n');
fprintf('location on your disk. On old macOS versions, please download and install\n');
fprintf('the most recent Subversion client via typing this into a terminal window:\n');
fprintf('xcode-select --install\n');
fprintf('and then run %s again. This will not work on Catalina and later though.\n', mfilename);
fprintf('On Catalina and later you may be able to install HomeBrew (https://brew.sh)\n');
fprintf('and then install Subversion via ''brew install subversion''.\n');
error('Subversion client is missing. Please install it.');
end
return;
|