2016-08-24 3 views
0

Я использую Windows 7, у меня есть MATLAB 2015b с git version 2.6.1.windows.1. Интеграция MATLAB/Git работает.Получить Git Commit/Revision SHA из сценария MATLAB

У меня есть набор инструментов MATLAB, которые я использую для анализа данных, которые разрабатываются с помощью источника управления с использованием Git. Эти инструменты сохраняют файлы журнала при запуске, которые дают даты, время, используемые файлы, команды и значения переменных. Я хотел бы добавить значение GIT commit SHA в эти журналы, чтобы я мог отслеживать данные до версии, которая была запущена, и, следовательно, определить, может ли некоторая часть данных быть недопустимой из-за известной ошибки.

Я знаю, что у MATLAB есть доступ к значениям, я могу щелкнуть правой кнопкой мыши по файлу, управляемому Git, и выбрать «Source Control», а затем «Показать ревизии» и увидеть SHA. Есть ли способ MATLAB или метод доступных объектов, который я могу использовать для получения этого значения, чтобы я мог поместить его в свой журнал?

+1

Эй. Вы проверили '! Git hash-object ' и '! Git ls-files -s ' (т. Е. Системные команды)? –

+0

Посмотрите эту тему: http://stackoverflow.com/questions/460297/git-finding-the-sha1-of-an-individual-file-in-the-index –

+0

Но вы, вероятно, скорее ищете '! git log' или '! git rev-list', как указано здесь: http://stackoverflow.com/questions/4784575/how-do-i-find-the-most-recent-git-commit-that-modified-a -файл. Я просто разбираю вывод системной команды. –

ответ

1

Как упоминалось выше, вы можете использовать системный вызов. Просто оберните его в функцию:

function hash = get_git_hashobject(filename) 
%get_git_hashobject Performs a system call to `git hash-object` and returnd 
%the hash value. 
    command = [ 'git hash-object -- ' filename ]; 
    [status,hash] = system(command); 
    if(status ~= 0) 
     error('Unable to get hash from file.'); 
    end 
end 

Сохранить это как get_git_hashobject.m и выполнить его как get_git_hashobject(<filename>).

Смежные вопросы