2009-02-17 4 views
2

J'ai eu un repo auquel j'accéderais, en utilisant TortoiseSVN, à partir du seul ordinateur sur lequel le Le service Subversion win32 était en cours d'exécution et cela fonctionne depuis un moment déjà. J'ai décidé d'essayer de configurer mod_dav_svn pour pouvoir l'obtenir d'ailleurs. Lorsque je tente d'y accéder, je reçois cette erreur dans le navigateur:Erreur Weird Apache2.2 SVN, "format de référentiel attendu '3' ou '5'; format trouvé '9'"

<D:error> 
<C:error/> 
<m:human-readable errcode="165005"> 
Could not open the requested SVN filesystem 
</m:human-readable> 
</D:error> 

... et ces erreurs dans le journal:

(20014)Internal error: Expected repository format '3' or '5'; found format '9' 
Could not fetch resource information. [500, #0] 
Could not open the requested SVN filesystem [500, #165005] 
Could not open the requested SVN filesystem [500, #165005] 

Voici ce qui est dans mon .conf:

LoadModule dav_module modules/mod_dav.so 
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so 

et

DAV svn 
SVNPath e:/dev/.svn 

Je mets le /.svn bec ause avant que j'ai fait cela, j'obtenais le même texte d'erreur sur le client (mais avec le code 720002) et le journal a montré que Apache cherchait e:/dev/format, qui n'existe pas, mais e:/dev /. svn/format fait. J'ai lu this, et notant que ma subversion était 1.5.1 et 1.5.5 était dehors, et que j'avais récemment mis à jour TortoiseSVN, j'ai pensé que peut-être il y avait une certaine incompatibilité (ceci peut ne pas avoir de sens, je ne fais pas Je sais comment cela fonctionne exactement.) J'ai donc téléchargé 1.5.5, arrêté le service, copié les DLL et les EXEs, redémarré le service, copié les nouveaux fichiers .so dans le répertoire des modules d'Apache, et redémarré httpd. Pas de chance.

Des suggestions? Ce format « 9 » particulier chose semble être rare ...

Répondre

5

s'il vous plaît garder avec moi à travers le explantion suivant, il justifie mon hypothèse sur votre problème et vous donnera quelques idées quant à la façon dont fonctionne SVN:

Dans Subversion vous avez 2 endroits contenant des fichiers: le dépôt et la copie de travail.

Le référentiel stocke l'historique, vous extrayez du référentiel dans une copie de travail qui y fonctionne et vous retournez dans le référentiel. Svnervice et apache svn vous permettent d'exposer un référentiel Tortoise vous permet de créer des copies de travail à partir d'un référentiel exposé. D'après ce que vous avez posté, je pense que vous essayez d'exposer une copie de travail au lieu d'un dépôt (le dossier ".svn" est typique d'une copie de travail et je parie que le répertoire e: \ dev.svn est un checkout) .

aller dans la gestion des services et trouver la ligne de commande qui exécute le service svn il doit contenir une chaîne comme les suivantes: svnserve -d -r {somepath}

La {somepath} est le chemin de votre dépôt. C'est le chemin que vous devez fournir dans la directive de configuration SVNPath d'apache.

Une dernière chose: ne pas permettent R/W accès au même référentiel utilisant à la fois svnserve et svn apache, il sera probablement corrompre votre référentiel en l'exposant à la course des conditions de la transaction verrouille

+0

D'oh ! Merci! Oui, je l'ai indiqué à e: \ svn et maintenant ça marche très bien. Et merci de noter la condition de course. Je suppose que je vais juste oublier svnserve et essayer d'obtenir TortoiseSVN pour passer par le serveur Web maintenant. – Kev

+0

en utilisant tortue et le serveur web ne devrait pas être un problème :). Vous devriez savoir que dans mon expérience, le module http acces est plus lent que le module d'accès svn. – Jean

+0

Donc plutôt que de passer par Apache, il suffit d'utiliser le port SVN. Si j'ai besoin de cryptage, utilisez SSH? – Kev