Это полностью готово и просто требуется несколько небольших хаков ... woo hoo!
Проблема, с которой я столкнулась, заключается в том, что get_repository считывает значение репозитория svn из файла trac.ini. Это указывало на E: /, а не на Y: /. Простое исправление включает проверку, чтобы проверить, находится ли репозиторий в repository_dir, а если нет, то проверьте новую переменную remote_repository_dir. Вторая часть исправления включает в себя удаление сообщения об ошибке из cache.py, который проверяет, соответствует ли текущий адрес хранилища тому, который был передан.
Как всегда, используйте это на свой страх и риск, !!!
Сначала откройте файл trac.ini и добавьте новую переменную 'remote_repository_dir' под переменной 'repository_dir'. Удаленный репозиторий будет указывать на подключенный диск на вашем локальном компьютере. Это должно выглядеть примерно так:
repository_dir = E:/Projects/svn/InfoProj
remote_repository_dir = Y:/Projects/svn/InfoProj
Далее мы изменим файл api.py для проверки новой переменной, если он не может найти хранилище на repository_dir месте.Вокруг: 71 вы должны иметь что-то вроде этого:
repository_dir = Option('trac', 'repository_dir', '',
"""Path to local repository. This can also be a relative path
(''since 0.11'').""")
Под этой линии добавить:
remote_repository_dir = Option('trac', 'remote_repository_dir', '',
"""Path to remote repository.""")
Следующая вблизи: 156 вы будете иметь это:
rtype, rdir = self.repository_type, self.repository_dir
if not os.path.isabs(rdir):
rdir = os.path.join(self.env.path, rdir)
Изменение, что это:
rtype, rdir = self.repository_type, self.repository_dir
if not os.path.isdir(rdir):
rdir = self.remote_repository_dir
if not os.path.isabs(rdir):
rdir = os.path.join(self.env.path, rdir)
F вам нужно будет удалить предупреждение в файле cache.py (обратите внимание, что это не лучший способ сделать это, вы должны включить удаленную переменную как часть проверки, но на данный момент она работает).
В cache.py вблизи: 97 это должно выглядеть следующим образом:
if repository_dir:
# directory part of the repo name can vary on case insensitive fs
if os.path.normcase(repository_dir) != os.path.normcase(self.name):
self.log.info("'repository_dir' has changed from %r to %r"
% (repository_dir, self.name))
raise TracError(_("The 'repository_dir' has changed, a "
"'trac-admin resync' operation is needed."))
elif repository_dir is None: #
self.log.info('Storing initial "repository_dir": %s' % self.name)
cursor.execute("INSERT INTO system (name,value) VALUES (%s,%s)",
(CACHE_REPOSITORY_DIR, self.name,))
else: # 'repository_dir' cleared by a resync
self.log.info('Resetting "repository_dir": %s' % self.name)
cursor.execute("UPDATE system SET value=%s WHERE name=%s",
(self.name, CACHE_REPOSITORY_DIR))
Мы собираемся, чтобы удалить первую часть, если заявление так теперь должно выглядеть следующим образом:
if repository_dir is None: #
self.log.info('Storing initial "repository_dir": %s' % self.name)
cursor.execute("INSERT INTO system (name,value) VALUES (%s,%s)",
(CACHE_REPOSITORY_DIR, self.name,))
else: # 'repository_dir' cleared by a resync
self.log.info('Resetting "repository_dir": %s' % self.name)
cursor.execute("UPDATE system SET value=%s WHERE name=%s",
(self.name, CACHE_REPOSITORY_DIR))
Внимание! Выполнение этого будет означать, что он больше не дает вам ошибки, если ваш каталог изменился, и вам нужна повторная синхронизация.
Надеюсь, это поможет кому-то.
Согласно http://trac.edgewall.org/wiki/TracInstall#VersionControlSystem, Trac не поддерживает удаленные репозитории, будь то Linux или Windows, - это настоящая проблема здесь? –
Hi Richard, Спасибо за ответ. Репозиторий находится в том же месте, что и trac, но фиксация выполняется удаленно. Не уверен, что это считается одним и тем же? – going