2017-04-14 23 views
0

J'ai un projet qui fusionnera et validera automatiquement à partir d'une liste de révisions sélectionnées par l'utilisateur d'une branche à l'autre. Si un conflit de fusion se produit, le processus est abandonné et la copie de travail est annulée.Comment inverser de manière récursive les modifications d'une copie de travail à l'aide de SharpSVN?

Cependant, quand je vais essayer à nouveau et sélectionnez une révision qui normalement ne cause pas un conflit sur une copie de travail vierge, je reçois l'erreur suivante:

Merge failed: SharpSvn.SvnWorkingCopyException: Can't merge into conflicted node 'C:\SVN\MyProject\MyBranch\ProjectDirectory\SubDirectory\conflicted-file.cs'

Même si je fais un revert sur la copie de travail, il semble seulement revenir à la propriété svn:mergeinfo, mais pas les fichiers à l'intérieur (en conflit ou non, les anciens fichiers sont toujours là). Ne revient-il pas récursivement? Je ne vois pas une option pour le faire autrement.

Voici ce que j'ai essayé jusqu'à présent:

using (var client = new SvnClient()) 
{ 
    // [Authentication code goes here...] 
    var targetPath = [email protected]"{_svnLocalRoot}\{project}\{branch}\"; 

    // Clean Up 
    var cleanupArgs = new SvnCleanUpArgs() 
    { 
     BreakLocks = true, 
     ClearDavCache = true, 
     VacuumPristines = true, 
     FixTimestamps = true 
    }; 
    client.CleanUp(targetPath, cleanupArgs); 

    // Revert 
    var revertArgs = new SvnRevertArgs() 
    { 
     Depth = SvnDepth.Infinity, 
     ClearChangelists = true 
    }; 
    client.Revert(targetPath); 

    // Update 
    var updateArgs = new SvnUpdateArgs() 
    { 
     Depth = SvnDepth.Infinity 
    }; 
    client.Update(targetPath, updateArgs); 

    // [Merge and commit code goes here...] 
} 

Court de supprimer le répertoire de travail ensemble et faire un check-out (qui prend très longtemps), que dois-je faire pour obtenir ma copie de travail à un état vierge sans conflits et le dernier code?

J'utilise actuellement la version SharpSvn.1.9-x641.9005.3940.224

Répondre

0

Il était aussi simple que d'une faute de frappe.

client.Revert(targetPath); 

aurait dû être:

client.Revert(targetPath, revertArgs);