Pour faire des builds, empaqueter des fichiers, etc., il est nécessaire d'avoir une version complètement propre de SVN. Il ne peut pas y avoir de fichiers non versionnés qui circulent, par exemple test.png peut être empaqueté si tous les fichiers PNG sont saisis. Mais pour obtenir une toute nouvelle commande, il faut du temps et de la bande passante. Donc est-il un moyen de prendre un répertoire de travail et l'obtenir exactement identique à un contrôle propre, la suppression des fichiers non versionnés ainsi que faire une mise à jour svn?Créer un répertoire de travail SVN contient EXACTEMENT la même chose qu'une commande propre
Répondre
Si vous voulez:
- obtenir ce qui est sur le SVN
- et rien d'autre
- et, idéalement, pas
.svn
répertoires
Ensuite, la meilleure solution est de utilisez svn export
. Oui, il exportera tous les fichiers du SVN, ce qui signifie que cela prendra du temps et qu'il faudra consommer un peu de bande passante; mais c'est probablement la meilleure solution pour éviter tout problème.
Et, en tant que sidenote: il vous permet de créer vos archives à partir de votre machine de développement, sans avoir à revenir sur votre travail actuel.
Sinon, vous aurez à:
- faire une
svn revert
, d'annuler les modifications effectuées sur votre copie de travail et n'a pas commis. - Ensuite, assurez-vous que tous les répertoires
.svn
sont exclus de votre archive.
Vous pouvez écrire un script qui efface tous les fichiers qui ne se trouvent pas dans un répertoire .svn et tous les répertoires sans sous-répertoire .svn. Ensuite, exécutez 'up', et tout ce qu'il fera est de recopier les fichiers sur les copies dans le répertoire .svn. Cependant, tous ces répertoires .svn ont toujours le potentiel de vous donner du gaz, alors lisez la réponse de Pascal, même si cela prend beaucoup de temps.
Comment ce script peut-il fonctionner? Je n'ai pas de méta-données svn sur ce PC, liste-t-il simplement les fichiers là-bas? –
Comment ne pas avoir de svn metadata, à moins que vous n'ayez lancé svn export en premier lieu. svn co TOUJOURS fait cette copie supplémentaire avec les métadonnées dans les répertoires .svn. – bmargulies
@John votre question initiale dit que vous avez couru un svn co. Je reste fidèle à ma remarque. Chaque fois que vous lancez un svn co, vous obtenez des métadonnées.Si vous n'avez pas de svn metadata, vous n'avez pas exécuté co, et donc toute votre question est trompeuse et impossible à répondre. – bmargulies
Here est une commande qui répertorie tous les fichiers versionnés dans un répertoire subversion:
svn status --no-ignore | grep '^\?' | sed 's/^\? //'
Faire la mise à jour et la suppression des fichiers ressemblerait à ceci:
svn update && svn status --no-ignore | grep '^\?' | sed 's/^\? //' | xargs rm -rf
Vous pouvez faire un retour au lieu de la mise à jour si vous voulez exactement la même version. Le meilleur moyen serait probablement d'utiliser svn export.
Ai-je dit que je courais * nix? Mais je suis sûr que quelqu'un le trouvera utile, merci quand même. –
Non, vous n'avez rien dit à propos de votre système d'exploitation. Btw, peut-être si une vérification SVN est tellement consommatrice de bande passante, vous devriez vérifier si tous les fichiers appartiennent réellement au contrôle de version (comme les Java JARs que vous n'avez pas besoin d'archiver quand vous utilisez un outil de construction comme Maven) – Daff
@John svn commande fonctionne bien sur Windows si vous avez cygwin. Le sarcasme n'est pas appelé. – bmargulies
- 1. tortue svn branche du répertoire de travail
- 2. Deux fonctions faisant exactement la même chose, alias?
- 3. SVN: un répertoire versionné du même nom existe déjà
- 4. Comment créer un répertoire immuable dans svn?
- 5. créer votre propre référentiel svn hébergement
- 6. comment réparer svn: 'chemin/vers/dir' n'est pas un répertoire de copie de travail
- 7. Déplacer la copie de travail SVN dans un nouveau répertoire et marquer l'enregistrement en cours?
- 8. Commande Tortoise SVN Problème
- 9. Créer une étiquette/branche à partir de la copie de travail locale en utilisant SVN
- 10. comment utiliser svn tiers et mon propre svn sur le même projet?
- 11. Même copie de travail du code avec 2 serveurs SVN
- 12. Problème avec la commande de copie svn
- 13. MSBuild chaîne de répertoire propre
- 14. Créer un répertoire SVN localement en lecture seule
- 15. Servir SVN, manquer un répertoire
- 16. svn processus de travail
- 17. SVN: Créer un second dépôt
- 18. Plusieurs copies de travail SVN sur localhost
- 19. La vérification d'un répertoire contient des fichiers ou non - tsql
- 20. Structure de répertoire de travail pour le référentiel SVN Visual Studio
- 21. Svn log - svn: '.' n'est pas une copie de travail
- 22. Comment créer un arbre d'expression pour faire quelque chose de similaire à la commande SQL "J'aime"
- 23. SVN ne peut pas définir la propriété sur un répertoire
- 24. Web2Py Répertoire de travail
- 25. Créer un répertoire à l'aide de Nant
- 26. NSIS Uninstaller Répertoire de travail
- 27. svn checkout et mise à jour sans le répertoire .svn
- 28. Est-ce que System.out, stdout et cout sont exactement la même chose?
- 29. Commande Linux: Répertoire dans un répertoire
- 30. ID3DX10Mesh et ID3DXMesh Guids EXACTEMENT le même
Notez que svn revert ne supprimera pas les fichiers non-versionnés, il ne supprimera que l'instruction "add" des méta-données svn. –
.svn dirs ne sont pas un problème, ils sont cachés IIRC et facile à filtrer. Mais de toute façon, il semble que je n'ai pas d'autre choix que de télécharger une copie propre dans un sens ou dans l'autre? –