Есть ли способ создать журнал изменений в SVN

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

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

В идеале я ищу что-то вроде:

Foo.vb

  • Added new function bar

Bar.vb

  • Removed function foo
  • Added functionality in xyz to do abc +/- Modified function to log error
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
842
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Я бы просто сделал это в отдельном сообщении о фиксации. TortoiseSVN имеет автозаполнение имени файла, что очень помогает в этом.

Еще вы можете сделать svn st перед фиксацией и скопировать / вставить имена файлов в свое сообщение фиксации.

Да, и обязательно сильно сомневайтесь в ценности этого. Я знаю, что некоторые проекты OSS (Linux?) Требуют такой точности, но для многих проектов это просто шум. Diff может сказать вам гораздо больше и точнее.

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

«это просто шум» ... полностью согласен. Для журнала коммитов достаточно общего обзора. Зачем тратить время на ввод изменений файла за файлом? Люди просто перестанут читать ваши сообщения, так как они могут все это выяснить с помощью svn diff, если они будут достаточно внимательны.

Robert S Ciaccio 10.12.2010 05:27

Я бы только добавил, что я думаю, что лучше разбивать ваши коммиты на логические «куски». Зафиксируйте несколько связанных измененных файлов вместе, по одному за раз, даже если у вас есть 30 файлов для регистрации. В противном случае шум может вытеснить что-то важное для одного пользователя.

Robert S Ciaccio 10.12.2010 05:30

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

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

Одно из существенных различий между SVN и CVS состоит в том, что изменения совершаются атомарно. В CVS каждый файл имеет свою собственную версию, но в SVN версия предназначена для всего проекта и включает в себя все зарегистрированные файлы вместе.

Вот четыре идеи решения:

  1. Зарегистрируйте каждую из ваших программ отдельно, с отдельным сообщением журнала. Это может означать, что если, скажем, вы вернете пять файлов, вы «израсходуете» пять версий, четыре из которых могут привести к поломке сборки.
  2. Делайте свою разработку по отдельному пути (т.е.в своей собственной частной ветке), делайте, как указано выше, а затем в стратегические моменты объедините свою ветку с основной веткой.
  3. Зарегистрируйте все вместе и сохраните отдельные записи в виде комментариев в заголовке программы. Это может означать (небольшую) дополнительную работу, но вам все равно придется составлять отдельные сообщения для входа.
  4. Сделайте однократную регистрацию для всех файлов, но с красивым полным сообщением журнала с подробным описанием каждой части для каждого файла.

Я написал проект для такого рода вещей под названием MOAP

Одна из его функций - создать запись в журнале изменений из вашего локального diff (в настоящее время поддерживаются bazaar, cvs, svn, git и darcs). Вы делаете это, запустив «moap changelog prepare» или «moap cl prepare». Эта запись также может включать в себя измененные функции, если вы включите эту опцию.

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

Затем вы можете запустить 'фиксацию журнала изменений moap', чтобы зафиксировать изменения, описанные в записи журнала изменений. Он зафиксирует только перечисленные там файлы, а все остальные изменения оставит локальными.

Надеюсь, это поможет!

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