私はubuntuにいます。
まず最初に、コミット後のスクリプトを実行しています。実行するには、svnnotifyへのパスが必要です。私が読んでいるturotialのパスは/usr/local/bin/svnnotify
ですが、コンピューターのその場所には何もありません。とにかく試してみましたが、次のようなものがあります。
Warning post-commit hook failed: not found
したがって、/usr/local/bin/svnnotify
をsvnnotifyの正しいパスに置き換える必要があると思います。さて、私はsvnnotify
を検索(Places>Search for Files
)しましたが、何も表示されません。
コマンドラインを開いて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 $ post-commit/usr/local/svn/svn_repo 9
私はこれを出力として取得します:
コミット後:コマンドが見つかりません
/usr/local
は、「自分でインストールしたもの」の従来のLinux/Unixの場所です。ソースからコンパイルしてインストールする場合、通常は/usr/local
がメインのインストールディレクトリとして使用されます。実行可能ファイルは/usr/local/bin
に、ライブラリは/usr/local/lib
に配置されます。
ディストリビューションのパッケージリポジトリからのものをインストールする場合、それらのファイルは別の場所に配置されます。 /usr
は一般的なシステムインストールディレクトリであるため、パッケージマネージャーが適切なパッケージを持っているか取得できる場合は、/usr/bin
、/usr/lib
などにインストールされます。
あなたはチュートリアルへのリンクを与えていないので、あなたが何を試したか、またはこれがチュートリアルの指示とどのように矛盾するかはわかりません。しかし、あなたはプログラムsvnnotifyを探しています。すでにインストールされていることが確実な場合は、次のことを試してください。
whichを実行して、システムがコマンドをすでに認識しているかどうか、およびコマンドがどこにあるかを確認します。
$ which svnnotify
/usr/bin/svnnotify
それでも見つからない場合は、PATHにsvnnotifyというコマンドはありませんが、システムのどこかにPATHにないコマンドがある可能性があります。
locate svnnotify
で確認してください。
$ locate svnnotify
/usr/example/bin/svnnotify
/usr/bin/svnnotify
/usr/share/svnnotify/foo
...
svnnotifyを最初からインストールした場合、パッケージマネージャーはそれがどこにあるかわからない可能性があります。Locateが役立つはずです。非標準のファイルの場所に注意し、チュートリアルの手順を適切に調整する必要があります。
ごく最近インストールした場合は、Sudo updatedb
を実行して、Locateがファイルシステムへの最近の追加を認識できるようにします。
これらの手順でファイルが見つからない場合は、パッケージがインストールされていることを確認するか、お気に入りのパッケージマネージャー(Synaptic、apt-get、aptitudeなど)からインストールしてください。 Ubuntu 10.04では、svnnotifyはパッケージlibsvn-notify-Perlによって/ usr/bin/svnnotifyにインストールされます。 Ubuntusvnnotifyを使用している場合は、チュートリアルの手順を適切に変更する必要があります。
チュートリアル はpost-commitスクリプトを作成する方法を示しています。正しいsvnnotifyを指すようにスクリプトを変更する必要があります。システムの/ usr/local/bin/svnnotifyではなく/ usr/bin/svnnotifyに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>
Ubuntuでは、svnnotify
はlibsvn-notify-Perl
パッケージで提供されます。
ターミナルでSudo apt-get install libsvn-notify-Perl
と入力すると、svnnotify
がインストールされ、スクリプトを再試行します。
私はそれをそのように実行します:
myuser @ linux-server:/ usr/local/svn/svn_repo/hooks $ post-commit/usr/local/svn/svn_repo 9
私はこれを出力として取得します:
コミット後:コマンドが見つかりません
Linuxおよびその他のUnixシステムでは、シェルはデフォルトで(セキュリティ上の理由から)現在の作業ディレクトリでプログラムを検索しないため、次のようにスクリプトを実行する必要があります。
myuser@linux-server:/usr/local/svn/svn_repo/hooks$ ./post-commit /usr/local/svn/svn_repo 9