2010-02-23 9 views
5

¿Cómo uso SharpSVN programáticamente para agregar una carpeta a la lista de ignorar?¿Cómo uso SharpSVN para programar "agregar a la lista de ignorar" para una carpeta

EDIT: Intento:
Esto es lo que he intentado

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); 

Pero no sé cómo obtener el BaseRevision (puedo conseguir de forma manual, y que funciona, pero todo el combinaciones de GetProperty me trataron no parecen dar a mí)

SOLUCIÓN:. sobre la base de respuesta 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

Solo debe recuperar y establecer la propiedad en su copia de trabajo local y luego confirmar el cambio en el repositorio. (Para hacer esto, simplemente reemplace el UriTarget con una ruta local). –

+0

No está realmente relacionado (ya que las rutas locales son mucho más sencillas): pero en lugar de utilizar la clase SvnUriTarget directamente, puede pasar una instancia normal de System.Uri. Hay conversiones automáticas para string-> SvnPathTarget y Uri-> SvnUriTarget defined. –

Respuesta

4

La lista de ignorar se almacena en la propiedad 'svn: ignores' en el directorio principal que contiene el archivo/directorio ignorado. (Consulte Subversion book o svn help propset)

Para agregar un elemento, debe obtener el valor de propiedad original (si existe) y luego agregar el elemento adicional separado con espacios en blanco. Las funciones en SvnClient para esto son GetProperty y SetProperty().

+0

que es útil, pero aún faltan algunos detalles para que funcione (vea la pregunta editada) – Myster

+0

No tengo una ruta local, tengo una ruta UNC. Si llamo a 'SetProperty' así: svnClient.SetProperty ("\\\\ dev1 \\ www \\ www.automan.foo.com \\", "svn: ignore", "Artefactos"); Obtuve la excepción: "'\\ dev1 \\ www' no es una copia de trabajo" – Myster

+0

No estoy 100% seguro, pero creo que esto indica que el archivo www.automan.foo.com tampoco es una copia de trabajo (probablemente ni siquiera un directorio) y solo puede establecer las propiedades svn: ignore en los directorios de copia de trabajo. –

Cuestiones relacionadas