Как настроить перехваты VisualSVN после фиксации в win7 64bit - PullRequest
4 голосов
/ 23 января 2012

Мой пост-коммитный хук никогда не срабатывает, и я думаю, это потому что
Есть некоторые разрешения файловой системы, которые мне нужно установить.

У меня установлен VisualSVN-Server-2.5.2 и запущено eclipse с плагином Subversion.

Все работает, как и ожидалось, за исключением запуска ловушки VisualSVN.

Это мой файл post-commit.cmd с именем "post-commit.cmd"

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

ОБНОВЛЕНИЕ 1 когда я помещаю «стартовый» текст, подобный этому, окно «Фиксация» замирает с пульсирующей зеленой полосой прогресса, как будто оно ждет срабатывания хука или чего-то еще. Я не могу
отменить операцию фиксации, но я могу закрыть затмение и затем жестко убить окно фиксации.

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

ОБНОВЛЕНИЕ 2

Это работает, если сохранить хранилище на локальный жесткий диск. Это когда save-path для сетевого диска не работает. Хорошо, это шаг вперед. файлу ванны нужен пользователь / пароль, может быть

Вот файл bat, который сохраняет хранилище на локальный жесткий диск (благодаря Кристоферу С. Симмонсу (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, поэтому этот пользователь является тем же пользователем, которого сервер запускает на сервере. Сами хуки должны быть настроены с разрешениями на уровне ОС, которые позволяют этому пользователю выполнять их. Кроме того, это означает, что любые программы или файлы (включая репозиторий Subversion), к которым хук напрямую или косвенно обращается, будут доступны как того же пользователя. Другими словами, будьте внимательны к потенциальным проблемам, связанным с разрешениями, которые могут помешать хуку выполнять задачи, для которых он предназначен. "

ОБНОВЛЕНИЕ Permission to set

1 Ответ

4 голосов
/ 23 января 2012
  • Служба VisualSVN Server работает под учетной записью Network Service по умолчанию или под выделенной настраиваемой учетной записью (должна создаваться вручную).

  • Хуки Subversion выполняются подСлужба сервера VisualSVN
    учетная запись (Network Service или выделенная учетная запись)

Если скрипт подключения работает правильно, когда вы запускаете его вручную, я советую вам проверить разрешения для учетной записи службы,Он должен иметь доступ к 'C: \ PROGRA ~ 2 \ VISUAL ~ 1 \ bin \ myScript.cmd' и всем другим задействованным файлам.

Обратите также внимание, что перед вызовом Subversion сценария перехвата он удаляет все переменные- включая% PATH% в Windows - из среды.Следовательно, ваш сценарий может запускать другую программу, только если вы указали абсолютное имя этой программы.

FAQ по Subversion: Почему не работают перехватчики моего репозитория?

...