GitとSourceTreeで質問です。 Add Star

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

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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/05/27 05:12:24
  • 終了:2014/05/27 18:28:12

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4439ベストアンサー獲得回数18232014/05/27 09:42:14

ポイント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

きゃづみぃ回答回数13537ベストアンサー獲得回数11982014/05/27 06:41:17

ポイント100pt

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

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

id:makocan

見させていただきます!

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

a-kuma3回答回数4439ベストアンサー獲得回数18232014/05/27 09:42:14ここでベストアンサー

ポイント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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません