76 votes

Différence entre la caisse et l'exportation en SVN

Quelle est la différence exacte entre SVN checkout et SVN export?

De ce que je sais, l'exportation n'inclut pas la .svn répertoire qui contiennent des métadonnées, et de départ inclus .svn répertoire. Pourtant, mon collègue a eu ce problème récemment qu'il y a un comportement différent pour les trucs compilées à partir de sources qui est à la caisse et exportés à partir de repo SVN. Deux d'entre eux compilé correctement, mais celui compilé à partir de svn à l'exportation des œuvres, mais de celui qui est vérifié ne fonctionne pas du tout.

p.s.: les trucs compilé est le noyau linux 2.4, qui est utilisé dans un dispositif intégré, l'image compile et se charger correctement, mais l'extrait de l'un ne fonctionne pas, il provoque la panique du noyau au cours de insmod. Une idée de pourquoi cela pourrait-il se produire?

p.p.s.: nous avons essayé de somme de contrôle et diff outil pour vérifier la différence entre les deux répertoire qui est exporté et vérifié à partir de SVN, deux d'entre eux sont les mêmes, sauf pour .svn répertoire. Elle est conduite à la fois de nous fou pour quelques jours!!

105voto

Gerald Kaszuba Points 9769

svn export extrait simplement tous les fichiers d'une révision et ne permet pas le contrôle de la révision sur celle-ci. De plus, chaque répertoire ne contient pas de 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 .

11voto

notbenh Points 159

Comme vous l'avez dit, une commande inclut les répertoires .svn; il s'agit donc d'une copie de travail. Elle contient les informations appropriées pour effectuer des commits (si vous en avez l'autorisation). Si vous effectuez une exportation, vous ne faites que copier l’état actuel du référentiel et vous n’avez aucun moyen de restituer les modifications.

Y a-t-il une raison d'avoir une copie de travail (c'est-à-dire .svn) si vous êtes en train de construire?

9voto

exception Points 315

Êtes-vous en train de réexécuter votre commande ou d'exporter dans un répertoire existant?

Parce que si vous le faites, la commande mettra à jour la copie de travail, y compris la suppression de tous les fichiers.

Mais l'exportation transférera simplement tous les fichiers du répertoire à 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.

La copie exportée ne peut donc fonctionner que parce qu’elle s’appuie sur un fichier supprimé du référentiel?

6voto

gbarry Points 3813

Y at-il une chance que le processus de construction examine les sous-répertoires et inclue quelque chose qu’il ne devrait pas? En passant, vous pouvez faire une vérification légale, 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.

2voto

Robino Points 617

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

svn checkout ...repos_location/my_dir .

place les fichiers de my_dir dans le répertoire en cours (avec le dossier .svn )

dans certaines versions du svn, la commande:

svn export ...repos_location/my_dir .

créera un dossier appelé my_dir dans le répertoire actuel, puis y placera les fichiers exportés.

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