2009-07-11 3 views
2

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

У меня есть три файла в моем D: \ SVN \ перехватывает файл (D: \ не окно привода)

после commit.bat
ПРОФ-пост фиксации-hook.cmd
trac- после совершения крючок

Я установки пост-commit.bat файл в D: \ SVN \ файл крючки со следующим

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

В моей ПРОФ-пост-фиксации-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%" 

В моей ПРОФ-пост фиксации крюками файла - его просто стандартный сценарий из 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 I get

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

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

Если это не поможет, вы должны попробовать войти в файл. Поскольку он отлично работает при использовании 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.

EDIT: Извините, пропустил сообщение об ошибке, которое вы уже отправили. Похоже, что не получается правильно options.project, и он может быть установлен на None, если он должен быть установлен с TRAC_ENV с опцией -p.

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

EDIT: Кстати, линия ошибки:

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

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

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

и посмотреть, что такое выход.

+0

привет спасибо за ответ - я сделал это, но ничего не отображается в файле .log. Любые идеи, почему я получаю ошибку в PYTHON_EGG_CACHE и т. Д.? – 2009-07-11 05:52:57

+0

Только что обновил ответ; посмотрите пожалуйста. Также попробуйте выполнить вывод журнала из файла фиксации. – ars

+0

будет ли это иметь что-то с #!/Usr/bin/env python - поскольку мои установки python и trac (за каждый блок кода выше) находятся в нестандартных каталогах? – 2009-07-11 06:07:05

0

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

ПРОФ-пост фиксации крюк -p/путь/к/среда -r 1001

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

Удачи вам!

Смежные вопросы