"Il n'est pas possible d'extraire un seul fichier. Le meilleur niveau d'extraction que vous pouvez faire est au niveau du répertoire."
Comment contourner ce problème lors de l'utilisation de Subversion?
Nous avons ce dossier dans Subversion où nous gardons toutes nos images. Je veux juste extraire un fichier (image) de cela. Ce dossier est vraiment grand et contient des tonnes d'autres choses dont je n'ai pas besoin maintenant.
svn
version-control
bluegene
la source
la source
svn up
à votre répertoire local sur votre ordinateur.Réponses:
La réponse simple est que vous avez
svn export
le fichier au lieu de le vérifier.Mais ce n'est peut-être pas ce que vous voulez. Vous voudrez peut-être travailler sur le fichier et le réarchiver, sans avoir à télécharger Go de fichiers inutiles dont vous n'avez pas besoin.
Si vous possédez Subversion 1.5+, effectuez une vérification clairsemée:
Pour une ancienne version de SVN, vous pourriez bénéficier des avantages suivants:
Une alternative (par exemple si le répertoire contient trop d'ordures dès la révision dans laquelle il a été créé) est de faire une copie URL-> URL du fichier que vous voulez dans un nouvel emplacement dans le référentiel (en fait, c'est une branche de travail du fichier). Consultez ce répertoire et faites vos modifications.
Je ne sais pas si vous pouvez ensuite fusionner entièrement votre copie modifiée dans le référentiel sans une copie de travail de la cible - je n'en ai jamais eu besoin. Si oui, faites-le.
Si ce n'est pas le cas, malheureusement, vous devrez peut-être trouver quelqu'un d'autre qui a vérifié tout le répertoire et les faire le faire. Ou peut-être au moment où vous aurez fait vos modifications, le reste aura fini de télécharger ...
la source
svn export
qu'à utiliser l'interface web, si je sais quel fichier je veux. Le questionneur utilise déjà SVN, donc je suppose que cela dépend de quel client et si ce client le rend facile à utilisersvn export
.svn ls
Cependant, je trouve l'interface Web meilleure pour la navigation que :-)Essayez
svn export
au lieu desvn checkout
. Cela fonctionne pour les fichiers uniques.La raison de cette limitation est la
checkout
création d'une copie de travail contenant des méta-informations sur le référentiel, la révision, les attributs, etc. Ces métadonnées sont stockées dans des sous-répertoires nommés '.svn'. Et les fichiers uniques n'ont pas de sous-répertoires.la source
svn
ne feront pas d'exportations de fichier unique.svn cat $url_to_file_in_repo > $local_file_name
.Utilisez
svn cat
ousvn export
.Pour cela, vous n'avez pas besoin de récupérer le répertoire de travail, mais vous ne pourrez pas valider les modifications que vous apportez. Si vous devez apporter des modifications et les valider, vous avez besoin d'un répertoire de travail, mais vous n'avez pas besoin de le récupérer complètement. Extraire la révision où le répertoire était encore / presque vide, puis utiliser «svn cat» pour extraire le fichier de HEAD.
la source
svn cat svn://.../my_file.txt
était exactement ce que je cherchais. Je travaille dans unsvn://
seul (pashttp://
) référentiel, et il semble que les dernières interfaces websvn ne fournissent pas de téléchargement de fichier brut (ou nous l'avons mal configuré ou je suis aveugle). Plus facile à faire de cette façon quecheckout
+up
juste pour télécharger un fichier.La source
la source
curl
ouwget
.Une solution équivalente TortoiseSVN de la réponse acceptée (j'avais écrit ceci dans un document interne pour mon entreprise car nous adoptons récemment SVN). J'ai pensé qu'il serait utile de partager ici aussi:
Extraire un seul fichier: Subversion ne prend pas en charge l'extraction d'un seul fichier, il prend uniquement en charge l'extraction des structures de répertoires. (Référence: http://subversion.tigris.org/faq.html#single-file-checkout ). En effet, avec chaque répertoire extrait en tant que copie de travail, les métadonnées concernant les modifications / révisions de fichiers sont stockées dans un dossier caché interne (.svn / _svn). Ceci n'est pas pris en charge actuellement (v1.6) pour les fichiers uniques.
Autre stratégie recommandée: vous ne devrez effectuer la partie du répertoire d'extraction qu'une seule fois, après quoi vous pourrez directement aller extraire vos fichiers individuels. Effectuez une extraction clairsemée du dossier parent et de la structure du répertoire. Une extraction clairsemée consiste essentiellement à extraire uniquement la structure des dossiers sans remplir les fichiers de contenu. Ainsi, vous extrayez uniquement les structures de répertoires et n'avez pas besoin d'extraire TOUS les fichiers comme cela était le problème. Référence: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html
Étape 1 : passez au navigateur du référentiel
Étape 2 : cliquez avec le bouton droit sur le dossier parent dans le référentiel contenant tous les fichiers sur lesquels vous souhaitez travailler et sélectionnez Extraire.
Étape 3 : Dans la nouvelle fenêtre contextuelle, assurez-vous que le répertoire de paiement pointe vers l'emplacement correct sur votre PC local. Il y aura également un menu déroulant intitulé «profondeur de paiement». Choisissez «Uniquement cet article» ou «Enfants immédiats, y compris les dossiers» en fonction de vos besoins. La deuxième option est recommandée car, si vous souhaitez travailler sur un dossier imbriqué, vous pouvez directement procéder la prochaine fois, sinon vous devrez à nouveau suivre toute cette procédure pour le dossier imbriqué.
Étape 4 : Le ou les dossiers parents devraient maintenant être disponibles dans votre dossier choisi localement et sont maintenant surveillés avec SVN (un dossier caché ".svn" ou "_svn" devrait maintenant être présent). Dans le référentiel maintenant, cliquez avec le bouton droit sur le fichier unique que vous souhaitez extraire seul et sélectionnez l'option «Mettre à jour l'élément à réviser». Le fichier unique peut maintenant être travaillé et archivé dans le référentiel.
J'espère que ça aide.
la source
Vous pouvez le faire en deux étapes:
Extraire un référentiel SVN vide avec des méta-informations uniquement:
Exécutez
svn up
pour mettre à jour le fichier spécifié:la source
Une mise à jour au cas où ce dont vous avez vraiment besoin peut être couvert en incluant le fichier dans une extraction d'un autre dossier.
Depuis SVN 1.6, vous pouvez créer des fichiers externes , une sorte de liens svn. Cela signifie que vous pouvez avoir un autre dossier versionné qui comprend un seul fichier. Il est également possible de valider les modifications apportées au fichier lors de l'extraction de ce dossier.
C'est très simple, extrayez le dossier dans lequel vous souhaitez inclure le fichier et ajoutez simplement une propriété au dossier
avec un contenu comme celui-ci:
Une fois que vous l'avez validé, le fichier apparaîtra lors des prochaines extractions du dossier. Fondamentalement, cela fonctionne, mais il existe certaines limitations, comme décrit dans la documentation liée ci-dessus.
la source
Allez dans le navigateur de dépôt, cliquez avec le bouton droit sur le fichier et utilisez «Enregistrer sous», j'utilise cependant TortoiseSVN.
la source
(Modifier le nom de fichier.log)
la source
La réponse de Steve Jessop n'a pas fonctionné pour moi. J'ai lu les fichiers d'aide pour SVN et si vous avez juste une image, vous ne voudrez probablement pas la réintégrer à moins que vous ne fassiez Photoshop, donc l' exportation est une meilleure commande que la caisse car elle n'est pas versionnée (mais c'est mineur).
Et l' ARG --depth ne doit pas être vide mais des fichiers pour obtenir les fichiers dans le répertoire immédiat. Vous obtiendrez donc tous les champs, pas seulement celui, mais vide ne renvoie rien du référentiel.
ou
Quant aux autres réponses, cat vous permet de lire le contenu qui n'est bon que pour le texte, pas les images de toutes choses.
la source
--depth empty
était que les autres fichiers ne devaient pas être récupérés, et vous pouvez alors obtenir un seul fichier avecsvn up <source/file>
. Avecsvn export
, il n'est pas nécessaire de le faire, spécifiez simplement le fichier.Je voudrais simplement le parcourir et exporter le fichier unique. Si vous avez un accès HTTP, utilisez simplement le navigateur Web pour trouver le fichier et le saisir.
Si vous devez le récupérer après l'avoir édité, cela pourrait être un peu plus fastidieux, mais je suis sûr qu'il pourrait y avoir une
svn import
fonction ...la source
Faites quelque chose comme ça:
Fondamentalement, l'idée est de créer le répertoire dans lequel vous souhaitez récupérer le fichier de SVN. Utilisez la
svn cat
commande et redirigez la sortie vers le même fichier nommé. Par défaut, le chat affichera les informations sur stdio.la source
Si vous voulez juste un fichier sans informations de révision, utilisez
la source
Avec Subversion 1.5, il devient possible d'extraire (tous) les fichiers d'un répertoire sans extraire aucun sous-répertoire (les différents drapeaux --depth). Pas tout à fait ce que vous demandiez, mais une forme de «moins que tout».
la source
En utilisant la technique d'extraction clairsemée, vous POUVEZ extraire un fichier particulier qui est déjà extrait ou qui existe ... avec une astuce simple:
Après avoir vérifié le niveau supérieur de votre référentiel en utilisant l'option «cet élément uniquement», dans l'explorateur Windows, vous DEVEZ d'abord faire un clic droit sur le fichier que vous devez mettre à jour; choisissez Repo Browser dans le menu contextuel; recherchez à nouveau ce fichier dans le navigateur du référentiel et cliquez avec le bouton droit. Vous devriez maintenant voir «mettre à jour l'élément à réviser» dans le menu contextuel.
Je ne sais pas s'il s'agit d'une fonctionnalité non documentée ou simplement d'un bug. Il m'a fallu de longues heures après le travail pour enfin trouver cette astuce. J'utilise TortoiseSVN 1.6.2.
la source
Je voulais extraire un seul fichier dans un répertoire, qui ne faisait pas partie d'une copie de travail.
Récupérons le fichier à l'URL suivante: http: //subversion.repository.server/repository/module/directory/myfile
J'ai donc vérifié le répertoire donné contenant le fichier cible que je voulais obtenir dans un répertoire factice (dites etcb pour l'URL se terminant par
/etc
).Ensuite, j'ai vidé le fichier .svn / entrées de tous les fichiers du répertoire cible dont je n'avais pas besoin, pour ne laisser que le fichier que je voulais. Dans ce fichier .svn / entries , vous avez un enregistrement pour chaque fichier avec ses attributs, alors ne laissez que l'enregistrement concernant le fichier que vous souhaitez obtenir et enregistrer.
Il vous suffit maintenant de copier ensuite '' .svn '' dans le répertoire qui sera une nouvelle "copie de travail". Il vous suffit ensuite de:
Maintenant, le répertoire répertoire est sous contrôle de version. N'oubliez pas de supprimer le répertoire directoryb qui n'était qu'une '' copie de travail temporaire ''.
la source
Puisqu'aucune des autres réponses n'a fonctionné pour moi, je l'ai fait en utilisant ce hack:
Cela va créer un nouveau dossier local qui ne contient que les fichiers du chemin distant. Ensuite, vous pouvez faire un lien symbolique vers les fichiers que vous souhaitez avoir ici.
la source
svn co
d'un fichier pour éviter un répertoire entier plein de fichiers image. De plus, l'ajout d'un lien symbolique ne peut qu'ajouter à la complexité, le déplacement à partir d'un répertoire temporaire peut fonctionner, mais vous devez toujours consulter l'intégralité du répertoire d'images pour une seule image. @ steve-jessop a eu la bonne idéeCe problème est couvert par:
http://subversion.tigris.org/issues/show_bug.cgi?id=823
Un script est joint qui vous permet d'extraire un seul fichier de svn, d'apporter des modifications et de valider les modifications dans le référentiel, mais vous ne pouvez pas exécuter "svn up" pour extraire le reste du répertoire. Il a été testé avec svn-1.3, 1.4 et 1.6.
la source
Si vous souhaitez simplement exporter le fichier et que vous n'aurez pas besoin de le mettre à jour plus tard, vous pouvez le faire sans avoir à utiliser les commandes SVN.
À l'aide du navigateur de référentiel TortoiseSVN , sélectionnez le fichier, cliquez avec le bouton droit, puis sélectionnez " Copier l'URL dans le presse-papiers ". Collez cette URL dans votre navigateur, et après la connexion, vous serez invité à télécharger le fichier.
De cette façon, vous pouvez également sélectionner la révision souhaitée et télécharger une ancienne version du fichier.
Notez que cela est valable si votre serveur SVN possède une interface Web.
la source