Comment puis-je exporter des fichiers modifiés dans SVN qui ont changé entre deux révisions. J'ai besoin d'une solution via une ligne de commande ou en utilisant des scripts (avec une structure de dossiers appropriée). De plus, j'ai besoin d'une solution basée sur des fenêtres.
E.g. STH comme: p> Je veux un arborescence de répertoire avec une copie des fichiers qui changeant dans n'importe quelle révision de 50 sur P> P>
6 Réponses :
Voici un didacticiel étape par étape qui fait cela avec Tortoisisesvn's comparer les révisions em> et Sélection d'exportation vers ... em> fonctions: p>
http://www.electrictoolbox.com/tortoisisvn-exporting-changed-files/ p>
Déjà je sais, mais je veux une solution de ligne de commande pour le bitramage
Si je comprends votre question correctement, vous n'êtes pas intéressé par un patch global entre les révisions. Dans ce cas, vous devez exporter chaque révision dans un répertoire distinct, puis utiliser un outil tel que Beyond Comparer (ou tout ce qui est équivalent comme Winmerge) pour identifier des fichiers modifiés. P>
Mais, si votre répertoire de construction est sous contrôle de version, vous feriez mieux de créer un correctif et d'appliquer dessus. P>
Pouvez-vous s'il vous plaît me donner un exemple
Autant que je sache, SVN ne fournit pas une telle fonctionnalité. Mais vous pouvez écrire un programme C # simple à l'aide de Sharpsvn pour le faire. Voici un échantillon que vous pouvez utiliser. Dans cet échantillon, je reçois l'ensemble du fichier modifié de la révision 100 à 200.
using SharpSvn; using System.IO; using System.Collections.ObjectModel; using Microsoft.VisualBasic; namespace SvnDiffExporter { class Program { static void Main(string[] args) { SvnClient client = new SvnClient(); SvnRevisionRange range = new SvnRevisionRange(100, 200); MemoryStream result = new MemoryStream(); Collection<SvnLogEventArgs> items; SvnLogArgs logargs = new SvnLogArgs(range); client.GetLog(@"e:\Artifacts", logargs, out items); int i = 0; string [] path = new string[255]; foreach (SvnLogEventArgs ar in items) { foreach (SvnChangeItem changeitem in ar.ChangedPaths) { if (changeitem.Action != SvnChangeAction.Delete) { path[i] = changeitem.Path; i++; } } } string localpath = @"c:\data"; foreach (string str in path) client.Export(str, localpath); } } }
Je pense que votre solution résoudra mes problèmes, je vérifierai et postera
Voici une autre option écrite dans BASH Script: J'utilise Le script complet pour effectuer une exportation incrémentielle SVN sur un environnement de production de lampes. P> P>
J'ai créé un fichier de commandes qui fonctionnera pour exporter les fichiers modifiés entre les révisions. Pour l'utiliser, vous spécifiez simplement la plage de révision ou de révision sur la ligne de commande et une destination pour exporté. des dossiers. p>
Bien que le message de @ Hoodi puisse fonctionner si on est capable de nous une solution C #, le message de @kicken est extrêmement efficace en tant que solution Windows.
Malheureusement, je n'ai trouvé aucun moyen d'utiliser le référentiel. J'ai dû vérifier la révision dont j'ai besoin d'un répertoire d'abord, puis exécutez le script sur le répertoire "Copie de travail". P>
Je n'ai pas pu l'utiliser comme affiché. Cette petite ré-écriture a fonctionné pour moi: p>
p>
C:\YourRepository>svnexport.bat 1:10 C:\Export <pathToWorkingDirectory>
Qu'est-ce que vous demandez exactement? Pourriez-vous fournir un exemple de ce que vous essayez de faire?
Il suffit d'ajouter d'exemple ce que je cherche
Qu'entendez-vous avec l'exportation? Voulez-vous un arborescence de répertoire avec une copie des fichiers qui ont changé dans une révision de 50 sur 50 sur?
@Matteo oui je veux que je veux un arborescence de répertoire avec une copie des fichiers qui a changé dans n'importe quelle révision de 50 sur