tag subversion subir revertir proyecto descartar con cambios branches svn externals

subversion - svn trunk



No mostrar svn: externals en el estado de svn (3)

He hecho un svn:external en mi repositorio. Todo funciona bien, excepto la salida del comando svn status . En la salida hay mucha información que no necesito:

$ svn st X lib Performing status on external item at ''lib''

Puedo ejecutar svn st --ignore-externals -q y puedo colocar esta línea en un pequeño script, pero quizás haya una mejor solución. ¿Cómo puedo ver el estado de mi copia de trabajo sin ver información sobre las partes externas?


Creo que no hay respuesta, pero realmente resuelve el problema en el sentido de que si se han realizado cambios en una parte de svn: externals, por supuesto deberían mostrarse. Esto probablemente no tiene sentido para los repositorios realmente externos. Pero uso svn: externals para agregar una carpeta de compilación general desde el mismo repositorio a proyectos (porque no existe una jerarquía general de los módulos). Y no quiero usar las opciones --ignore-externals -q ya que pierdo información sobre los archivos no agregados y los cambios en el script de compilación general que he realizado en este proyecto (que quizás desee confirmar). Mi solución fue parchear svnkit con la svnkit línea de comandos java de subversion.

AbstractSVNCommand.registerCommand(new SVNStatusCommand()); final ByteArrayOutputStream bos = new ByteArrayOutputStream(); final PrintStream stream = new PrintStream(bos); final SVNCommandLine commandLine = new SVNCommandLine(); commandLine.init(new String[] { "status", "PATH..." }); final SVNCommandEnvironment env = new SVNCommandEnvironment("mySvn", stream, stream, System.in); env.init(commandLine); env.initClientManager(); final SVNStatusCommand svnStatusCall = new SVNStatusCommand(); svnStatusCall.init(env); svnStatusCall.run(); stream.flush(); String result = new String(bos.toByteArray()); StringBuffer buffer = new StringBuffer(); Scanner scanner = new Scanner(result); while (scanner.hasNextLine()) { String line = scanner.nextLine(); if (line.startsWith("X") || line.startsWith("Performing status on external item at")) { // ignore this output } else if (line.trim().isEmpty() == false) { buffer.append(line + "/n"); } } System.out.println(buffer.toString());

Esto resuelve el problema porque los cambios en los elementos externos también están marcados con ''M'' para modificar ...



La búsqueda activa una implementación de script Bash inteligente que anula el comando svn con un script. Sin embargo, quería hacer algo similar en Windows. Elimine el directorio svn de su PATH , luego cree un script por lotes llamado svn.bat y svn.bat en algún lugar de su PATH (como C:/Windows ):

@echo off setlocal if (%1)==(st) goto :match if (%1)==(stat) goto :match if (%1)==(status) goto :match :: If not running Status command, just pass the args along "C:/Program Files/SlikSvn/bin/svn" %* goto :eof :match :: Init variables set svnargs1= set svnargs2=--ignore-externals :: Loop through arguments :loop if "%~1"=="" goto :cont :: Look for ignore externals flag if "%~1"=="--examine-externals" ( set svnargs2= ) else ( if "%~1"=="-h" ( set svnargs2= ) set svnargs1=%svnargs1% %1% ) shift & goto :loop :cont :: Call svn "C:/Program Files/SlikSvn/bin/svn" %svnargs1% %svnargs2%