Есть ли способ отредактировать сообщение журнала определенной ревизии в Subversion? Я случайно написал неправильное имя файла в моем сообщении о коммите, что позже может сбить с толку.
Я видел, как я могу отредактировать неверное сообщение о коммите в Git? , но решение этого вопроса не похоже на Subversion (согласно svn help commit
).
pre-revprop-change
сценарий, который позволяет коммитирующему пользователю изменять свой журнал в течение 3 часов после фиксации. Это отличный компромисс между гибкостью / точными журналами и сохранением точности хранилища: wandisco.com/svnforum/threads/…svn propset dummyproperty 1 yourfile; svn commit yourfile -m yourmessage
Ответы:
По сути, вы должны иметь права администратора (прямо или косвенно) для хранилища, чтобы сделать это. Вы можете настроить хранилище так, чтобы все пользователи могли это делать, или изменить сообщение журнала непосредственно на сервере.
Смотрите эту часть FAQ по Subversion (выделено мной):
источник
Когда вы запускаете эту команду,
и на всякий случай вы видите это сообщение:
Это потому, что Subversion не позволяет вам изменять сообщения журнала, потому что они не версионные и будут потеряны навсегда.
Unix-хостинг SVN
Перейдите в каталог hooks на вашем сервере Subversion (замените ~ / svn / reponame на каталог вашего репозитория)
Удалить расширение
Сделать его исполняемым (не могу сделать chmod + x!)
Источник
Windows-хостинг SVN
Файлы шаблонов в каталоге ловушек нельзя использовать, так как они специфичны для Unix. Вам необходимо скопировать пакетный файл Windows
pre-revprop-change.bat
в каталог ловушек, например, тот, который представлен здесь .источник
Вот удобная вариация, о которой я не вижу упоминания в FAQ. Вы можете вернуть текущее сообщение для редактирования, указав текстовый редактор.
источник
svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
источник
Мне тоже недавно было поручено это.
Мы хотели позволить нашим программистам изменять только свои собственные сообщения коммитов и ограничивать, насколько далеко им разрешено это делать. Мы решили, что им будет разрешено изменять любые сообщения журнала, зафиксированные в этот день, исправлять опечатки и т. Д.
Посмотрев пару других примеров в Интернете, я взломал это вместе, мы находимся в среде Windows, так что это наше содержание
pre-revprop-change.bat
:Редактировать: оригинальная идея для этого пришла из этой темы :
источник
if /I not '%DATESTAMPDAY%'=='%DAY%' goto ERROR_MSGTOOOLD
мне пришлось переключаться на двойные кавычки вокруг двух переменных. (Вы не поверите, сколько времени понадобилось, чтобы выяснить.) В противном случае я получу такие вещи, как "== '02' в это время неожиданно" (во 2-й день месяца). Мой бат-фу недостаточно силен, чтобы понять, почему это происходит, но если кто-то столкнется со странными проблемами, это может помочь.В Windows, используя клиент Tortoise SVN:
Если это не сработает, возможно, из-за настройки SVN на сервере, прочитайте другие ответы здесь.
источник
Если вы используете IDE, как Eclipse, вы можете использовать этот простой способ.
В этом
right click on the revision id for your commit and select 'Set commit properties'
.Вы можете изменить сообщение, как вы хотите здесь.
источник
Если ваш репозиторий позволяет устанавливать свойства ревизии с помощью ловушки pre-revprop-change, вы можете изменить сообщения журнала намного проще.
Или в TortoiseSVN, AnkhSVN и, возможно, во многих других клиентах subversion, щелкнув правой кнопкой мыши на записи журнала и затем «изменить сообщение журнала».
источник
Subversion FAQ охватывает, но использует кучу заблуждение неопределённых терминов , как
REPOS_PATH
без предоставления каких - либо реальных примеров.Чтобы заставить его работать, может потребоваться несколько попыток, поэтому сохраните обновленное сообщение коммита в файл. В отличие от
svn-commit.tmp
файлов, Subversion не сохранит ваш набор текста, если возникнет проблема.В вашем рабочем каталоге запустите
svn propedit -r N --revprop svn:log
отредактировать сообщение коммита. Если это работает, отлично! Но, вероятно, этого не произойдет, потому что
svn:log
свойство revision неверсированное, и Subversion по умолчанию остановит его перезапись, либо с помощью скрипта ловушки.pre-revprop-change
, либо сообщения об ошибке, что у вас нет такого перехвата.Для изменения хуков вам необходим доступ к файловой системе, в которой находится репозиторий.
svn info
скажет вам корень репозитория. Предположим это~/svnrepo
.cd
в~/svnrepo/hooks
pre-revprop-change
илиpre-revprop-change.bat
сценарий? Если это так, временно закомментируйте ту часть, которая прерывается, если вы пытаетесь изменитьсяsvn:log
.В противном случае в Windows создайте пустой файл с именем
pre-revprop-change.bat
. Вот один из способов сделать это:В противном случае на Unix запустите
В рабочем экземпляре запустите
svn propedit -r N --revprop svn:log
снова~/svnrepo/hooks/svn-revprop-change
(.bat
)источник
Я нашел хорошую реализацию ловушки pre-rev-prop-change на стороне сервера в svnforum: https://www.svnforum.org/forum/opensource-subversion-forums/scripts-contributions/8571-pre-revprop-change -оболочка-скрипты позволяют-commiters-к-изменению собственных логарифмическим-в-х часов
Это реализует
Возьмите его оттуда и отредактируйте по желанию. Я бы предпочел не копировать его здесь, поскольку я не являюсь первоначальным автором, и нет уведомления об авторских правах, которое позволило бы мне это сделать.
источник