2010-02-23 3 views
5

Comment utiliser SharpSVN pour ajouter par programme un dossier à la liste des ignorés?Comment utiliser SharpSVN pour programmer "ajouter à la liste d'ignorés" pour un dossier

EDIT: Tentative:
Voici ce que j'ai essayé

svnClient.GetProperty(new SvnUriTarget("svn://svn.foo.com/" + DatabaseName + "/"), SvnPropertyNames.SvnIgnore, out ignores); 
ignores += " Artifacts"; 
var args = new SvnSetPropertyArgs() { BaseRevision = ???, LogMessage = "update ignore list" }; 
svnClient.SetProperty(new Uri("svn://svn.foo.com/" + DatabaseName + "/"), SvnPropertyNames.SvnIgnore, ignores, args); 

Mais je ne sais pas comment obtenir le BaseRevision (je peux le faire manuellement, et cela fonctionne, mais tous les combinaisons de GetProperty j'ai essayé ne semblent pas me le donner)

SOLUTION:. Basé sur la réponse de Bert

SvnGetPropertyArgs getArgs = new SvnGetPropertyArgs(){}; 
string ignores = "Artifacts"; 
string result; 
if(svnClient.GetProperty(new SvnUriTarget("svn://svn.foo.com/" + ProjectName + "/trunk/"), SvnPropertyNames.SvnIgnore,out result)) 
{ 
    ignores = result + " Artifacts"; //TODO: check for existing & tidy formatting. 
} 
svnClient.SetProperty(UncPath.TrimEnd('\\'), SvnPropertyNames.SvnIgnore, ignores); 
SvnCommit(svnClient); 
+0

Vous devez simplement récupérer et définir la propriété sur votre copie de travail locale, puis valider la modification dans le référentiel. (Pour ce faire, remplacez simplement UriTarget par un chemin local). –

+0

Pas vraiment lié (car les chemins locaux sont beaucoup plus faciles): Mais au lieu d'utiliser directement la classe SvnUriTarget, vous pouvez simplement passer une instance normale de System.Uri. Il y a des conversions automatiques pour string-> SvnPathTarget et Uri-> SvnUriTarget définies. –

Répondre

4

La liste des ignorés est stockée dans la propriété 'svn: ignore' du répertoire parent contenant le répertoire/dossier à ignorer. Donc, pour ajouter un élément, vous devez obtenir la valeur de la propriété d'origine (s'il en existe une), puis ajouter l'élément supplémentaire séparé par un espace. Les fonctions sur SvnClient pour cela sont GetProperty et SetProperty().

+0

c'est utile, mais il me manque encore quelques détails pour le faire fonctionner (voir question éditée) – Myster

+0

Je n'ai pas de chemin local, j'ai un chemin UNC. Si j'appelle 'SetProperty' comme ceci: svnClient.SetProperty ("\\\\ dev1 \\ www \\ www.automan.foo.com \\", "svn: ignore", "Artifacts"); Je reçois l'exception: "'\\ dev1 \\ www' n'est pas une copie de travail" – Myster

+0

Pas 100% sûr, mais je pense que cela indique que le fichier www.automan.foo.com n'est pas non plus une copie de travail (probablement même pas un répertoire) et vous ne pouvez définir que les propriétés svn: ignore sur les répertoires de copie de travail. –

Questions connexes