Matlab/Subversion interaction through scripting

11 views (last 30 days)
Hi, I have a question about Matlab/Source Control interaction. The documents for the 2017a (our current) show, but it is all though the GUI. There's nothing in this documentation on how to do these things programmatically. (Which is disappointing since one of the very few thinks Mathworks has done mostly reliably is to allow for programmatic control of most things you can do with the GUI.)
My immediate need is for a way for a Matlab script to check if a file has local changes or not. The only thing I can do now is to run the Subversion command line tools and parse the output. That's undesirable for me for a few reasons, the most obvious one being that all my users would have to install the command line tools. (None of them currently use command line tools, they use Tortoise or Matlab integrated.) Other things I'd like to do is obtain revision numbers for traceability purposes (plots generated from our Simulink models can include the revision number in the plot title, that kind of thing).
Anyway, if anyone has some ideas I'd appreciate.

Accepted Answer

Carl Banks
Carl Banks on 12 Feb 2018
Edited: Carl Banks on 12 Feb 2018
Never mind. I did some digging for ideas myself, and realized SVNkit, which is the Java SVN library, is installed with Matlab and available from the Matlab through its Java interoperability. Presumably the Matlab GUI uses it for its underlying source control interaction.
Knowing that, it's pretty straightforward to just use svnkit for the functionality I seek (insofar as Java is straightforward). For example, to get a file's revision number and test if it is locally modified:
svn_client_manager = org.tmatesoft.svn.core.wc.SVNClientManager.newInstance;
status_data = svn_client.getStatusClient.doStatus(java.io.File(working_filename),false);
revision = status_data.getRevision.getNumber;
status = char(status_data.getNodeStatus);
if strcmp(status,'modified')
disp 'FILE WAS MODIFIED'
end
So, I think I'm good.
  4 Comments
raghavendra kandukuri
raghavendra kandukuri on 23 Jan 2020
what is "working_filename", is it .m script file name you are checking?
Sumit Gupta
Sumit Gupta on 6 Mar 2020
Edited: Sumit Gupta on 7 Mar 2020
Hello Carl,
the script always provides head revision number of the repository root, even if different path is passed to java.io.File. Am looking for revision number of a file path. Please help me to fix this.
Regards,
kirankumar.

Sign in to comment.

More Answers (1)

Per-Anders Ekstrom
Per-Anders Ekstrom on 2 Apr 2023
Maybe a little late answer for you, but this code might help anybody that wants to perform SVN-operations from the command line. The code make use of (as in yur own example) the already built-in subversion support (SVNKit) that is used by the graphical user interface, and thus, no installing of any external SVN command-line clients is required.

Categories

Find more on Function Creation in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!