2

有没有一种方法可以直接从代码(Matlab)中获取特定文件(.m)的 svn 修订号?

我需要类似 Matlab 函数 getSVNRevisionNumber(file.m)

谢谢

4

2 回答 2

5

没有内置命令可以做到这一点。获取该信息的最简单方法可能是发出system命令并解析其输出:

function rev = getRev(mfile)

    SVN_EXE= 'C:\Program Files\TortoiseSVN\bin\svn.exe';
    command = sprintf('"%s" info "%s"', SVN_EXE, mfile);
    [status,out] = system(command);

    % check everything went well:
    assert( ~status );

    % parse revision from output:
    rev = regexp(out, 'Revision: (\d+)', 'tokens', 'once');
    % alternatively - depending on which info you really want
    % rev = regexp(out, 'Last Changed Rev: (\d+)', 'tokens', 'once');

    rev = str2double(rev{1});
end

这还不能处理未版本化的文件,并且可能有一个更安全、更完整的功能可以做到这一点,但这是一个开始......

不幸的是,这也相当慢 - 另一方面它只有几行代码。如果您不怕 java 并且愿意使用第三方软件,您也可以svnkit在 MATLAB 中轻松使用。

于 2013-11-04T10:32:52.633 回答
2

SVN 支持关键字,因此您需要类似:

x='$Rev$'

http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html

于 2013-11-04T09:41:38.343 回答