2016-11-15 5 views
0

シェルスクリプトを書きましたが、クライアントサイドフックスクリプトとしてスクリプトを作成しようとしていますが、.shファイルを実行するために使用する必要があるスクリプトエンジンを取得できません。残念ながら私はjscriptについてあまり知らないので、SVNのスクリプトをSVNで追加して実行する方法を教えてください。WSciptおよびCScirptそれらは私のシェルスクリプトのために働いていません。tortoiseSVNのクライアントサイドフックスクリプトとしてシェルスクリプトを実行するには?

#!/bin/bash 

MAIN_DIR="/cygdrive/e/Trunk/COMMON" 
FILE_NAME="/cygdrive/e/Trunk_PRE_COMMIT_HOOK/long_path.txt" 



lengthy_path=`find ${MAIN_DIR} -regextype posix-extended -regex '.{500,}'| awk -F'Trunk/' '{print $2}' > ${FILE_NAME}` 



if [ -f ${FILE_NAME} ] 
    then 
    if [ -s ${FILE_NAME} ] 
    then 
     echo -e "\n\n\nSorry the path of a file exceeds 256 charectors, please make it shorten and try commiting again.You can see the path in $FILE_NAME" 
    else 
     echo -e "\n\n\nPath is perfect code can be committed..........." 
fi 
    else 
     echo -e "\n\n\nFile not exists............" 
fi 
+1

[クライアント側のフックスクリプトはTortoiseSVNを使用している場合のみ可能です](http://stackoverflow.com/a/8490859/1698557)、[svn'コマンド自体のラッピング/エイリアス](http:// www.pal-blog.de/entwicklung/perl/better-source-svn-client-side-precommit-hooks.html)。 –

+0

@PatrickQuirkはい、Tortoise SVNのみを使用していることを忘れています。開発者がレポにコードをコミットしようとしたときに、どのスクリプトエンジンを.shスクリプトを実行する必要があるのか​​教えてください。 –

+0

スクリプトを投稿してください。ファイル拡張子はほとんど意味がありません。 –

答えて

1

あなたはCygwinがインストールされている必要があり、または新しいbash shell functionality in Windows 10を使用することができますいずれかを意味し、Windows上でbashスクリプトを実行しようとしています。私はいずれかの経験はほとんどありませんが、うまくいけば正しい方向に指摘することができます。

  1. あなたがCygwinを使用している場合は、亀のフックスクリプトの設定ダイアログ(図the documentationで4.87。)で次のコマンドを使用します(this answerからソース派生)

    C:\cygwin\bin\bash C:\path\to\your_script.sh 
    

  2. Windows 10 bashシェルを使用している場合は、次のコマンドを使用します。

    bash -c "/mnt/c/path/to/your_script.sh" 
    

    (「外バッシュから実行Linuxのコマンド」の下this pageからソース派生)

免責事項:私は時間や手段を持っていないので、私はこれらのいずれかをテストしていません。それを試して、いずれかの方法でいくつかのフィードバックを残してください。

+0

実際に私はすでにあなたのように示唆した方法を試していた。しかし、C:\ cygwin \ bin \ bash C:\ path \ to my_script.shしかし、残念ながら、以下のエラーを返す "FIND:無効なスイッチ"が解決したら私はスクリプトが実行されると思う。私はcygwin fInd.exeも存在します.. –

+0

あなたのスクリプトはcygwinの代わりにWindowsの 'find'コマンドを呼び出しています。 'find 'を'/bin/find'または '/ usr/bin/find'のどちらかが存在する方で置き換えてください。 –

関連する問題