問題タブ [post-commit-hook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
svn - SVN リビジョン ファイルで特定の文字列を検索するバッチ スクリプト
Windows バッチ スクリプトに関するヘルプが必要です
私は何を達成しようとしています:
- リポジトリから最も新しい (最後の) リビジョンを取得する
- そのファイルで特定の文字列を検索する
- 文字列が存在する場合、Web ページを読み込みます
私が試したこと:
なぜ私はこれをやろうとしているのですか:
メッセージに特定の文字列を含むコミット後に Hudson CI 自動テストを開始したい (例Autobuild: true
)
Windows バッチ スクリプトに慣れていないため、コードをデバッグできません
私のスクリプトでは、次を使用しました:
- パスに変数を追加できるかどうかわからなかったため、変数の連結(間違っている可能性があります)
findstr
ファイルに文字列が含まれているかどうかを調べる (findstr は変数にも使用できることを知っています)
私の小さなスクリプトに構文上の問題だけでなく、意味上の問題があっても驚かないでしょう。なぜなら、既に述べたように、私はこれまでバッチ スクリプトをあまり作成したことがないからです。
要件も仕様もないので、スクリプトは可能な限り実装できます。だから私は提案のために開いています
post-commit
PS私はまた、svnはすべてが完了するまでコントロールをユーザーに返さないため、太りすぎのプロシージャを使用することは良い考えではないことも読みました->これは大きな問題ではありません
編集: 私は実際に最新のリビジョン番号を取得したのではなく、コマンド文字列を使用したことをサイドテストで発見しました。もう少しグーグルで検索した後、Windowsでコマンドを呼び出して結果を変数に保存するのはそれほど簡単ではないことがわかりました。そのため、ファイルを使用して中間結果を保存することにしました。
これは私が試したことです:
リビジョン.bat:
今、私はSVNでこのエラーを受け取ります:
a
間違った時間に間違った場所に変数を作成したためだと思います。しかし、batファイルを手動で実行すると、このエラーは発生しません
linux - SVN コミット後の更新エラー (テンプレートから一時ファイルを作成できない / 権限が拒否されました)
私のコミット後のフックは次のとおりです。
/usr/bin/svn update /var/www/html/mysite/ --username myusername --password mypassword --no-auth-cache >> /var/www/html/mysite/foo.txt 2>&1
コミットを実行した後、コミット後のフックは foo.txt に次のように出力します。
'/var/www/html/mysite' を更新しています: svn: E000013: テンプレートから一時ファイルを作成できません '/var/www/html/mysite/.svn/tmp/svn-XXXXXX': 許可が拒否されました
何か案は??権限に関連するものでなければなりません。以前は機能していましたが、何かが起こりました。
svn - SVN コミット後のスクリプト
hooks フォルダーの post-commit.sh というファイルにこれがあります。
今私が実行した場合:
すべてが機能しますが、PC からコミットすると機能しません。www-data ユーザーをグループ「developers」に追加しました。これは、Web サイトと svn ディレクトリのフォルダーとファイルの所有者グループです。shファイルを実行可能にしました。私は何が欠けていますか?ありがとうジェームズ
git - Github ファイル変更通知
特定のファイルの変更について人々に通知する方法はありますか? 具体的には、*.sql ファイルの変更を追跡し、開発者に変更を通知したいと考えています。コミット後のフックを通知するように構成するにはどうすればよいですか?
svn - 特定のブランチがコミットされたかどうかを確認するときに、コミット後のフック条件文が機能しないのはなぜですか?
Windows サーバーで VisualSVN サーバーを介して Subvbersion を実行しており、リポジトリをトランクと 3 つのブランチでセットアップしています。ブランチは、dev、test、prod です。コミットの実行後に作業コピーを更新するコミット後のフックを実行したいのですが、コミットが dev ブランチで行われた場合にのみ、その作業コピーを更新したいのです。
これは私が今持っているコードです...
条件を削除すると、すべてのコミットで更新が実行されるため、条件内のコードが機能することがわかります。また、条件付きを通常のバッチ ファイルとしてテストし、「branches/dev」や「branches/test」などの文字列を送信して、これらのテストで適切に動作しました。ただし、これをコミット後のフック スクリプトとして保存すると、コミットが dev ブランチにあるかどうかに関係なく、実行されません。
編集:この質問は既に回答されているというフィードバックに基づいて、他の質問で推奨されているアプローチを試しましたが、そのアプローチも機能していません。そこで提案されたコードの私のバージョンは次のとおりです。
これを機能させるために、svn update を実行するために post-commit-actions.bat という名前のフック ディレクトリにファイルを作成しました。ただし、これはコミット後の実行ではありません。関連する情報を省略している場合は、お知らせください。
編集:みんなの助けに感謝します。ここでの入力により、実用的なソリューションをまとめることができました。同様の問題に対する答えを探している人にとっては、次のように機能しました。
svn - Subversion post-commit フックの変更をループするにはどうすればよいですか?
他の作業コピーがコミットされたときにライブ サーバー上の特定の作業コピーを更新する Subversion リポジトリのコミット後のフックに取り組んでいます。作業コピー全体で更新コマンドを実行すると機能しますが、変更された特定のファイルに対して実行したい場合は機能しません。Windows 2008 サーバーで VisualSVN サーバーを実行していますが、フックは .cmd ファイルから実行されています。
どんな助けでも大歓迎です。私が使用しているコードは次のとおりです。
FOR ループに問題があると思いますが、それが何かわかりません。これは、作業コピー全体を更新するために機能していたコードです。ただし、この解決策は、コミットごとに更新を実行するのに時間がかかるため、実際には機能しません。
編集: CMD の FOR ループについて読んだ内容に基づいて、上記のコードにいくつかの小さな変更を加えましたが、まだ機能していません。エラーは発生しませんが、更新は実行されません。
編集: .bat ファイルまたは CMD ファイルとして完全に実行される問題の解決策を見つけましたが、post-commit.cmd からはまだ更新されません。エラーは返されません。更新が実行されないだけです。
svn - SVN フックが動作を停止しました - SVN 更新が実行されていません
約 1 か月前にセットアップした SVN リポジトリがあり、いくつかの苦労の後、開発サーバー上の Web サイトの作業コピーを更新するポストコミット フックが機能しました。数日間は問題なく動作していましたが、昨日、突然停止しました。
ネットワーク上のサーバーから VisualSVN サーバーを実行しています。私の知る限り、Web サーバーまたは VisualSVN サーバーをホストしているサーバーは何も変わっていません。過去数日間、VisualSVN サーバーのイベント ビューアーにイベントが表示されないため、エラーがあるかどうかを確認できず、SVN に固有のログ ファイルが見つかりません。「svn log」を実行すると、コミット以外は何も表示されません。エラーがあった場合にエラーが表示されるかどうかはわかりません。
実行中のスクリプトのスクラブ コピーを次に示します。
また、サーバー上のロックをチェックしましたが、何も見つからず、DEV サーバーでも作業コピーのクリーンアップを実行しましたが、すべて役に立ちませんでした。また、別のワークステーションからの更新を試みましたが、それが私のローカル マシンであるかどうかを確認するためであり、それでも適切に実行されませんでした。最後に、コマンドラインからスクリプトを実行しようとしましたが、実行され、作業コピーが正常に更新されました。実際には、サーバーがそれを実行していないように見えます。
この問題をデバッグするためのヘルプは大歓迎です。
更新: いくつかのデバッグ戦略を見つけた後、次のようにコマンドを含めることで、フックが実際に実行されていることを確認できました。
予想どおり、これによりコミットがログに記録されました。また、フックが正しいトランク/ブランチをキャッチしていることを確認するために、同様のデバッグ コードも含めました。それがしたすべて。次に、サーバーの応答をログに記録するために、更新コードを次のように変更しました。
これは何も返しません。私はこれについて完全に途方に暮れています。
更新 2: この問題をテストしていたときは、以前はこれを取得できませんでしたが、コマンドを単独で実行すると...
「svn: E020024: Error resolving case of」 を返し、指定したパスを吐き出します。
私はこの問題のいくつかの原因をグーグルで検索しようとしましたが、私が見つけた唯一のことは、バックスラッシュをスラッシュに切り替えることを示唆していますが、まったく同じエラーを返しますが、スラッシュがバックスラッシュに戻っています.
更新 3: エラーがネットワーク サービスとして実行されているサーバーに関連しており、UNC パスを介して作業コピーにアクセスしようとしているかどうかを確認するために、サービスを自分の名前で実行するように変更し、ネットワーク ドライブをマッピングして、スクリプト内のこのマップされたドライブ。このテストではエラーは発生しませんでしたが、更新は実行されませんでした。
また、考えれば考えるほど、上記の UPDATE 2 でコマンド ラインから取得したエラーは、スクリプトの実行時に発生しているものではない可能性があります。これは、クライアント側 (TortoiseSVN によって実行される) のコミット画面が示すように私にエラー。エラーは表示されません。
だから、これは私が知っていることです。
- スクリプトは数日間正常に機能しました
- スクリプトが週末にかけて突然機能しなくなった
- 作業コピーをホストしているサーバーまたはリポジトリを実行しているサーバーに変更は加えられていません
- フックはエラーを生成していません (エラーは TortoiseSVN コミット画面に表示されます)。
- svn update コマンドが実行されていません。
私は完全に途方に暮れています。
bash - Subversion のコミット後のフックはコミット時に実行されません。コマンド ラインで実行できるため、スクリプトは機能します。
新しいリポジトリを作成しました。私のサーバーは Ubuntu 12.04 32 ビットです。コミットしたらすぐにコミットを有効にしたい。これは、公開 html ディレクトリに作業コピーを作成し、post-commit フックでその作業コピーを更新することによって実現されます。ここの手順を使用して設定しました:
http://www.frensen.be/content/using-subversion-automatically-update-live-website
問題は、プロジェクトのコミット時にポストコミットが実行されないことです。私のプロジェクトは問題なくコミットします。で実行できるため、スクリプトも有効なスクリプトであることを知っています
ディレクトリ内にあり、hooks
適切に更新されます。
私はそれが権限の問題かもしれないと思ったので、それが所有者でchown
あることを確認するために広範囲に使用しましwww-data
た:
しかし、まだ何もありません。コミットは成功しますが、フックが実行されません。私のフックスクリプトは次のようになります。
すべてのグーグルはアクセス許可の問題を指しているようですが、私はこれを理解できません。