質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SourceTree

SourceTreeは、Gitのクライアントツール。視覚的に操作するGUI形式でGitの操作が容易になります。MacやWindowsなどのOSに依存しておらず、PC環境に合わせてインストールすることが可能です。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

1回答

1115閲覧

[SourceTree]pre-commit内でバッチファイルを呼び出したい

fukkun0412

総合スコア37

SourceTree

SourceTreeは、Gitのクライアントツール。視覚的に操作するGUI形式でGitの操作が容易になります。MacやWindowsなどのOSに依存しておらず、PC環境に合わせてインストールすることが可能です。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2019/01/10 07:21

編集2019/01/11 03:59

#質問内容
現在SourceTreeのpre-commitを使用して、ファイルをコミットする時に特定のファイルがあった場合、そのファイルをリネームして別のファイルに書き換える処理を実装したいのだが、SourceTree上でコミットするとbash: upload.bat: No such file or directoryとエラー表示され、コミットされない。

pre-commitを.shにして、SourceTreeのターミナルで起動させると正常に動作した。

・OSはWindows10 Proになります。
・処理に必要なファイルに関してはD:\Git\hook_test内にあります。

#やりたいこと
pre-commit内でバッチファイルを起動させたい。
→下記にあるバッチファイルの呼び出し方が正解かわからない

#処理に必要なファイル
per-commit

#!/bin/bash
if [ $? -eq 0 ]; then
MSG=$(git log -1 --name-only --pretty=format:"%h" | grep 'strings' | grep '.xml')

for i in ${MSG[@]};do echo "Update" cd ../../ `bash upload.bat $i` done

fi

upload.bat

@echo off
set WINSCPEXE_PATH="C:\Program Files (x86)\WinSCP\WinSCP.com"
set REMOTE_HOST=test@xx.xxx.xx.xxx

set LOCAL_DIR="D:\Git\hook_test"
set TARGET_DIR="/var/www/test/"
set TARGET_RESOURCE="update.xml"
set RESOURCE=%1
rem RESOURCE="test.xml"

%WINSCPEXE_PATH% %REMOTE_HOST% /script=.\upload.script /parameter %LOCAL_DIR% %TARGET_DIR% %TARGET_RESOURCE%

rm %LOCAL_DIR%%TARGET_RESOURCE%

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yut148

2019/01/10 10:40

ぜひ対象OSの記載をおねがいします。windowsだとPathの設定等いろいろ確認事項があります。
fukkun0412

2019/01/11 02:34

記入いたしました。
guest

回答1

0

ベストアンサー

こんにちは。
「どううまくいかないのか」「エラーメッセージ」を質問文に追記して頂けるとありがたいです。

たとえば相対パス指定するとどうでしょう。

sh

1bash ./upload.bat $i

投稿2019/01/11 02:08

編集2019/01/11 02:11
firedfly

総合スコア1131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fukkun0412

2019/01/11 03:00

ご回答ありがとうございます。 こちらの方法でやってみたのですが、変わらずbash: upload.bat: No such file or directoryと出てしまいました。 質問内容にエラーメッセージを記載いたしました。 自分なりに ‘bash upload.bat $i‘のところを以下のコードに変更しましたが、動作しませんでした。 cd $(cd $(dirname $0) && pwd) `bash ./upload.bat $i`
firedfly

2019/01/11 03:49

追記ありがとうございます。 私の環境(Windows 10)では「リポジトリの直下」にあるbatファイルは上の書き方で通りました。 fukkun0412さんの場合、batファイルはどこにあるんでしょう(質問文にご追記くださいまし)。 汎用性が下がっていいならフルパスで指定するという方法もあります。
fukkun0412

2019/01/11 03:59 編集

追記ありがとうございます。 `bash ./upload.bat $i`のところを `./upload.bat $i`に変更すると、エラーメッセージは出なくなり、コミット処理が走るようになったのですが、今度はアップロード処理のバッチの処理が正常に動作しなくなりました。 呼び出し方が間違っているのか、それとも別の原因があるのかわかりません。 質問内容に記載しておきます。
firedfly

2019/01/11 05:14

「No such file or directory」のエラーは解消されて バッチファイルが呼び出されていることを確認できたら、一個ずつ確認していきましょう。 (shファイル内で exit 1 をしておくと、コミットが必ず失敗するので何度でも試せます) 1. バッチファイル内でechoしてみて、SourceTreeに表示されるか確認する。 2.バッチファイル内でshから引数が渡ってきていることを確認する 3.バッチファイル内でカレントフォルダを確認する などなど問題の切り分けと整理を意識して バッチファイル内の各行の確認を粘り強くやってみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問