粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

matlabのコマンドウィンドウでGitを使う

matlabコードをGitで管理していますがコマンドウィンドウからもgitを叩けるのをこのサイト見て知ったのでメモします。

外部コマンドの実行の仕方

じつは”!”を事前につけるとコマンドプロンプトのコマンドが実行できるようです。ipconfigなども打てました。

jp.mathworks.com

一連のgit操作

一連のGitの操作に!を前置すれば済みます

!git add .
!git commit -m "AutoMaticUpdate"
!git push origin master

なんとこれをmファイルでまとめて実行させることもできます。mファイルでシェル芸ができます。 これって脆弱性なんじゃないか…

注意点・エラー

  • matlabユニコードの設定のせいかなにやら文字化けが発生します。これは今の所困ってないので無視。

  • git commitでメッセージを指定しないと通常vim等のエディタが出ますが上記の文字化けと組まれると非常にきついです。メッセージ指定しようね。

  • gitのversionが古いとpush時に以下のようなメッセージが出ます。(文字化け含む)

fatal: AggregateException encountered.
   1 縺、莉・荳翫�繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆縲 
bash: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Username for 'https://github.com': Invalid argument

ここの記事にある通り公式から最新のverをインストールすることで解決します。

自動でGitでpushする関数

で,やっぱりこういうのは関数化したいわけで, GitComiiter関数を作成しました。evalを使っている邪悪なプログラムですが引数にCommit Messageを受けて動きます。 なお,デフォルト引数としてMessageがないときは自動的に適当なコメントをつけてくれます。

function GitComiiter(message)
 if nargin < 1
     message = 'AutoMaticUpdate'
 end
 
!git add .
eval(['!git commit -m "',message,'"'])
!git push origin master

 end

脆弱性とかよくわかんないので詳しい方のご指摘・ご助言お待ちしております。