La caisse d'un fichier à partir de la Subversion
"Il n'est pas possible d'extraire un seul fichier. Niveau le plus fin des extractions que vous pouvez faire est au niveau du répertoire."
Comment puis-je obtenir autour de cette question lors de l'utilisation de Subversion?
Nous avons ce dossier dans Subversion, où nous gardons toutes nos images. Je veux juste vérifier un fichier (image) à partir de ça. Ce dossier est vraiment très grand et a des tonnes d'autres trucs dont je n'ai pas besoin maintenant.
- Vous pouvez le faire dans l'autre sens. Se connecter au serveur de production et
svn up
à votre répertoire local sur votre ordinateur.
Vous devez vous connecter pour publier un commentaire.
La réponse simple est que vous
svn export
le fichier au lieu de le vérifier.Mais qui pourrait ne pas être ce que vous voulez. Vous pourriez vouloir travailler sur le fichier et vérifier à nouveau, sans avoir à télécharger GO de courrier indésirable vous n'avez pas besoin.
Si vous avez Subversion 1.5+, puis faire un sparse checkout:
Pour une ancienne version de SVN, vous pouvez bénéficier des avantages suivants:
Une alternative (par exemple, si le répertoire a trop de junk droit de la révision dans laquelle il a été créé), est de faire une URL->URL copie du fichier que vous voulez dans une nouvelle place dans le référentiel (dans les faits, ce travail est une branche du fichier). Découvrez ce répertoire et de faire vos modifications.
Je ne suis pas sûr de savoir si vous pouvez fusionner vos modifications de copier entièrement dans le référentiel sans une copie de travail de la cible - je n'ai jamais eu besoin. Si oui, alors le faire.
Si ne puis, malheureusement, vous devez trouver quelqu'un d'autre qui n'ont tout le répertoire d'archivage et qu'il le fasse. Ou peut-être au moment où vous avez effectué vos modifications, le reste de la il aura fini de se télécharger...
svn export
que c'est pour utiliser l'interface web, si je sais ce fichier que je veux. L'interlocuteur utilise déjà SVN, donc je suppose que cela dépend de ce client et si le client le rend facile à utilisersvn export
. Je trouve l'interface web mieux pour la navigation quesvn ls
, si 🙂Essayer
svn export
au lieu desvn checkout
. Qui fonctionne pour les fichiers unique.La raison de cette limitation est que
checkout
crée une copie de travail, qui contient des méta-informations sur le référentiel, la révision, les attributs, etc. Les métadonnées sont stockées dans des sous-répertoires nommés".svn'. Et seul les fichiers n'ont pas les sous-répertoires.svn
va pas le faire seul fichier exportations.svn cat $url_to_file_in_repo > $local_file_name
.Utilisation
svn cat
ousvn export
.Pour cela, vous n'avez pas besoin de récupérer le répertoire de travail, mais vous ne serez pas en mesure de valider toutes les modifications que vous apportez. Si vous avez besoin de faire des changements et de les valider, vous avez besoin d'un répertoire de travail, mais vous n'avez pas à récupérer complètement. La caisse de la révision où le répertoire est toujours/presque vide, et ensuite utiliser svn cat' pour extraire le fichier de la TÊTE.
svn cat svn://.../my_file.txt
était exactement ce que je cherchais. Je travaille dans unsvn://
uniquement (pas dehttp://
) référentiel, et il semble le plus récent websvn interfaces n'est pas un raw téléchargement de fichier (ou nous avons mal configuré, ou je suis aveugle). Plus facile de le faire de cette façon quecheckout
+up
juste pour télécharger un fichier.Source
curl
ouwget
.Un TortoiseSVN solution équivalente, de la accepté de répondre (je l'avais écrit dans un document interne de mon entreprise que nous sommes nouvellement adoption SVN) de la façon suivante. J'ai pensé qu'il serait utile de partager ici:
La vérification d'un seul et même fichier:
La Subversion ne prend pas en charge la caisse d'un seul fichier, il ne supporte que la caisse des structures de répertoire. (Référence: http://subversion.tigris.org/faq.html#single-file-checkout). C'est parce qu'à chaque répertoire qui est vérifié qu'une copie de travail, les métadonnées concernant les modifications/révisions de fichier est stocké en interne dossier caché (.svn/_svn). Ce n'est pas pris en charge actuellement (v1.6) pour les fichiers unique.
Suppléant stratégie recommandée: Vous aurez à faire passer à la caisse répertoire partie qu'une seule fois, après que vous pouvez aller directement à la caisse et de vos fichiers uniques. Faire un sparse checkout du dossier parent et la structure de répertoire. Un sparse checkout est essentiellement de vérifier que la structure de dossier sans remplir les fichiers de contenu. Si vous commandez uniquement les structures de répertoire et n'a pas besoin de les extraire TOUS les fichiers que est la préoccupation.
Référence: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html
Étape 1: Procéder à l'explorateur de dépôt
Étape 2: clic Droit sur le dossier parent dans le référentiel contenant tous les fichiers que vous souhaitez travailler sur et Sélectionner la Caisse.
Étape 3: Dans la nouvelle fenêtre qui s'ouvre, s'assurer que la caisse des points de répertoire à l'emplacement approprié sur votre PC local. Il y aura également un menu déroulant marqué “profondeur d'extraction”. Sélectionnez “Seul cet élément” ou “les enfants Immédiats, y compris les dossiers” en fonction de vos besoins. La deuxième option est recommandée, si vous souhaitez travailler sur des dossiers imbriqués, vous pouvez passer directement à la prochaine fois, sinon vous devrez suivre l'ensemble de cette procédure pour les dossiers imbriqués.
Étape 4: Le dossier parent(s) doit maintenant être disponible dans votre choix local dossier est maintenant contrôlé par SVN (un dossier caché “.svn” ou “_svn” devrait être présent). Dans le référentiel maintenant, cliquez-droit sur le seul fichier que vous souhaitez avoir vérifié seul et sélectionnez l'option “mettre à Jour à la révision” option. Le fichier peut maintenant être travaillé et vérifié de nouveau dans le référentiel.
J'espère que cette aide.
Vous pouvez le faire en deux étapes:
Caisse vide référentiel SVN avec des méta-données uniquement:
Exécuter
svn up
de mettre à jour le fichier spécifié:Une mise à jour dans le cas où ce que vous avez vraiment besoin peut être couvert par avoir le fichier inclus dans une caisse d'un autre dossier.
Depuis SVN 1.6 vous pouvez faire fichier d'alias, une sorte de svn liens. Cela signifie que vous pouvez avoir un autre répertoire versionné qui comprend un seul fichier. Commettre des modifications au fichier dans une caisse de ce dossier est également possible.
C'est très simple, extraire le dossier que vous souhaitez inclure le fichier, et il suffit d'ajouter une propriété à le dossier
avec le contenu comme ceci:
Après la validation de cela, le fichier va apparaître dans l'avenir extractions du dossier. Fondamentalement, il fonctionne, mais il y a quelques limitations, comme décrit dans la documentation ci-dessus.
Aller à l'explorateur cliquez-droit sur le fichier et choisissez "Enregistrer sous", je suis en utilisant TortoiseSVN bien.
(Modifier le nom de fichier.journal)
Steve Jessop est de répondre à ne fonctionne pas pour moi. J'ai lu les fichiers d'aide pour de SVN et si vous avez une image que vous ne voulez probablement pas à le vérifier à nouveau sauf si vous êtes en train de faire Photoshop, donc exportation est une meilleure commande de la caisse en tant qu'il est non versionnés (mais c'est mineur).
Et la --profondeur ARG ne doit pas être vide mais fichiers pour obtenir les fichiers dans l'immédiat répertoire. Ainsi, vous obtiendrez tous les domaines, pas seulement la personne, mais vide retourne rien à partir du référentiel.
ou
Comme pour les autres réponses, chat vous permet de lire le contenu de ce qui est bon seulement pour le texte, pas les images de toutes les choses.
--depth empty
les autres fichiers ne doivent pas être vérifié, et vous pouvez obtenir un seul fichier avecsvn up <source/file>
. Avecsvn export
, il n'y a pas besoin de faire cela, il suffit de spécifier le fichier.Je venais de le parcourir et d'exporter le fichier unique. Si vous avez accès HTTP, il suffit d'utiliser le navigateur web pour trouver le fichier et de le saisir.
Si vous avez besoin de récupérer après l'édition de ce, qui pourrait être un peu plus fastidieux, mais je suis sûr qu'il pourrait y avoir un
svn import
fonction...Si vous voulez juste un fichier sans révision de l'utilisation de l'information
Avec Subversion 1.5, il devient possible de vérifier (tous) les fichiers d'un répertoire sans vérifier tous les sous-répertoires (les divers --profondeur des drapeaux). Pas tout à fait ce que vous avez demandé, mais une forme de "moins de tous."
Si vous voulez juste pour exporter le fichier, et vous n'aurez pas besoin de mettre à jour plus tard, vous pouvez le faire sans avoir à utiliser les commandes SVN.
À l'aide de TortoiseSVN explorateur de Dépôt, sélectionnez le fichier, clic droit, puis sélectionnez "Copier l'URL dans le presse-papiers". Collez l'adresse URL de votre navigateur, et après la connexion, vous devriez être invité avec le téléchargement de fichier.
De cette façon, vous pouvez également sélectionner la révision et de télécharger une version plus ancienne du fichier.
Noter que ceci est valable si votre serveur SVN dispose d'une interface web.
À l'aide de la éparses découvrez la technique, vous POUVEZ vérifier un fichier particulier qui est déjà coché ou existe...avec un truc simple:
Après le paiement de votre dépôt en utilisant le "cet élément seule", dans l'explorateur Windows, vous DEVEZ d'abord cliquer-droit sur le fichier que vous devez mettre à jour; choisir des Pensions de Navigateur dans le menu contextuel; retrouver ce fichier dans l'explorateur de dépôt, et clic-droit. Vous devriez maintenant voir la "mise à jour à jour à la révision" dans le menu contextuel.
Je ne suis pas sûr de savoir si c'est une fonctionnalité non documentée ou tout simplement un bug. Il m'a fallu une longue après des heures de travail, pour enfin trouver ce truc. Je suis en utilisant TortoiseSVN 1.6.2.
Je voulais extraire un seul fichier ou un répertoire, ce qui n'était pas partie d'une copie de travail.
Nous allons obtenir le fichier à l'adresse suivante: http://subversion.repository.server/repository/module/directory/myfile
Donc j'ai vérifié le répertoire contenant le fichier cible, j'ai envie de faire un annuaire factice, (dire etcb pour l'URL se terminant par
/etc
).Puis j'ai vidé le fichier .svn/entries à partir de tous les fichiers du répertoire cible je n'ai pas besoin, afin de laisser uniquement le fichier que je voulais. Dans ce .svn/entries fichier, vous disposez d'un enregistrement pour chaque fichier avec des attributs afin de laisser uniquement le dossier sur le fichier que vous souhaitez récupérer et enregistrer.
Maintenant, vous avez juste besoin de copier ensuite ".svn" vers le répertoire qui va être une nouvelle "copie de travail". Ensuite vous avez juste besoin d':
Maintenant le répertoire répertoire est sous contrôle de version. N'oubliez pas de supprimer le répertoire directoryb qui était juste un "temporaire" copie de travail.
Faire quelque chose comme ceci:
L'idée de base est de créer le répertoire dans lequel vous souhaitez extraire les fichiers à partir de SVN.
Utiliser le
svn cat
de commande et de rediriger la sortie vers le même nom de fichier. Par défaut, le chat va se vider les informations sur stdio.Ce problème est couvert par:
http://subversion.tigris.org/issues/show_bug.cgi?id=823
Il y a un script qui vous permet d'extraire un fichier à partir de svn, apporter des modifications et valider les modifications vers le dépôt, mais vous ne pouvez pas exécuter "svn up" à la caisse le reste du répertoire. Il a été testé avec svn-1.3, 1.4 et 1.6.
Car aucune des autres réponses a fonctionné pour moi, je l'ai fait à l'aide de ce hack:
Cela va créer un nouveau dossier local qui a seulement les fichiers à partir du chemin d'accès à distance.
Ensuite, vous pouvez faire un lien symbolique vers les fichiers que vous voulez avoir ici.
svn co
d'un fichier pour éviter de tout un répertoire plein de fichiers image. Aussi, l'ajout d'un lien symbolique peut qu'ajouter à la complexité, le déplacement d'un répertoire temp pourrait fonctionner, mais vous avez encore de vérifier l'ensemble du répertoire de photos pour une seule image. @steve-jessop a eu la bonne idée