web-dev-qa-db-fra.com

Subversion - Quelles sont les différences entre les commandes SVN checkout et SVN update?

Je comprends que la commande "SVN checkout" procédera à la récupération initiale des fichiers du référentiel Subversion et les apportera localement dans votre répertoire/copie de travail et que la commande "SVN update" obtiendra les modifications des fichiers à partir de le référentiel si des modifications ont été apportées par d'autres.

Il me semble cependant qu'une "mise à jour" n'est qu'un cas particulier d'une "extraction", c'est-à-dire qu'une extraction se produit, elle obtient tous les fichiers car aucun n'existe encore localement et donc TOUS les fichiers ont "changé", et que dans les coulisses ces commandes font en grande partie la même chose. Je suppose que les commandes existent séparément juste comme un moyen de simplification?

Ou, y a-t-il d'autres différences entre les commandes, par exemple, "SVN update" obtient-il que les fichiers obtiennent de nouveaux fichiers (des fichiers qui existent dans le référentiel que vous n'avez pas dans votre copie de travail) ou simplement des mises à jour des fichiers existants?

44
Emilio

À mon avis, la grande différence est que checkout crée une copie de travail, tandis que update apporte des modifications à un existant copie de travail.

43
karoberts

svn checkout copie tous les fichiers versionnés du répertoire donné dans le référentiel à la révision donnée (HEAD par défaut), et les copie sur votre machine locale. Il génère également tous les répertoires .svn cachés et les métadonnées qu'ils contiennent, qui font de ces fichiers une copie de travail.

svn export copie tous les fichiers versionnés du répertoire donné dans le référentiel à la révision donnée (HEAD par défaut), et les copie sur votre machine locale, mais produit une hiérarchie de répertoires standard. (Il ne pas produit une copie de travail qui peut être mise à jour ou archivée).

svn update applique les modifications à une copie de travail existante. Si, ce faisant, un conflit est découvert, l'utilisateur est alerté et doit le résoudre avant de pouvoir valider les modifications. Lors de l'utilisation de svn commit il est nécessaire que la copie de travail à valider soit à jour (c'est-à-dire la même révision que HEAD).

13
Edd

La mise à jour mettra à jour votre version extraite vers la dernière version (ou une autre révision spécifiée) dans le référentiel. Si vous avez apporté des modifications à votre copie de travail, elles seront toujours là après la mise à jour. Si des fichiers ont été ajoutés ou supprimés dans le référentiel, cela sera reflété dans votre copie de travail. S'il y a des changements à la fois dans votre copie locale et dans le référentiel, SVN essaiera de fusionner toutes les modifications pour vous, si cela ne fonctionne pas, il signalera un conflit que vous résolvez manuellement.

10
svinto

Subversion utilise des répertoires cachés de métadonnées pour activer les fonctionnalités qu'il fournit. Ces répertoires .svn sont ce qui fait d'un répertoire une copie de travail de Subversion - sans ceux-ci, ce n'est qu'un répertoire et Subversion ne peut pas faire grand chose avec.

UPDATE est une opération qui est effectuée sur une copie de travail Subversion; pas de répertoires .svn, pas de mise à jour. CHECKOUT est l'opération qui crée une copie de travail.

3
Eric Kolb

Lors de l'utilisation du SVN, la différence significative entre l'extraction et la mise à jour est la suivante: vous ne pouvez utiliser la commande checkout qu'une seule fois pour établir la relation entre un répertoire local et le référentiel (sous contrôle de version) ) et pour copier tous les fichiers du référentiel racine dans un répertoire de travail local. Après cela, l'utilisation de checkout pour mettre à jour les copies dans le répertoire local générera des erreurs comme suit:

svn: E175002: Impossible de se connecter à un référentiel à l'URL 'https: // ********'.

svn: E175002: la demande OPTIONS a renvoyé un code XML non valide dans la réponse: ****. "

La seule façon de mettre à jour les versions actuelles dans le répertoire local est d'utiliser la commande svn update.

2
Z. Zhang

svn update n'apporte que la différence de fichiers de la version utilisateur à la dernière version disponible. Si aucune différence aucune action.

Mais la caisse crée un nouveau dossier et apporte tous les fichiers de cette branche. Le paiement est un bon moyen de travailler si nous changeons constamment de branche sur laquelle nous travaillons. La mise à jour, c'est quand nous avons un tronc et que nous devons faire effectuer les mises à jour par d'autres sur ce tronc.

2
George