Matlab/Subversion interaction through scripting

18 visualizaciones (últimos 30 días)
Carl Banks
Carl Banks el 12 de Feb. de 2018
Respondida: Per-Anders Ekstrom el 2 de Abr. de 2023
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.

Respuesta aceptada

Carl Banks
Carl Banks el 12 de Feb. de 2018
Editada: Carl Banks el 12 de Feb. de 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 comentarios
raghavendra kandukuri
raghavendra kandukuri el 23 de En. de 2020
what is "working_filename", is it .m script file name you are checking?
Sumit Gupta
Sumit Gupta el 6 de Mzo. de 2020
Editada: Sumit Gupta el 7 de Mzo. de 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.

Iniciar sesión para comentar.

Más respuestas (1)

Per-Anders Ekstrom
Per-Anders Ekstrom el 2 de Abr. de 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.

Categorías

Más información sobre Function Creation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by