2016-08-24 1 views
0

Ich benutze Windows 7, ich habe MATLAB 2015b mit git Version 2.6.1.windows.1. MATLAB/Git-Integration funktioniert.Get Git Commit/Revision SHA aus MATLAB-Skript

Ich habe eine Reihe von MATLAB-Tools, die ich für die Datenanalyse verwenden, die mit Quellcodeverwaltung mit Git entwickelt werden. Diese Tools speichern beim Ausführen Protokolldateien, die Daten, Zeiten, verwendete Dateien, Befehle und Variablenwerte angeben. Ich möchte den GIT-Commit-SHA-Wert zu diesen Protokollen hinzufügen, damit ich die Daten zurück zu der Version verfolgen kann, die ausgeführt wurde, und daher feststellen, ob ein Teil der Daten aufgrund eines bekannten Fehlers ungültig sein könnte.

Ich weiß, MATLAB hat Zugriff auf die Werte, ich kann mit der rechten Maustaste auf eine Git-Datei klicken und "Source Control" und dann "Show Revisions" auswählen und die SHA sehen. Gibt es einen MATLAB-Befehl oder eine zugängliche Objektmethode, die ich verwenden kann, um diesen Wert zu erhalten, damit ich ihn in mein Protokoll schreiben kann?

+1

Hey. Haben Sie '! Git hash-object ' und '! Git ls-files -s ' (d. H. Systembefehle) überprüft? –

+0

Schauen Sie sich diesen Thread an: http://stackoverflow.com/questions/460297/git-finding-the-sha1-of-andividual-file-in-the-index –

+0

Aber Sie suchen wahrscheinlich eher ''! git log' oder '! git rev-list' wie hier erwähnt: http://stackoverflow.com/questions/4784575/how-do-i-find-the-most-recent-git-commit-that-modified-a -Datei. Ich würde nur die Ausgabe des Systembefehls analysieren. –

Antwort

1

Wie in den obigen Kommentaren erwähnt, können Sie einen Systemaufruf verwenden. wickeln Sie es nur in einer Funktion:

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 

speichern es als get_git_hashobject.m und führen Sie es wie get_git_hashobject(<filename>).