LoginSignup
1
1

More than 5 years have passed since last update.

GinnieからGitExtensionsを起動しコミットするスクリプト

Posted at

表題の通りです。GinnieからGitExtensionsを直接起動できるスクリプトを作ってみました。コレさえあれば、リポジトリ下のファイルを編集中にワンタッチでファイルをコミットできます。

スクリプト

GitCommit.js
var wsh = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var command = App.ParamCount > 0 ? App.Params(0) : "commit";
var path = fso.buildPath(wsh.RegRead("HKCU\\Software\\GitExtensions\\InstallDir"), "GitExtensions.exe")
if(fso.fileExists(path)){
  // .gitフォルダを探索
  var doc = Documents.newDocument();
  if(doc.save()){
    var folder = fso.getFolder(fso.getParentFolderName(doc.fileName))
    try{
      while(!fso.folderExists(fso.buildPath(folder.path, ".git"))){
        folder = folder.parentFolder;
      }
      var shell = new ActiveXObject("WScript.Shell");
      shell.run(format("\"{0}\" {1} \"{2}\"", path, command, folder.path));
    }catch(e){
      Dialogs.Alert("リポジトリルートフォルダが発見できませんでした。リポジトリではない可能性があります\n" + e.message);
    }
  }
}else{
  Dialogs.Alert("Git Extensionsがインストールされていません");
}

App.Quit();

function format(string)
{
  var text = string;
  for(var i = 1; i < arguments.length; i++)
  {
    text = text.replace("{" + (i - 1) + "}", arguments[i]); 
  }
  return text;
}

リポジトリ

https://github.com/TakamiChie/ginnie-scripts にて公開しているのでそちらからもどうぞ

つかいかた

  1. Ginnieのマクロ>スクリプトファイル>設定 より、マクロの設定画面を開く
  2. 「追加」ボタンより、上記スクリプトファイルを追加する(パラメータなどは不要)
  3. リポジトリ下のファイルを編集中に、先ほど登録したスクリプトを実行する

で、Git Extrensionsのインストールがちゃんとできていれば、GitExtensionsのコミットダイアログが表示されます。
スクリーンショット 2013-12-19 17.59.51.png

なお、Git Extensionsが必須です(インストーラによりインストール済みである必要があります)。無い場合はスクリプトが動きません

しくみ

やっていることは次のような感じ。

  1. レジストリのインストール情報より、Git Extensionsのパスを取得
  2. 現在開いているドキュメントを上書き保存(この時点でファイルが未作成の場合、名前をつけて保存ダイアログが表示される(キャンセルすると、その後の処理が実行されない))
  3. 現在開いているファイルのフォルダパスを探索し、リポジトリのルートフォルダを探す(.gitフォルダを探索する)
  4. GitExtensionsにcommitオプションをつけて起動する

これでとりあえずコミットダイアログが開きます。文章やIDEのないスクリプトを書いている人には便利じゃないでしょうか。

おまけ

マクロ実行時のパラメータに「openrepo」などGitExtensionsがサポートしているパラメータを指定すると、リポジトリにそれぞれ該当オプションの操作を行うことができます。
こんな感じですね。
スクリーンショット 2013-12-19 18.12.18.png

とりあえずパラメータなし(commit)とopenrepoをメニュー項目として登録しておくと何かと捗るかと。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1