GitとSourceTreeで質問です。 Add Star

差分をzipで圧縮して出力したいと思います。
※環境はWindowsです。

下記をSourceTreeのターミナルで実行すると要望通りのものが生成されますが、

git archive --format=zip HEAD `git diff --name-only HEAD HEAD^` -o archive.zip

いつも入力するのが手間です。
カスタムアクションに登録するにはどのようにすればよいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/05/27 18:28:12
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

ポイント100pt
git archive --format=zip HEAD `git diff --name-only HEAD HEAD^` -o archive.zip

↑って、バッククォートがあるので、すんなりとはバッチファイルにできないですよね。
試してないですけど、こんな感じのバッチファイルになるんじゃないかと思います。

for /f "delims=" %%A in ('git diff --name-only HEAD "HEAD^"') do set DIFF_LIST=%%A
git archive --format=zip HEAD %DIFF_LIST% -o archive.zip
  • バッククォートの部分を、標準出力の内容を環境変数にぶち込む常套句に分ける
  • ハットはコマンドプロンプトで特別な意味を持ってた と思うので、HEAD^ はダブルクォートでくくる


後、git コマンドは SourceTree に付いてくるものを使ってるでしょうか。
Atlassian の Q&A サイトで こんなやりとりがあったのを見つけましたので、こちらもご参考に。

I've tried putting "git" in the "script target", which errors with no explanation. I've tried putting "cmd" in the script target with "/C git" in the "Parameters" and gotten a "'git' is not recognized" error.

You can add git to your path or specify the path to git.exe in your .bat file.
You should be able to find git.exe here:

%USERPROFILE%\AppData\Local\Atlassian\SourceTree\git_local\bin

 

How to run a git command as a custom action? - Atlassian Answers
他1件のコメントを見る
id:makocan

単語帳登録とは発送の転換に驚きました。頭固いですね。自分。
他の点も試させて頂きます。

2014/05/27 18:25:52
id:makocan

for /f "delims=" %%A in ('git diff --name-only HEAD "HEAD^"') do set DIFF_LIST=%%A
git archive --format=zip HEAD %DIFF_LIST% -o archive.zip

で十分でした!

ありがとうございます。

2014/05/27 18:28:04

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント100pt

batファイルにしてから カスタムアクションにしたらどうでしょうか?

http://www.networld.co.jp/is/pdf/CustomActionBatch_.pdf

id:makocan

見させていただきます!

2014/05/27 18:26:12
id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント100pt
git archive --format=zip HEAD `git diff --name-only HEAD HEAD^` -o archive.zip

↑って、バッククォートがあるので、すんなりとはバッチファイルにできないですよね。
試してないですけど、こんな感じのバッチファイルになるんじゃないかと思います。

for /f "delims=" %%A in ('git diff --name-only HEAD "HEAD^"') do set DIFF_LIST=%%A
git archive --format=zip HEAD %DIFF_LIST% -o archive.zip
  • バッククォートの部分を、標準出力の内容を環境変数にぶち込む常套句に分ける
  • ハットはコマンドプロンプトで特別な意味を持ってた と思うので、HEAD^ はダブルクォートでくくる


後、git コマンドは SourceTree に付いてくるものを使ってるでしょうか。
Atlassian の Q&A サイトで こんなやりとりがあったのを見つけましたので、こちらもご参考に。

I've tried putting "git" in the "script target", which errors with no explanation. I've tried putting "cmd" in the script target with "/C git" in the "Parameters" and gotten a "'git' is not recognized" error.

You can add git to your path or specify the path to git.exe in your .bat file.
You should be able to find git.exe here:

%USERPROFILE%\AppData\Local\Atlassian\SourceTree\git_local\bin

 

How to run a git command as a custom action? - Atlassian Answers
他1件のコメントを見る
id:makocan

単語帳登録とは発送の転換に驚きました。頭固いですね。自分。
他の点も試させて頂きます。

2014/05/27 18:25:52
id:makocan

for /f "delims=" %%A in ('git diff --name-only HEAD "HEAD^"') do set DIFF_LIST=%%A
git archive --format=zip HEAD %DIFF_LIST% -o archive.zip

で十分でした!

ありがとうございます。

2014/05/27 18:28:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません