Изменить сообщение фиксации SVN задним числом? - PullRequest
83 голосов
/ 02 февраля 2010

Я хотел бы переписать большое количество сообщений фиксации SVN в другую структуру, например, префикс категории. От:

"foo" now accepts "bar" format for connection string.

хочу

core - database - "foo" now accepts "bar" format for connection string.

Есть ли простой способ сделать это, который не включает в себя дамп всего хранилища с использованием svndumpfilter?

Я работаю с TortoiseSVN на стороне клиента и VisualSVN на стороне сервера. (VisualSVN - это оболочка для классического svn, с которым я также могу общаться через командную строку.)

Ответы [ 6 ]

96 голосов
/ 02 февраля 2010

Да, коммит сообщения могут быть изменены. Они реализованы в виде свойств ревизий, аналогично обычным свойствам файла.

В окне журнала TortoiseSVN вы можете нажать правой кнопкой мыши на коммите и выбрать «Редактировать сообщение журнала».

58 голосов
/ 02 февраля 2010

Вы можете, конечно, задним числом изменить сообщения журнала, это покрыто в FAQ . Я не уверен, как работает интерфейс командной строки для VisualSVN, но для vanilla svn команда будет

svn propset -r N --revprop svn:log "new log message" URL

Если вы хотите сделать это для всех ревизий без выгрузки репозитория и повторной загрузки, вы можете написать эту команду для работы со списком всех ревизий. Это займет некоторое время, в зависимости от размера вашего репозитория, но в принципе нет причин, по которым вы не можете это сделать, и это не включает дамп и перезагрузку.

Также в vanilla SVN есть команда svnlook, которая является своего рода административным инструментом, который работает непосредственно с файлами репозитория. Этот инструмент не понимает URL-адреса (у вас должен быть доступ к хранилищу на уровне файловой системы), но он работает на намного быстрее. Синтаксис немного отличается, но вы можете изменить свойства таким же образом, используя этот инструмент.

26 голосов
/ 02 февраля 2010

Да, вы можете, но сначала вам нужно включить его в хранилище.

В хранилище, в каталоге hooks, находится файл pre-revprop-change.tmpl. Он получил пару страниц комментариев о том, что он делает, и настроен так, чтобы разрешать только изменения в свойствах журнала. Чтобы включить его, переименуйте файл в pre-revprop-change и сделайте его исполняемым (я полагаю, что подконверсия на POSIX-хосте, если вы используете Windows для хостинга, может оказаться полезной это сообщение ) .

Как только репозиторий разрешит это, вы можете использовать Tortoise, чтобы изменить сообщение журнала для фиксации из меню, вызываемого правой кнопкой мыши, или использовать командную строку.

7 голосов
/ 02 февраля 2010

Используйте svn propset в свойстве svn:log. Примеры в svn book .

2 голосов
/ 03 января 2014

svn propedit -r N --revprop svn:log URL

URL выше необязательно, если вы уже находитесь в рабочем каталоге. После этого появится редактор, позволяющий изменить сообщение.

1 голос
/ 30 августа 2013

Только что натолкнулся на этот пост с точной проблемой, используя Tortoise SVN для клиента и VisualSVN на сервере Windows.

Если у вас появилось сообщение об ошибке «Ошибка запроса DAV» , взгляните на ответ Эндрю Айлетта и перейдите к редактированию pre-revprop-change.tmpl в ваш репозиторий перехватывает подкаталог.

После того, как это сделано, нажатие кнопки «редактировать сообщение журнала» в контекстном меню должно наконец сработать!

...