Змінити повідомлення про фіксацію SVN заднім числом?


85

Я хотів би переписати велику кількість повідомлень коміту SVN в іншу структуру, наприклад, префікс категорії. Від:

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

я хочу

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

Чи існує простий спосіб зробити це, який не включає скидання цілого сховища за допомогою svndumpfilter?

Я працюю з TortoiseSVN на стороні клієнта та VisualSVN на стороні сервера. (VisualSVN - це оболонка навколо класики svn, з якою я також можу поговорити через командний рядок.)

Відповіді:


98

Так, повідомлення про коміти можна змінювати. Вони реалізовані як властивості на версіях, подібні до звичайних властивостей файлу.

У вікні журналу TortoiseSVN ви можете клацнути правою кнопкою миші на коміті та вибрати "Редагувати повідомлення журналу".


+1 Дякую за це. Я зробив деяку роботу, пов’язану з деякими змінами API, які я хотів зробити окремо для решти, і написав повідомлення журналу, щоб відобразити це ... перед тим, як випадково зафіксувати всю партію. Я "виправив" це, здійснивши пробіл, змінивши повідомлення журналу, яке пояснило решту! наступного разу я буду знати, що робити.
Ед Даніель,

1
Я також дав +1, але тоді він не спрацював із повідомленням "Сховище не ввімкнуто для прийняття змін версії; попросіть адміністратора створити гачок перед зміною revprop". Чи адміністратор автоматично знатиме, що потрібно зробити?
J.Merrill

19
Ви запитуєте мене, чи є у вас компетентний адміністратор Subversion? :)
JesperE

@ J.Merrill Вам потрібно перейти до hooksпапки, що знаходиться в сховищі, та перейменувати на, pre-revprop-change.tmplщоб pre-revprop-change.batвона працювала.
sa_leinad

59

Ви можете, звичайно, змінити повідомлення журналу заднім числом, про це йдеться в поширених запитаннях . Я не впевнений, як працює інтерфейс командного рядка для VisualSVN, але для vanilla svn команда буде такою

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

Якщо ви хочете зробити це для всіх версій, не скидаючи сховище та не перезавантажуючи, ви можете створити цю команду для роботи зі списком усіх версій. Це займе певний час, залежно від розміру вашого сховища, але в принципі немає жодної причини, коли ви не можете цього зробити, і це не передбачає скидання та перезавантаження.

Крім того, у vanilla SVN є команда, svnlookяка є свого роду адміністративним інструментом, який працює безпосередньо з файлами сховища. Цей інструмент не розуміє URL-адреси (ви повинні мати доступ до сховища на рівні файлової системи), але набагато швидший. Синтаксис дещо інший, але ви можете змінювати властивості таким же чином, використовуючи цей інструмент.


3
Дякую @kazark, мені довелося зробити, svn propedit -r N --revprop svn:logщоб змінити повідомлення у своєму редакторі.
tutuDajuju

3
Просто додати примітку: за замовчуванням ця команда не буде працювати, оскільки зміни властивостей редакції за замовчуванням не дозволені. Для того, щоб це дозволити, адміністратор svn повинен створити хук з назвою "pre-revprop-change" . Ця інформація міститься у поширених запитаннях, як зазначено вище.
Маттіас

у Windows вам потрібно буде встановити змінну середовища "SVN_EDITOR", "VISUAL" або "EDITOR" перед запуском команди. Наприклад:set SVN_EDITOR=notepad.exe
Enwired 03.03.15

26

Так, можна, але спочатку його потрібно ввімкнути у сховищі.

У сховищі, у каталозі хуків, знаходиться файл, який називається pre-revprop-change.tmpl. У нього є кілька сторінок коментарів щодо того, що він робить, і він налаштований, щоб дозволити лише зміни у властивостях журналу. Щоб увімкнути його, перейменуйте файл на попереднє revprop-change та зробіть його виконуваним (я припускаю, що Subversion, розміщений у POSIX, якщо ви використовуєте Windows для розміщення, це повідомлення вам може бути корисним).

Як тільки сховище дозволить, ви можете використовувати Tortoise, щоб змінити повідомлення журналу для коміту з меню правої кнопки миші на коміті, або ви можете скористатися командним рядком.


+1 Відмінна інформація, сер. Це не дозволить мені зробити це без попередньо зміненої зміни. Мені доведеться перенести скрипт bash шаблону на Windows, але це не повинно бути проблемою.
Pekka

Я додав посилання на приклад командного сценарію: svn.haxx.se/users/archive-2006-03/0107.shtml
Ендрю


2

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

URLвище не є обов’язковим, якщо ви вже в робочому каталозі. Потім з’явиться редактор, щоб повідомлення можна було змінити.


1

Щойно натрапив на цю публікацію з точною проблемою, використовуючи Tortoise SVN для клієнта та VisualSVN на сервері Windows.

Якщо у вас трапляється повідомлення про помилку " Помилка запиту DAV" , перегляньте відповідь Ендрю Ейлетта та перейдіть редагувати "pre-revprop-change.tmpl" у підкаталог гачків сховища.

Після цього натискання кнопки "редагувати повідомлення журналу" в контекстному меню нарешті має заробити!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.