2010-02-02 5 views
79

Я хотел бы переписать большое количество сообщений о передаче 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, с которой я могу поговорить также через командную строку.)

ответ

91

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

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

+0

+1 Спасибо за это. Я сделал некоторую работу, связанную с некоторыми изменениями API, которые я хотел бы зарезервировать отдельно для остальных, и я написал сообщение журнала, чтобы отразить это ... прежде чем случайно совершить всю партию. Я «исправил» его, совершив изменение пробела с сообщением журнала, которое объясняло остальное! в следующий раз я буду знать, что делать. –

+1

Я тоже дал это +1, но потом это не сработало с сообщением: «Репозиторий не был допущен к пересмотру изменений, попросите администратора создать пред-revprop-change hook». Будет ли администратор автоматически знать, что нужно сделать? –

+19

Вы спрашиваете * меня *, если у вас есть компетентный администратор Subversion? :) – JesperE

57

Возможно, вы измените лог-сообщения задним числом, оно покрыто in the FAQ. Я не знаю, как интерфейс командной строки для VisualSVN работает, но ваниль Svn команды будет

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

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

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

+2

Если вы хотите использовать свой редактор: 'svn propedit -r N svn: log'. –

+3

Спасибо @kazark, мне нужно было сделать '' 'svn propedit -r N --revprop svn: log''', чтобы иметь возможность изменить сообщение в моем редакторе. – tutuDajuju

+2

Просто добавьте примечание: по умолчанию эта команда не будет работать, потому что ** изменения свойств ревизии ** по умолчанию не разрешены. Чтобы это разрешить, администратор svn должен создать крючок с именем ** «pre-revprop-change» **. Эта информация [в FAQ] (http://subversion.apache.org/faq.html#change-log-msg), как указано выше. –

24

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

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

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

+0

+1 Отличная информация сэр. Это не позволит мне сделать это без предварительного перепрограммирования. Мне придется перенести скрипт шаблона bash в окна, но это не должно быть проблемой. –

+0

Я добавил ссылку на пример командного скрипта: http://svn.haxx.se/users/archive-2006-03/0107.shtml –

1

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

Если вам случится иметь «запрос DAV не удался» сообщений об ошибке, дать посмотреть на Andrew Aylett's answer и идти редактировать «предварительно revprop-change.tmpl» в подкаталоге хранилища крючков.

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

2

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^