web-dev-qa-db-fra.com

Différence entre l'extraction et l'exportation dans SVN

Quelle est la différence exacte entre le paiement SVN et l'exportation SVN?

D'après ce que je sais, l'exportation n'inclut pas le répertoire .svn qui inclut les métadonnées, et le paiement inclus ce répertoire .svn. Pourtant, mon collègue a eu ce problème récemment car il y a un comportement différent pour les choses compilées à partir de sources qui sont extraites et exportées à partir du référentiel SVN. Les deux ont été compilés correctement, mais celui compilé à partir de svn export fonctionne, mais celui qui est extrait ne fonctionne pas du tout.

PS: Le truc en cours de compilation est le noyau Linux 2.4 qui est utilisé dans un périphérique intégré. L'image se compile et se charge correctement, mais celle extraite ne fonctionne pas. Cela provoque une panique du noyau pendant l'insmod. Pourquoi cela pourrait-il arriver du tout?

PPS: nous avons essayé l'outil de somme de contrôle et de diff pour vérifier la différence entre les deux répertoires qui sont exportés et extraits de SVN. Les deux sont identiques, à l'exception du répertoire .svn.

72
andycjw

svn export extrait simplement tous les fichiers d'une révision et n'autorise pas le contrôle des révisions sur celle-ci. Il ne jette pas non plus chaque répertoire avec des répertoires .svn.

svn checkout vous permet d'utiliser le contrôle de version dans le répertoire créé, par exemple vos commandes standard telles que svn update et svn commit.

101
gak

Comme vous l'avez indiqué, une extraction inclut les répertoires .svn. Il s'agit donc d'une copie de travail et aura les informations appropriées pour effectuer des retours (si vous en avez l'autorisation). Si vous effectuez une exportation, vous prenez simplement une copie de l'état actuel du référentiel et vous n'aurez aucun moyen de valider les modifications.

11
notbenh

Réexécutez-vous votre commande ou exportez-vous dans un répertoire existant?

Parce que si vous l'êtes, le paiement mettra à jour la copie de travail, y compris la suppression des fichiers.

Mais l'exportation ne fera que transférer tous les fichiers du référentiel vers la destination - si la destination est le même répertoire, cela signifie que tous les fichiers supprimés dans le référentiel ne seront PAS supprimés.

Donc, vous exportez la copie peut ne fonctionner que parce qu'elle repose sur un fichier qui a été supprimé dans le référentiel?

8
exception

Y a-t-il une chance que le processus de construction examine les sous-répertoires et inclue quelque chose qu'il ne devrait pas? BTW, vous pouvez effectuer un paiement légal, puis supprimer le .svn et tout ce qu'il contient. Cela devrait vous donner la même chose qu'une exportation. Essayez de compiler cela, avant et après la suppression des métadonnées, pour ainsi dire.

6
gbarry

(Pour compléter la réponse de Gerald ...) Une autre différence subtile est que, bien que la commande:

svn checkout ...repos_location/my_dir .

place les fichiers dans my_dir dans le répertoire courant (avec le .svn dossier)

dans certaines versions du svn, la commande:

svn export ...repos_location/my_dir .

va créer un dossier appelé my_dir dans le répertoire courant, puis placez-y les fichiers exportés.

2
Robino

Utilisez l'exportation si vous souhaitez télécharger (ou donner à quelqu'un) un projet. Si vous travaillez avec un projet, utilisez la caisse.

1
Pawka

Réflexions supplémentaires. Vous avez dit que l'insmod se bloque. Insmod charge les modules. Les modules sont construits dans une autre opération de compilation à partir de la construction du noyau. Le noyau et les modules doivent être construits à partir des mêmes en-têtes et ainsi de suite. Tous les modules sont-ils construits pendant la construction du noyau, ou sont-ils "existants"?

L'autre idée, et que je connais peu, est svn externals, qui (si elle est utilisée) peut affecter ce qui est extrait de votre projet. Regardez et voyez si cela est différent lors de l'exportation.

1
gbarry

Différence très simple, si vous voulez juste voir la structure de votre projet, alors allez à l'export.

Et si vous souhaitez travailler sur vos fichiers, vous devez passer à la caisse car il inclura le dossier .svn qui contient les métadonnées qui font la copie de travail, sinon vous obtenez l'erreur lors de l'exportation.

Si tu fais svn export puis éditez quelques fichiers puis validez, vous obtiendrez alors une erreur:

../../xxx n'est pas votre copie de travail.

0
SteveScm