¿Puedo volver atrás y editar comentarios en un SVN checkin?


Puse un error en un comentario en SVN. ¿Puedo editar esto después del registro?

Author: Svante, 2009-03-28

7 answers

Los mensajes de confirmación son "propiedades no versionadas" y se pueden cambiar con el comando svn propset , por ejemplo

$ svn propset --revprop -r 25 svn:log "Journaled about trip to New York."
property 'svn:log' set on repository revision '25'

Esto es establecer la propiedad de revisión llamada "svn: log" en la revisión 25

Configurando subversion para permitir cambios en las propiedades de revisión

Debido a que estas no están versionadas, una instalación predeterminada de subversion no le permitirá modificar estas propiedades a menos que proporcione un script de gancho pre-revprop-change.

Aquí hay un script típico de /var/lib / svn / hooks / pre-revprop-change en mi sistema:

#!/bin/sh

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then 
  echo "$1 $2 $3 $4 $5" >> /var/lib/svn/logchanges.log
  exit 0; 
fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

Esto registra los cambios en las propiedades de revisión de svn:log, y permite la edición usando exit 0, cualquier otro cambio de propiedad de revisión se deniega usando exit 1. Vea la respuesta de patmortech para un equivalente de Windows.

 64
Author: Paul Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-28 16:39:37

Para habilitar la modificación de la propiedad revision, necesita crear un script de gancho pre-revprop-change. Puede leer sobre ello aquí: http://svnbook.red-bean.com/en/1.0/ch05s02.html (busque la sección Scripts de gancho).

Para Windows, aquí hay un enlace a un archivo por lotes de ejemplo que solo permite cambios en el mensaje de registro (no otras propiedades): http://ayria.livejournal.com/33438.html . Básicamente copie el código a continuación en un archivo de texto y llámelo pre-revprop-change.bate y guárdalo en el subdirectorio / hooks para su repositorio.

@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5

:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME

:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION

:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY

goto :eof

:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1
 56
Author: patmortech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-28 16:17:09

Una forma de hacer un cambio rápido al mensaje de registro sin tener que crear un script de gancho pre-revprop-change es usar lo siguiente svnadmin comando :

svnadmin setlog --bypass-hooks REPOS_PATH -r N FILE

Donde REPOS_PATH es la ruta al repositorio en el servidor (por ejemplo, /srv/svn/repository) y N es el número de revisión (por ejemplo, 25) y FILE es un archivo de texto que contiene la entrada de registro de confirmación correcta.

Dos cosas: Esto requiere acceso al sistema de archivos a los archivos del repositorio, pero también lo hace la creación de un gancho pre-revprop-change script... y en segundo lugar, este comando omitirá cualquier script de gancho que pueda estar en su lugar, así que úselo con cuidado...

 23
Author: Kit Roed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-19 00:57:19

Usar Tortoise SVN hará esto muy, muy fácil para usted. Simplemente abra la ventana mensajes de registro, haga clic con el botón derecho en el registro de revisiones que desea editar y elija Editar registro en el menú contextual.

 9
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-30 16:12:05

En Tortoise SVN, puede seguir los pasos a continuación.
1. Vaya al Navegador del repositorio.
2. Haga Clic derecho en la carpeta en la que desea trabajar.
3. Haga clic en Mostrar Registro.
4. En la lista de revisiones, seleccione y haga clic derecho en la revisión que desee.
5. Haga clic en Editar mensaje de registro.

Ahora puede editar sus comentarios en la revisión svn checkin.

Gracias!

 6
Author: Aung Chan Myae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 02:22:53
svn propset svn:log --revprop -r <REVISION> "My corrected log message" <PATH-TO-REPOSITORY> 
 4
Author: David Snabel-Caunt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-28 14:46:07

En Eclipse (o Rational Application Developer) usando Subclipse:

Elija Equipo Show> Mostrar historial luego haga clic con el botón derecho en la revisión cuyos comentarios desea cambiar, luego elija "Establecer propiedades de confirmación" y puede cambiar el comentario y/o el autor.

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-16 17:13:50