更新

更新

我在 ubuntu 上。

好的,首先,我正在运行一个提交后脚本。我需要 svnnotify 的路径来运行它。我正在阅读的教程中有这个路径,/usr/local/bin/svnnotify但我的电脑上没有这个位置。我还是试了一下,得到了类似这样的结果:

Warning post-commit hook failed: not found

所以我认为我需要用正确的 svnnotify 路径替换/usr/local/bin/svnnotify。我搜索了 ( Places>Search for Files),svnnotify但什么也没找到。

我知道 svnnotify 已安装,因为如果我打开命令行并运行,svnnotify它会告诉我缺少所需的路径参数。

那么如果它不在文件系统的任何地方,该如何安装它呢?

我真的不知道 Linux 是如何工作的,它对我来说很新,所以我很困惑。

我是否遗漏了什么?

更新

我已将文件更新如下:

#!/bin/bash

REPOS="$1"
REV="$2"

/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" --subject-cx --with-diff --handler HTML::ColorDiff --to [email protected] --from [email protected]

我让它可执行。

我像这样运行它:

myuser@linux-server:/usr/local/svn/svn_repo/hooks$ 提交后 /usr/local/svn/svn_repo 9

我得到这个作为输出:

提交后:未找到命令

答案1

/usr/local是 Linux/Unix 中“您自己安装的东西”的传统位置。如果您从源代码编译东西并安装它,/usr/local通常用作主安装目录 - 可执行文件放在/usr/local/bin,库放在/usr/local/lib,等等。

如果您从发行版的软件包存储库安装东西,这些文件将被放置在其他地方。 /usr是典型的系统安装目录,因此如果您的软件包管理器具有或可以获取正确的软件包,它将安装到/usr/bin/usr/lib等。

由于您没有提供教程链接,我不知道您尝试了什么,或者这可能与教程说明有什么冲突。但您正在寻找程序通知。如果您确定它已经安装,请尝试以下操作:

  1. 跑步哪个查看你的系统是否已经知道该命令以及在哪里找到它:

    $ which svnnotify
    /usr/bin/svnnotify
    

    如果找不到,则没有命令调用通知在您的 PATH 上,但也许系统上某处有一个不在 PATH 上的。

  2. 请与 核对locate svnnotify

    $ locate svnnotify
    /usr/example/bin/svnnotify
    /usr/bin/svnnotify
    /usr/share/svnnotify/foo
    ...
    

    如果你已经安装通知从头开始,你的包管理器可能不知道它在哪里;定位应该会有所帮助。您必须注意非标准文件位置并适当调整教程步骤。

    如果你最近才安装它,请sudo updatedb运行定位了解文件系统的最新添加内容。

如果上述步骤未找到该文件,请确保已安装该软件包,或者从您最喜欢的软件包管理器安装它(Synaptic、apt-get、aptitude, ETC)。 在 Ubuntu 10.04 上,通知安装至/usr/bin/svnnotify通过包装libsvn-通知-perl. 如果你使用的是 Ubuntu通知您需要适当修改教程步骤。


教程演示如何创建提交后脚本。您需要修改脚本以指向正确的通知. 如果您的系统有通知/usr/bin/svnnotify代替在/usr/local/bin/svnnotify,将脚本修改如下:

#!/bin/sh

REPOS="$1"
REV="$2"

/usr/bin/svnnotify                          \
    --repos-path    "$REPOS"                \
    --revision      "$REV"                  \
    --subject-cx                            \
    --with-diff                             \
    --handler       HTML::ColorDiff         \
    --to            <your e-mail address>   \
    --from          <from e-mail address>

答案2

在 Ubuntu 上,svnnotify包含在libsvn-notify-perl软件包中。

在终端中输入 sudo apt-get install libsvn-notify-perl,这将安装svnnotify,然后再次尝试您的脚本。

答案3

我像这样运行它:

myuser@linux-server:/usr/local/svn/svn_repo/hooks$ 提交后 /usr/local/svn/svn_repo 9

我得到这个作为输出:

提交后:未找到命令

在 Linux 和其他 Unix 系统上,shell 默认不会在当前工作目录中查找程序(出于安全原因),因此您必须像这样运行该脚本:

myuser@linux-server:/usr/local/svn/svn_repo/hooks$ ./post-commit /usr/local/svn/svn_repo 9

相关内容