如何在win7 64位中设置VisualSVN提交后挂钩

如何在win7 64位中设置VisualSVN提交后挂钩,svn,hook,visualsvn,svn-hooks,Svn,Hook,Visualsvn,Svn Hooks,我的post-commit钩子从未被触发,我想这是因为 我需要设置一些文件系统权限 我已经安装了VisualSVN-Server-2.5.2,并使用Subversion插件运行eclipse 除了VisualSVN钩子触发之外,一切都正常工作 这是我的post-commit.cmd文件,名为“post-commit.cmd” 更新1 当我像这样放置“开始”文本时,提交窗口会冻结,并显示一个跳动的进度绿色条,比如等待钩子触发或其他操作。我无法 取消提交操作,但我可以关闭eclipse,然后硬终止提

我的post-commit钩子从未被触发,我想这是因为
我需要设置一些文件系统权限

我已经安装了VisualSVN-Server-2.5.2,并使用Subversion插件运行eclipse

除了VisualSVN钩子触发之外,一切都正常工作

这是我的post-commit.cmd文件,名为“post-commit.cmd”

更新1 当我像这样放置“开始”文本时,提交窗口会冻结,并显示一个跳动的进度绿色条,比如等待钩子触发或其他操作。我无法
取消提交操作,但我可以关闭eclipse,然后硬终止提交窗口

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

如果有人将存储库保存到本地硬盘上,这是可行的。只有当“保存路径”用于网络驱动器时,它才不起作用。好的,这是向前的一步。巴斯文件可能需要一些用户/密码

下面是将存储库保存到本地硬盘的bat文件(感谢Christopher C.Simmons(CCS))

我们的想法是启动一个更大的脚本myScript.cmd,它正在执行
我的存储库。如果我手动启动post-commit.cmd,这将起作用

C:\PROGRA~2\VISUAL~1\bin\myScript.cmd 
exit 0
在这里阅读手册

我不明白下面这段文字的实际操作方法

“Subversion以拥有访问Subversion存储库的进程的同一用户的身份执行挂钩。在大多数情况下,存储库是通过Subversion服务器访问的,因此该用户与服务器在系统上运行的用户相同。钩子本身需要配置操作系统级权限,以允许用户执行钩子。此外,这意味着钩子直接或间接访问的任何程序或文件(包括Subversion存储库)都将作为同一用户访问。换句话说,对可能阻止钩子执行其设计要执行的任务的潜在权限相关问题保持警惕。”

更新
  • VisualSVN服务器服务在
    网络服务下运行
    默认或专用自定义帐户下(应创建
    手动)

  • Subversion挂钩在VisualSVN服务器服务下执行
    帐户(
    网络服务
    或专用帐户)

  • 如果手动启动钩子脚本时它工作正常,我建议您检查服务帐户的权限。它应该可以访问“C:\PROGRA~2\VISUAL~1\bin\myScript.cmd”和所有其他相关文件

    还请注意,在Subversion调用钩子脚本之前,它会从环境中删除所有变量,包括Windows上的%PATH%。因此,您的脚本只能运行另一个程序,如果您拼出该程序的绝对名称


    用图片更新了我的问题。在图片中,我认为我已正确设置了权限。在图片中,是VisualSvn“服务帐户”吗?否,您在“权限”对话框上显示的帐户是
    VisualSVN服务器管理员
    。此帐户用于向域用户提供使用VisualSVN服务器管理器远程访问VisualSVN服务器的权限。若要验证用于运行VisualSVN服务器服务的帐户,请转到
    服务。msc
    ,在列表中查找VisualSVN服务器,并检查其“登录”设置。默认情况下,它应该是
    网络服务
    (但在瑞典语中可能会有不同的拼写)。是的,正如我在services.msc中看到的那样,它是“网络服务(Nätverkstjänst)”。我设置了完全权限,但没有触发。就像画展一样。还有其他IDE吗?请检查文件夹权限:F:\Repositories\、F:\druidBACKUP\SVN\、F:\druidBACKUP\SVN\。VisualSVN服务器服务帐户(“网络服务(Nätverkstjänst)”是否具有访问这些文件夹的权限?嗨,埃里克,你是如何添加VisualSVN管理员用户的,如屏幕截图所示?我现在不记得我是否这样做了。最后运行了本地硬盘的post-commit钩子,因为我从来没有在NASit上运行过它,我得到了它。
    @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