33 votes

Impossible de valider Subversion

J'ai un client qui avait, de reconstruire sa génération automatique du serveur. Il a vérifié son projet dossier de mon serveur subversion, mais n'est plus en mesure de s'engager - il obtient cette erreur:

Error: Commit failed (details follow):  
Error: Cannot write to the prototype revision file of transaction
'551-1' because a   
Error: previous representation is currently being written by another
process  
Finished!:

J'ai cherché sur Google, mais bien que cette erreur a été souvent signalé il n'y a pas d'explication claire - t-il quelqu'un sur StackOverflow avez une solution?

Mise à JOUR: Personne d'autre ne s'engage à ce référentiel, donc ce n'était pas une transaction coincé (au moins à partir d'un autre utilisateur). À la fin, nous avons constaté que les autorisations n'ont pas été définis correctement. Non pas que vous savez à partir de ce message, mais qui a résolu le problème.

43voto

Captain Obvious Points 482

Vous pouvez effacer cette erreur w/un redémarrage:

  1. Identifier (ou de créer) un répertoire à la racine du référentiel SVN qui n'a pas été une partie de l'échec de la validation.

  2. Créer un nouveau fichier dans le répertoire à partir de l'étape 1.

  3. Commettre le nouveau fichier (et le répertoire créé à l'étape 1). Parce que le fichier est nouveau, il n'entre pas en conflit w/la précédente livraison et peut mettre à jour la révision # sur le serveur.

  4. Commettre l'original des fichiers/répertoires.

  5. Supprimer le nouveau fichier (et le répertoire créé à l'étape 1).

  6. Engager l'ensemble de l'arborescence.

**Les étapes 5 et 6 ne sont pas nécessaires, mais je tiens à garder mon dépôt bien rangé...

J'obtiens cette erreur beaucoup b/c SVN fréquemment gnons dans le milieu de commettre mon gros fichiers, ce qui provoque à son tour ultérieur s'engage à essayer d'écrire à la révision qui a été interrompu.

9voto

Jason Coco Points 52303

Le référentiel a bloqué la transaction. Vous pouvez utiliser la commande svnadmin de le réparer. Comme tous les autres svn utilitaires, svnadmin prend une commande suivie par des options (généralement juste le répertoire de dépôt). svnadmin doit être exécuté sur le serveur avec le référentiel.

Faire quelque chose comme ceci:

svnadmin lstxns /path/to/repository

pour obtenir une liste des opérations en cours (vous devriez voir votre fautif 551-1 là). Vous pouvez alors décider de la meilleure façon de récupérer de cette erreur... svnadmin a une commande rmtxns pour supprimer la délinquance de la transaction. Pour plus d'informations, question:

svnadmin help

ou voir le tigre site web: http://subversion.tigris.org/. Vous pouvez également trouver des informations plus détaillées sur des commandes spécifiques par la suite l'aide de la commande avec le nom de la commande qui vous intéresse. Par exemple:

svnadmin help lstxns

Évidemment, vous aurez besoin d'un accès au shell du serveur de dépôt et des autorisations d'écriture sur le référentiel à utiliser svnadmin. Si vous êtes référentiel format est Berkely DB vous devez suspendre votre svnserve démon (si vous l'utilisez) et tout web_dav/web_svn d'accès pour vous assurer de ne pas endommager la base de données alors que l'émission de svnadmin commandes.

5voto

Omar Kohl Points 499

Pour moi, le problème a été résolu (comme indiqué dans la mise à jour de la question) en modifiant les autorisations de mon dossier local (pas le référentiel). Dans Windows Vista, vous faites cela en cliquant avec le bouton droit sur le dossier et dans les propriétés / sécurité, vous modifiez les autorisations.

Le message d'erreur n'est pas très bon et il n'a pas été facile de trouver une réponse, alors j'espère que ma réponse aidera d'autres personnes à résoudre ce problème ennuyeux mais d'un autre côté simple à résoudre.

3voto

ultra Points 31

Eu le même problème, le redémarrage d'apache a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X