Итак, сейчас я изучаю Ruby on Rails и работаю над книгой «Гибкая веб-разработка с Rails». Я также решил, что хочу попробовать Mercurial, потому что я читал о распределенных SCM, и это кажется идеальной ситуацией. Тем не менее, я все же предпочитаю передавать свой код удаленно на свой Linux VPS, только если мой жесткий диск решает погрузиться.
Итак, мой вопрос относится к ветвлению в Mercurial. Сейчас у меня настроен удаленный репозиторий, и я могу легко передавать изменения по SSH (черт возьми, я даже создал сайт Nginx FastCGI, который также позволяет мне продвигаться). Однако я хотел бы создать ветки для каждой главы, пока я над ними работаю, так что я могу сохранить хорошую организованную историю моего прогресса в книге. Вот что я делаю:
$ hg branch chapter-10
(do chapter 10 stuff)
$ hg commit -m "Chapter 10 complete"
$ hg update default
$ hg merge chapter-10
$ hg commit -m "Merging chapter 10 into default"
$ hg push
Как только я выполняю оператор push, я получаю сообщение от Mercurial:
pushing to ssh://myserver/hg/depot
searching for changes
abort: push creates new remote branch 'chapter-10'!
(did you forget to merge? use push -f to force)
Итак, в этот момент я снова пытаюсь сделать hg merge
, и он говорит мне, что нечего объединять, что, очевидно, верно, потому что я только что слил это. Когда я нажимаю клавишу -f, все выглядит нормально, и даже веб-интерфейс показывает соответствующие ветви.
Подводя итог, мой вопрос прост: правильно ли я поступаю? Есть ли более подходящий способ сделать это с Mercurial (то есть "Mercurial way")? Честно говоря, я просто хочу, чтобы хранилище служило резервной копией. Я фанат распределенной модели SCM, но мне кажется, что она немного "грязная", чтобы вызывать толчки. Любое понимание очень ценится! Заранее спасибо.