2010-08-23 11 views
9

J'essaie de copier un référentiel utilisé en utilisant svnsync (je le fais de cette façon afin d'assurer une utilisation optimale de mon référentiel aussi longtemps que son la machine fonctionne) mais cela ne semble pas fonctionner.svnsync ne fonctionne pas: modification Revprop bloquée par le crochet pre-revprop-change

J'ai deux machines (j'ai changé les noms, mais pas les autres infos)

  • INITIAL: Linux personnalisée avec Subversion 1.4.5 (r25188) (tel que rapporté par svnadmin). À partir de cette machine, j'essaie de synchroniser sur un référentiel appelé SOURCE. Ce référentiel est accessible via le protocole HTTP et un utilisateur svnsync a été créé. Dans SOURCE/hooks, un seul fichier exécutable existe: pre-revprops-change.
  • FINAL: Ubuntu avec Subversion 1.6.6 (r40053) (signalé par svnadmin). Sur cette machine, je vais me synchroniser sur un dépôt appelé svn16. Ce référentiel est accessible via le protocole HTTP et un utilisateur svnsync a été créé. Dans svn16/hooks, les fichiers exécutables sont pre-revprop-change et start-commit. Sur cette machine, dav_svn.conf contient la directive SVNParentPath /var/svn, ce qui rend tous les référentiels accessibles sous http://FINAL/svn

J'ai assurais URL et login/passwd sont corrects en ouvrant chaque URL du référentiel dans mon navigateur et l'émission des boîtes de dialogue d'authentification, qui semblaient toujours travailler .

Je suis en train d'exécuter la commande suivante

svnsync initialize http://FINAL/svn/svn16 http://INITIAL/SOURCE 

Mais il finit toujours par montrer

Authentication realm: <http://FINAL:80> All Subversion Repositories hosted on FINAL 
Password for 'ubunut-user': 
Authentication realm: <http://FINAL.fr:80> All Subversion Repositories hosted on FINAL 
Username: svnsync 
Password for 'svnsync': 
svnsync: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent 
svnsync: At least one property change failed; repository is unchanged 
svnsync: Error setting property 'sync-lock': 
Revprop change blocked by pre-revprop-change hook (exit code 255) with no output. 

Je crois qu'il ya une sorte de problème de configuration somewhere§. Mais quoi ? Et où ? J'ai atteint mes limites, et le web ne semble d'aucune aide ici, car les différents documents que j'ai vu suggèrent de rendre les hooks exécutables par tout l'univers, c'est une solution efficace (ce qui n'est pas dans mon cas).

Répondre

13

Il s'avère que j'étais plus stupide que stupide.

Dans un tel cas d'erreur, le moyen le plus simple de vérifier que tout fonctionne correctement est d'appeler manuellement différents hooks.

Il a révélé mon crochet pre-revprop-change a été mal écrit avec

"#!/bin/sh" 
exit 0 

De toute évidence, la suppression " résolu la question.

+0

Pour Windows il suffit de créer un fichier de chauve-souris vide pour le crochet factice'echo rem>% miroir% crochets \ \ pré-revprop-change.bat' –

12

Juste un petit mot, pour éviter très souvent les erreurs.

En cas d'une telle erreur, assurez-vous d'abord que le fichier pre-revprops-change est exécutable. Sinon, exécutez:

chmod +x $DEST_SVN_REPO/hooks/pre-revprops-change,

$ DEST_SVN_REPO - chemin de référentiel de destination.

+0

Utilisation de Samba, le fichier n'a pas exécutable. Le rendre exécutable en changeant les options de ma commande 'mount' a résolu mon problème. Merci. –

+0

qui devrait lire pre-revprop-change, pas que quelqu'un d'autre que moi utilise encore svn –

1

voir ici: https://svn.apache.org/repos/asf/subversion/trunk/notes/svnsync.txt

vous config de destination a échoué.La phase INIT (attributs de copie) doit être effectuée. A l'intérieur du script pre-revprops-change, vous devez coder le nom d'utilisateur autorisé à mettre à jour. Sinon, la destination sera endommagée par les utilisateurs. svn ne peut pas fonctionner en tant que nœuds actifs-actifs. habituellement vous configurez le script de crochet pour empêcher toute modification par les utilisateurs. ils devraient avoir seulement accès à Reaad.

généralement aller au service Web de superutilisateur. là c'est hors sujet.