これは完全に可能で、ちょうど2つの小さなハッキングを必要としています...うわー!
問題は、get_repositoryがsvnリポジトリの値をtrac.iniファイルから読み込むことです。これはE:を指していて、Y:/ではありません。単純な修正では、リポジトリがrepository_dirにあるかどうかをチェックし、そうでない場合は、新しい変数remote_repository_dirをチェックします。修正の2番目の部分は、現在のリポジトリアドレスが渡されたものと一致するかどうかを確認するエラーメッセージをcache.pyから取り除くことです。
いつものように、これは自己責任で使用し、 !!!
まず、trac.iniファイルを開き、 'repository_dir'変数の下に新しい変数 'remote_repository_dir'を追加します。リモートリポジトリディレクトリは、ローカルマシン上のマップされたドライブを指します。それは次のようになります。
repository_dir = E:/Projects/svn/InfoProj
remote_repository_dir = Y:/Projects/svn/InfoProj
次は、我々はそれがrepository_dir場所でリポジトリを見つけることができない場合は、新しい変数をチェックするためにapi.pyファイルを変更します。周り: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.""")
次近い:これまでその
rtype, rdir = self.repository_type, self.repository_dir
if not os.path.isabs(rdir):
rdir = os.path.join(self.env.path, rdir)
変更:156あなたがこれを持っているだろうし
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ファイル内のアラートを削除する必要があります(これを行うのが最善の方法ではないことに注意してください。チェックの一部としてリモート変数を含めることができるはずですが、今のところ動作します)。それは次のようになります。97:近くcache.pyで
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))
:私たちは、それは次のようになりますので、if文の最初の部分を削除しようとしている
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))
警告!これを行うと、ディレクトリが変更され、再同期が必要な場合、もはやエラーが表示されなくなります。
これは誰かを助けることを望みます。
http://trac.edgewall.org/wiki/TracInstall#VersionControlSystemによると、Tracはリモートリポジトリをサポートしていません.LinuxでもWindowsでも、本当の問題ですか? –
こんにちはRichard、 返信いただきありがとうございます。リポジトリはtracと同じ場所にありますが、コミットはリモートで実行されています。これが同じものとみなされるかどうかは分かりません。 – going