2016-11-15 68 views
0

我寫了shell腳本,我試圖把這個腳本作爲客戶端鉤子腳本,但沒有得到腳本引擎哪一個我應該用來運行.sh文件。通常情況下,我已經看到.js文件將被用作SVN的鉤子腳本,不幸的是我不太瞭解jscript,所以請幫助我如何在SVN中添加和運行腳本作爲客戶端鉤腳本。我嘗試過使用WSciptCScirpt但是它們不適用於我的shell腳本。如何運行shell腳本作爲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,請讓我知道當開發人員試圖將代碼提交到repo時,哪個腳本引擎需要用來運行.sh腳本。 –

+0

發佈您的腳本。文件擴展名大部分是沒有意義的。 –

回答

1

你試圖執行Windows上的bash腳本,這意味着你要麼需要安裝了Cygwin或可以使用新的bash shell functionality in Windows 10。我對這兩者都沒有經驗,但希望我能讓你指出正確的方向。

  1. 如果你使用Cygwin,在龜鉤腳本配置對話框中使用以下命令(圖中the documentation 4.87):

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

    (從this answer來源)

  2. 如果您使用的是Windows 10 bash shell,請使用以下命令:

    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

您的腳本正在調用Windows的'find'命令而不是cygwin's。用'/ bin/find'或'/ usr/bin/find'替換'find',無論哪個存在。 –