J'ai un problème qui semble très simple mais qui est difficile à résoudre. J'obtiens l'erreur mentionnée après la suppression d'un répertoire. Je n'ai pas encore trouvé de solution pour résoudre le conflit. Voici comment cela se passe:
svn add dir svn add dir/fichier1 svn commit svn add dir/fichier2 svn commit svn delete dir svn commit --> commit failed --> Le répertoire '/ dir' est obsolète
La solution évidente 'svn update' ne fonctionne pas. Après svn update, une prochaine validation échoue avec:
La validation a échoué. Le répertoire '/ dir' reste en conflit .
En attendant, j'ai trouvé une solution mais elle est un peu lourde:
svn resolve - accepte le répertoire de travail svn commit -> échoue toujours svn met à jour svn commit -> échoue toujours svn resol - accepte le répertoire de travail svn commit -> AUCUN PROBLÈME!
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 beaucoup plus complexe. Quelqu'un peut-il me donner une solution simple avec «faisable» dans le script Perl?
Créez juste un svn update
et votre commit devrait alors fonctionner.
Si je comprends bien Subversion, le problème est le suivant:
Subversion suit séparément la révision en cours pour chaque fichier et le répertoire . Chaque fois qu’une modification d’un fichier est validée, la révision du répertoire parent change dans le référentiel, mais votre copie de travail conserve le répertoire révision.
Ainsi, dans votre scénario, après l'ajout du fichier, le répertoire parent du référentiel a une révision supérieure à celle de votre copie de travail . Lorsque vous essayez de supprimer le répertoire, vous travaillez sur une version obsolète.
Résoudre:
Faites un svn update
après avoir ajouté le fichier, mais avant de supprimer le répertoire.
En général, si vous ne souhaitez pas importer les modifications de quelqu'un d'autre, vous pouvez limiter la mise à jour au répertoire lui-même: svn up --depth empty dir
.
Effectuez la mise à jour, le nettoyage, puis validez.
Vous avez juste besoin de mettre à jour et ensuite commettre
Avez-vous essayé svn up dir
avant de faire le commit final?
Cela se produit lorsque vous allez valider un fichier et que le même fichier est également mis à jour dans le SVN. Il y aura alors conflit. Vous devez donc simplement copier les modifications et restaurer le fichier. puis encore coller votre code. Ensuite, vous pouvez vous engager sans aucun problème.
Problème similaire que j'ai rencontré avec un nouvel espace de travail:
$ 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
Pour contourner ce problème, j'ai utilisé 'svn revert', puis refait le commit, ce qui devrait permettre de supprimer le contenu du 'svn delete' puis de le commettre. J'ai eu ce problème en essayant de renommer un répertoire mais j'espère que cela fonctionnera.