Изменить сообщение фиксации SVN задним числом?

Я хотел бы переписать большое количество сообщений фиксации 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 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как только это будет сделано, нажмите "Редактировать сообщение журнала" в контекстном меню, и все должно заработать!

Другие вопросы по тегам