Comment mettre à jour un fichier SVN sans effectuer une extraction?
Je suis en train d'écrire quelques scripts de mise à jour de la boîte Linux SVN repo avec des versions plus récentes des fichiers xml. Les pensions de titres sont énormes, et il n'y a pas de caisse de la version sur la même case. L'idée est de mettre à jour le xml sans une copie de travail. Est-ce possible ou dois-je passer à un dossier temporaire, copier/remplacer, vérifier et supprimer le dossier temporaire?
Edit: Merci beaucoup pour vos réponses.
Je sais que vous pouvez le faire avec l'API et le code, vous ne savez pas si toute commande SVN...
Merci beaucoup.
source d'informationauteur ccppjava
Vous devez vous connecter pour publier un commentaire.
Est la question que vous ne voulez pas vous embêter avec la caisse, ou parce que vous avez peur que si vous effectuez une commande, vous devrez commander un lot de fichiers?
Que vous avez à faire un checkout de la Subversion. Vous ne pouvez pas simplement soumettre des modifications sans une copie de travail. (Pas tout à fait vrai, vous pouvez le faire
svn delete
etsvn mkdir
sans la caisse.)Toutefois, vous pouvez limiter la quantité de fichiers qui ne vérifier avec le
--depth
commutateur. Par exemple, vous pouvez effectuer les opérations suivantes:Ce sera la caisse de l'annuaire, mais sans tous les fichiers. Vous pouvez ensuite faire un
svn update
de simplement les fichiers que vous voulez modifier, puis les valider ces changements:Ce qui vous permettra de modifier le fichier fileToChange.xml sans avoir à la caisse de l'ensemble du répertoire.
Il y a un moyen de "mettre à jour" d'un fichier sans un répertoire de travail, mais cela va dépendre de ce que vous voulez faire. J'ai de nombreux cas où je fais un peu automatisé archivages comme ça, j'ai trouvé cette solution assez bon:
Vous pouvez utiliser
svn import
mettre à jour les fichiersQuelque chose comme:
Hic, c'est que vous ne pouvez pas importer un fichier déjà existant, de sorte que vous aurez à émettre un supprimer, puis les importer:
Vous perdez de l'histoire, mais est très simple et léger pour une mise à jour du fichier et est complètement dépendant de ce que vous faites. Si vous n'êtes pas à l'aise avec la suppression et la perte de l'histoire, vous devez utiliser les méthodes proposées par d'autres réponses.
Vous ne pouvez pas engager un changement sans une copie de travail. La raison en est que svn ne pas envoyer le fichier sur le serveur, il envoie le delta (c'est à dire les différences). Il est conçu pour réduire le trafic réseau, mais évidemment, il faut connaître la version précédente pour le calcul de la diff.
Vous pouvez commander une copie de travail en utilisant les rares options, de sorte que vous pouvez créer une salle de bain avec WC juste que 1 fichier, il n'est pas nécessaire pour l'extraction de l'ensemble du référentiel.
Alternatviely, vous pouvez exposer les pensions de titres à l'aide de webdav, il vous suffit de copier le nouveau fichier sur le vieux l'un et l'auto-commit option calcule la différence et de l'archivage du fichier.
Vous pouvez stocker une copie de travail dans votre répertoire temporaire, puis il vous suffit de copier les fichiers et de s'engager. Il n'y a pas besoin de supprimer les WC, assurez-vous juste qu'une svn utilisateur peut accéder et vous pouvez laisser les WC il y pour la prochaine fois vous avez besoin pour ce faire.
Si vous avez une Subversion 1.8 ou plus tard client, vous pouvez ajouter ou mettre à jour un ou de plusieurs fichiers à la fois sans vérifier le référentiel à l'aide de la
svnmucc put
de commande. Voir http://svnbook.red-bean.com/en/1.8/svn.ref.svnmucc.re.html.Vous ne pouvez pas mettre à jour un fichier sans vérifier un dossier local. Il y a un raccourci cependant: afin de ne pas à la caisse de la ensemble référentiel, vous pouvez la caisse seulement le sous-dossier où le fichier que vous voulez mettre à jour.
Si votre réputation est à
https://your.domain/myrep
vous pourriez vérifierhttps://your.domain/myrep/myfolder
De cette façon, à moins que vous avez dans le fichier XML dans le dossier racine, vous permettrait de réduire la quantité de fichiers. Si vous avez le contrôle sur le référentiel, vous pouvez même créer un sous-dossier dans le seul but de stocker ce fichier.