Как мне структурировать свои разработки плагинов и как применить патч к патчу в SVN?
Я только начал разрабатывать плагины и патчи для Redmine и использую SVN. У меня есть следующая структура:
doc/
src/
src/branches/
src/plugins/
src/patches/
src/trunk/
Моя идея состояла в том, чтобы создать ветку из ствола для каждого плагина или патча, который я собираюсь разработать. Папка плагинов предназначалась для хранения различных версий плагинов, а папка патчей - версий патчей.
Прямо сейчас я сталкиваюсь со следующей проблемой: я создал ветку issue_x для разработки патча. После первой версии я использовал svn diff > patch.diff
чтобы получить патч. Затем я сохранил его в папке патчей, а затем применил его к стволу с patch -p0 < ../patch.diff
, Круто, но я должен сделать небольшую модификацию патча, потому что в работе обнаружена ошибка.
Что я должен делать?
- Создать новый патч, чтобы исправить ошибку?
- Исправить ошибку, создать целый патч (включая все сделанные изменения), вернуть патч в транк и затем повторно применить новый патч?
- Что-нибудь еще?
2 ответа
Subversion (и любой общий SCM) - это "Объединение изменений" из разных линий разработки.
Т.е. вместо того, чтобы использовать diff-patch, вы используете внутреннюю технику svn - объединяйте ветку с транком, повторяйте слияние после того, как некоторые изменения добавлены в ветку, пока вы не получите нужный результат
Почитай SVN Book, это полезная вещь
Я не уверен, почему вы используете патчи вместо слияний. Это довольно странно.
Самым очевидным (для меня) было бы отделение от issue_x
, исправить ошибку, слить обратно в issue_x
а затем объединить issue_x
Вернуться в trunk
,
В вашем сценарии я предлагаю вам внести изменения, чтобы исправить ошибку в issue_x
создать патч и применить его к trunk
, Вы все равно должны узнать о ветвлении и слиянии SVN из книги SVN.