2008-09-19 8 views
12

Pas pour la première fois, j'ai accidentellement fait "svn switch" de quelque part en dessous de la racine de mon projet. Cela ne change que ce sous-répertoire, mais comment l'annuler?Comment annuler "svn switch" dans un sous-répertoire?

Si j'essayez de passer le sous-répertoire de retour à la branche d'origine je reçois:

"svn: Directory 'subdir\_svn' containing working copy admin area is missing" 

Mise à jour: J'ai des changements dans la subdir, donc je ne veux pas faire une suppression.

À court terme, je l'ai corrigé en réappliquant les changements, mais je cherchais un moyen pour que Subversion revienne à l'endroit d'où je venais ... ou est-ce une fonctionnalité manquante?

Répondre

6

Quick hack: supprime le répertoire, monte d'un niveau et lance svn update.

+0

J'ai des changements dans mon sandbox commuté, donc je ne peux pas supprimer le sous-répertoire ... – fiddlesticks

+0

Vous pouvez créer un patch, faire rm/svn up et réappliquer le patch. –

+4

Je déteste svn. Tellement de. Il me faut une journée de commutation, de mise à jour, de massage, de suppression, puis de commutation de quelques fois pour obtenir un changement net. –

-2
svn revert <dir> 

Ou, oui, supprimez-le et récupérez une autre copie.

+1

'svn revert

' ne retourne pas le commutateur.Il retourne les modifications locales (le cas échéant), mais conserve le contenu du commutateur – Eloff

5

Sans savoir exactement comment vous avez fait le changement et comment votre mise en page de répertoire et de référentiel est, il est difficile de dire ce qui s'est mal passé dans votre cas.

Il n'y a aucun moyen de "rétablir" un commutateur. En général, svn switch peut être annulé en revenant à l'emplacement d'origine, c'est-à-dire lorsque l'emplacement d'origine se trouve à svn: // url/to/orig/dir, alors cela devrait fonctionner:

Basculer un sous-répertoire vers un une partie différente du dépôt

svn switch svn://path/to/switched/dir/ subdir 

... et de le remettre à nouveau

svn switch svn://url/to/orig/dir subdir 

Dans votre cas, il semble que si vous avez essayé de changer un répertoire qui ne fait pas partie de votre copie de travail.

+0

C'est essentiellement ce que j'ai essayé, l'erreur que j'ai eu est dans la question ... – fiddlesticks

1

J'ai corrigé ceci en vérifiant les changements dans le répertoire commuté, en supprimant les fichiers .svn et les fichiers égarés, puis en utilisant svn checkout <rootUrl> suivi de svn update -r HEAD --force.

Je ne pense pas qu'il existe une façon propre de le faire.

0

si les dernières modifications ne sont que l'interrupteur puis,

Faites un clic droit sur le répertoire parent commun, tortue svn-> Aller à svn journaux. Cliquez avec le bouton droit sur la version avant le commutateur SVN et sélectionnez Rétablir cette révision. .

0

Il semble que cela fonctionne pour exécuter un autre interrupteur au le bon chemin vers le répertoire que vous êtes réellement en d'autres termes, si vous exécutiez:

svn switch file:///srv/svn/someproject/branch/27 

pendant que vous étiez dans someproject/subdir, puis exécuter

svn switch file:///srv/svn/someproject/branch/26/subdir 

puis d'exécuter votre commutateur d'origine à partir de l'emplacement approprié.

Cela semble rétablir l'ordre.