Échec de svn commit: répertoire dépassé
j'ai un problème qui semble très simple, mais il est difficile à résoudre. J'obtiens l'erreur mentionnée après la suppression d'un répertoire. Je n'ai pas trouvé une solution encore à résoudre le conflit. C'est de cette façon qu'il se produit:
svn add dir svn add dir/file1 svn commit svn add dir/file2 svn commit svn delete dir svn commit --> commit failed --> Directory '/dir' is out of date
LA solution évidente 'svn update' ne fonctionne pas. Après svn update, un prochain commit échoue avec:
Commit failed Directory '/dir' remains in conflict.
En attendant j'ai trouvé une solution mais c'est un peu lourd:
svn resolve --accept working dir svn commit --> still fails svn update svn commit --> still fails svn resolve --accept working dir svn commit --> NO PROBLEM!
deux questions: - quelqu'un peut-il expliquer ce comportement parce que Je suis très curieux à ce sujet - ce problème se produit dans un script perl dans une situation bien plus complexe. Est-ce que quelqu'un peut me donner une solution simple Avec is 'faisable' dans le script perl?
8 réponses
il suffit de faire un svn update
et alors votre engagement devrait fonctionner.
si je comprends bien subversion, le problème est le suivant:
Subversion suit la révision en cours pour chaque fichier et répertoire séparément. Chaque fois qu'une modification sur un fichier est engagée, la révision du répertoire parent change dans le repo, mais votre copie de travail a toujours le répertoire dans son ancienne révision.
ainsi, dans votre scénario, après avoir ajouté le fichier, le répertoire parent dans le fichier repo a une révision plus élevée que votre copie de travail. Lorsque vous essayez pour supprimer le répertoire que vous travaillez sur une version périmée.
À résoudre:
svn update
après l'ajout du fichier, mais avant la suppression du dir.
en général si vous ne voulez pas tirer dans les modifications de quelqu'un d'autre, vous pouvez restreindre la mise à jour au répertoire lui-même: svn up --depth empty dir
.
Avez-vous essayé svn up dir
avant de faire le dernier commit?
Pour contourner ce problème, j'ai utilisé " svn revert ', puis faire les commettre de nouveau, ce qui devrait se débarrasser du contenu de la faire "svn delete" et de s'engager de nouveau. J'ai eu ce problème en essayant de renommer un répertoire, mais j'espère que cela va fonctionner.
problème similaire que j'ai rencontré avec l'espace de travail frais:
$ svn delete dir/file
D dir/file
$ svn ci -m "comment1"
Deleting dir/file
$ svn delete dir/
D dir
$ svn ci -m "comment2"
Deleting dir
svn: Commit failed (details follow):
svn: Item 'dir' is out of date
pour résoudre le problème, j'ai mis à jour les sources et utilisé la commande' delete URL':
$ svn delete --force https://server/path.../dir
$ svn update
cela se produit lorsque vous allez propager un fichier et que le même fichier est mis à jour dans le SVN. Alors ça va entrer en conflit.Donc, ce que vous devez faire, c'est simplement prendre une copie de vos modifications et restaurer le fichier. puis encore coller votre code. Alors vous pouvez vous engager sans problème.