4


コミット後のフックがトリガーされることはありません。設定する必要があるファイルシステムのアクセス許可がいくつかある ためだと思います。

VisualSVN-Server-2.5.2 をインストールし、Subversion プラグインを使用して Eclipse を実行しています。

VisualSVN フックのトリガーを除いて、すべてが期待どおりに機能しています。

これは、「post-commit.cmd」という名前の私の post-commit.cmd ファイルです。

C:\PROGRA~2\VISUAL~1\bin\myScript.cmd 
exit 0

更新 1 このように「開始」テキストを配置すると、コミット ウィンドウは、フックのトリガーまたは何かを待っているように、脈動する進行状況の緑色のバーでフリーズします。
コミット操作をキャンセルすることはできませんが、Eclipse を閉じてから強制終了することはできますコミットウィンドウ。

start C:\PROGRA~2\VISUAL~1\bin\post-commit.cmd
exit 0

更新 2

リポジトリをローカル hdd に保存すると機能します。保存パスが機能しないのは、ネットワーク ドライブの場合です。よし、一歩前進だ。バスファイルにはおそらくユーザー/パスワードが必要です

レポジトリをローカル hdd に保存するバッチ ファイルは次のとおりです (Christopher C. Simmons (CCS) に感謝)

@ECHO OFF
CLS
:: =================== COPYRIGHT ========================================= 
:: File:          svn_backup.bat
:: Author:        Christopher C. Simmons (CCS)
:: Date:          05.01.2008
:: Purpose:       To make backups ("hot copies") of multiple SVN repos
:: History:       0.1 Initial Release
:: Assumes:       Your path contains: C:\Program Files\Subversion\bin
::                Your repodir contains only repos
:: Copyright:     2008 csimmons.net
::                
:: NOTICE!!!
:: csimmons.net, LLC supplies this software AS IS and makes no guarantees
:: for your use of it. csimmons.net, LLC is not responsible for any damage
:: or pain the use of this product may cause you.  Please give credit if 
:: you use this or create a derivative work.
:: =================== COPYRIGHT =========================================

:: =================== CONFIG ============================================
:: Path of the dir containing your repos [Note Trailing slash]
SET repodir=F:\Repositories\
:: Path of the dir in which to create you hotcopies [Note Trailing slash]
SET repodirhot=f:\druidBACKUP\SVN\
:: Path for log file [Note Trailing slash]
SET logdir=f:\druidBACKUP\SVN\
:: Path for svnadmin [Note Trailing slash]
::SET svnpath=C:\PROGRA~2\VISUAL~1\bin\svnadmin.exe
:: User mode - 1=Interactive | 0=NonInteractive
SET imode=1
:: =================== CONFIG ============================================

:: =================== SCRIPT ============================================
:: !!! NO NEED TO EDIT BEYOND THIS POINT !!!

:: Make a date_time stamp like 030902_134200
SET hh=%time:~0,2%

:: Add a zero when this is run before 10 am.
IF "%time:~0,1%"==" " set hh=0%hh:~1,1%
SET yymmdd_hhmmss=%date:~12,2%%date:~4,2%%date:~7,2%_%hh%%time:~3,2%%time:~6,2%

:: Make a name for the log file
SET repolog=%logdir%%yymmdd_hhmmss%repobackup.log

:: Start log
ECHO START %date% %time% >> %repolog%

:: IF a  hotcopy exists delete it first ELSE
:: Create directories and svn hotcopy repos to them
FOR /F %%G IN ('dir /b /ad %repodir%') DO ^
IF EXIST %repodirhot%%%G (rmdir /S /Q %repodirhot%%%G & mkdir %repodirhot%%%G >> %repolog% & ^
ECHO Starting SVN backup for %%G... >> %repolog% & ^
C:\PROGRA~2\VISUAL~1\bin\svnadmin hotcopy %repodir%%%G %repodirhot%%%G --clean-logs >> %repolog% & ^
IF %imode%== 1 ECHO FINISHED...%%G) ^
ELSE (mkdir %repodirhot%%%G >> %repolog% & ^
ECHO Starting SVN backup for %%G... >> %repolog% & ^
C:\PROGRA~2\VISUAL~1\bin\svnadmin hotcopy %repodir%%%G %repodirhot%%%G --clean-logs >> %repolog% & ^
IF %imode%== 1 ECHO FINISHED...%%G)

:: Finish log
ECHO END %date% %time% >> %repolog%
:: Display log message if interactive mode otherwise EXIT
ECHO Done... Logs available here: %repolog% 
if %imode%== 1 pause
:: =================== SCRIPT ============================================
EXIT 


アイデアは、私のリポジトリのホットコピーを行っているより大きなスクリプト myScript.cmd を起動することです。post-commit.cmd を手動で開始すると、これは機能します

ここでマニュアルを読む visualsvn.com

以下のテキストに関して、実際に何をすべきか理解できません。

「Subversion は、Subversion リポジトリにアクセスしているプロセスを所有する同じユーザーとしてフックを実行します。ほとんどの場合、リポジトリは Subversion サーバー経由でアクセスされるため、このユーザーは、システム上でサーバーが実行されているユーザーと同じです。フック自体は、そのユーザーがそれらを実行できる OS レベルのパーミッションで構成する必要があります. また、これは、フックによって直接的または間接的にアクセスされるすべてのプログラムまたはファイル (Subversion リポジトリを含む) が同じユーザーとしてアクセスされることを意味します.つまり、フックが実行するように設計されたタスクを実行できなくなる可能性がある、パーミッションに関連する潜在的な問題に注意してください。」

アップデート 設定権限

4

1 に答える 1

4
  • VisualSVN Server サービスはNetwork Service、デフォルトのアカウントまたは専用のカスタム アカウント (手動で作成する必要があります) で実行されます。

  • Subversion フックは、VisualSVN Server サービス
    アカウント (Network Serviceまたは専用アカウント)で実行されます。

フック スクリプトを手動で起動して正常に動作する場合は、サービス アカウントの権限を確認することをお勧めします。「C:\PROGRA~2\VISUAL~1\bin\myScript.cmd」および関連する他のすべてのファイルにアクセスできる必要があります。

Subversion がフック スクリプトを呼び出す前に、すべての変数 (Windows の %PATH% を含む) を環境から削除することにも注意してください。したがって、そのプログラムの絶対名を綴った場合にのみ、スクリプトは別のプログラムを実行できます。

Subversion FAQ: リポジトリ フックが機能しないのはなぜですか?

于 2012-01-23T08:52:06.080 に答える