如何将shell脚本作为tortoiseSVN的客户端钩子脚本运行?

时间:2016-11-15 14:04:40

标签: shell svn svn-hooks wsh

我编写了shell脚本,我试图将该脚本作为客户端钩子脚本但是没有获取脚本引擎,我应该用它来运行.sh文件。通常作为我见过.js文件将被用作SVN的钩子脚本,遗憾的是我不太了解jscript所以请帮我如何在SVN中添加和运行脚本作为客户端钩子脚本。我试过用 WScipt CScirpt ,但它们都不适用于我的shell脚本。

#!/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 个答案:

答案 0 :(得分:1)

您正在尝试在Windows上执行bash脚本,这意味着您需要安装Cygwin或者可以使用新的bash shell functionality in Windows 10。我对这两者都没什么经验,但希望我能指出你正确的方向。

  1. 如果您正在使用Cygwin,请在Tortoise钩子脚本配置对话框中使用以下命令(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"
    

    (来自this page下的“从外部Bash运行Linux命令”)

  3. 免责声明:我没有测试其中任何一项,因为我没有时间或方法。尝试一下,并以任何方式留下一些反馈。