Post Commit Hook с Trac и SVN - PullRequest
2 голосов
/ 11 июля 2009

Так что у меня возникли некоторые проблемы с настройками. Позвольте мне объяснить.

У меня есть три файла в моем файле d: \ svn \ hooks (D: \ не диск Windows)

после commit.bat
ПРОФ-пост фиксации-hook.cmd
ПРОФ-пост фиксации крюк

Я установил файл post-commit.bat в файле d: \ svn \ hooks со следующим

%~dp0\trac-post-commit-hook.cmd %1 %2

В моем trac-post-commit-hook.cmd - у меня есть

@ECHO OFF
::
:: Trac post-commit-hook script for Windows
::
:: Contributed by markus, modified by cboos.

:: Usage:
::
:: 1) Insert the following line in your post-commit.bat script
::
:: call %~dp0\trac-post-commit-hook.cmd %1 %2
::
:: 2) Check the 'Modify paths' section below, be sure to set at least TRAC_ENV

:: ----------------------------------------------------------
:: Modify paths here:

:: -- this one *must* be set
SET TRAC_ENV=D:\trac\project

:: -- set if Python is not in the system path
SET PYTHON_PATH=D:\trac\Python25

:: -- set to the folder containing trac/ if installed in a non-standard location
SET TRAC_PATH=D:\trac\Python25\Lib\site-packages\trac
:: ----------------------------------------------------------

:: Do not execute hook if trac environment does not exist
IF NOT EXIST %TRAC_ENV% GOTO :EOF

set PATH=%PYTHON_PATH%;%PATH%
set PYTHONPATH=%TRAC_PATH%;%PYTHONPATH%

SET REV=%2

Python "%~dp0\trac-post-commit-hook" -p "%TRAC_ENV%" -r "%REV%" 

В моем файле trac-post-commit-hook - это просто стандартный скрипт из http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook?rev=920

== Проблемы ==

Когда я запускаю post-commit.bat в командной строке cmd - все работает нормально - ошибок не возникает.

Однако, когда я фиксирую что-то в SVN для тестового билета, который я создал в Trac - # 1 исправлено. - ничего не меняется на Trac. Ничего не обновляется вообще.

Когда я меняю 'trac-post-commit-hook' на 'trac-post-commit-hook.py' и запускаю из d: \ svn \ hooks \ python trac-post-commit-hook.py, я получаю

File "trac-post-commit-hook.py", line 104, in <module>
os.environ{'PYTHON_EGG_CACHE'] = os.path.join(options.project, '.egg-cache')

File "D:\trac\Python25\lib\ntpath.py", line 90, in join
assert len(path) > 0
TypeError: object of type 'NoneType' has no len()

Я в растерянности относительно того, что на самом деле идет не так? Кто-нибудь может оказать какую-либо помощь?

Ответы [ 2 ]

2 голосов
/ 11 июля 2009

Возможно, вы захотите проверить этот ответ, чтобы увидеть, поможет ли он решить вашу проблему:

Если это не поможет, попробуйте войти в файл. Так как он работает нормально, когда вы используете SVN, но не работает для Trac, возможно, это какая-то ошибка конфигурации. Как только вы действительно сможете просмотреть сообщение об ошибке, его будет легче исправить. Для начала попробуйте изменить на:

Python "%~dp0\trac-post-commit-hook" -p "%TRAC_ENV%" -r "%REV%" 2>&1 1>>c:\temp\trachook.log

в вашем файле cmd. Это должно отправить и stdout, и stderr сообщения в файл \ temp \ trachook.log.

РЕДАКТИРОВАТЬ: Извините, пропустил сообщение об ошибке вы уже отправили. Похоже, что он не получает правильное значение options.project, и его можно установить равным None, когда его следует установить в TRAC_ENV из опции -p

Вы уверены, что запускаете его с этой опцией после того, как переименуете его в .py и запустите? Если это так, попробуйте изменить этот файл и записать значение options.project после анализа аргументов. Попробуйте отследить, почему он не установлен.

РЕДАКТИРОВАТЬ: Кстати, строка ошибки:

File "trac-post-commit-hook.py", line 104, in <module>
os.environ{'PYTHON_EGG_CACHE'] = os.path.join(options.project, '.egg-cache')

Я не вижу ссылки на это в ссылке на post-commit-hook. Вы добавили это? Или ссылка неправильная? Кроме того, в этой строке есть синтаксическая ошибка: фигурная скобка '{' должна быть квадратной скобкой '['. Но я думаю, что ошибка на самом деле происходит до этого, в os.path.join (options.project - None). Попробуйте поставить строку перед этим:

print 'options.project is set to: ', options.project

и посмотрите, что получится.

0 голосов
/ 23 июля 2009

скрипт хука требует передачи параметров. Чтобы проверить вручную, вы можете запустить:

trac-post-commit-hook -p / path / to / environment -r 1001

замените 1001 ревизией, содержащей команду и путь к вашей среде trac. Запустите его, пока вы находитесь в каталоге hooks.

Удачи!

...