Таким образом, прямо сейчас я изучаю Ruby on Rails, и я работаю через книгу "Гибкая веб-разработка с направляющими". Я также решил, что хочу дать Подвижный движение, потому что я читал на распределенном SCM's, и он походит на идеальную ситуацию. Я все еще, однако, предпочитаю продвигать свой код удаленно к моему VPS Linux, просто упаковывают мой жесткий диск, решает прыгнуть в воду.
Так, мой вопрос характерен для ветвления в Подвижном. Прямо сейчас мне открыли удаленный репозиторий, и я могу продвинуть, переключает 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
После того как я выполняю оператор нажатия, я получаю это сообщение от Подвижного:
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, все кажется прекрасным, и даже веб-интерфейс показывает соответствующие ответвления.
Таким образом, мой вопрос прост: я делаю это правильный путь? Существует ли более соответствующий способ сделать это с Подвижным (т.е. "Подвижный путь")? Честно я просто хочу, чтобы репозиторий служил резервным копированием. Я - поклонник распределенной модели SCM, но мне это чувствует вид "грязных" для принуждения нажатий. Любое понимание значительно ценится!Заранее спасибо.
push -f
- правильный вариант для вашего случая, и в прошлом месяце обсуждалось добавление этой команды, когда появляется предупреждение « push создает новую удаленную ветку
» : см. выпуск 1513 .
Однако в выпуске 1974 г. (в этом месяце) упоминаются некоторые нежелательные эффекты (но не в вашем случае).
См. Эту переведенную статью , чтобы узнать больше о создании второй головы в удаленном репо.
В более общем плане вы можете использовать ветвь, если вы пишете свою главу параллельно, и вы хотите объединить их только в определенный (стабильный) момент времени
Но если ваш процесс написания более линейный, вы можно было использовать только одну ветку и по ходу ставить несколько тегов.
Однако, если вы вернетесь к главе 10 и добавите несколько строк, даже если вы уже разместили теги 11 и 12, это затруднит чтение истории. Так что ветки в этом случае по-прежнему являются хорошей идеей.
Я не знаю о вашей конкретной проблеме, но из ваших комментариев, похоже, вы используете филиалы, где вы, вероятно, хотели использовать теги.
Филиалы обычно используются, когда многие люди сотрудничают в том же проекте, и вы хотите создать разделение работы, чтобы один человек мог работать на стабильном кусочке кода, а другой делает что-то экспериментальное, что временно разбивает функциональность. В качестве альтернативы ветви используются для стабилизации для выпуска, в то время как развитие происходит в багажнике.
Теги (или этикетки) используются для в первую очередь создания маркера, обозначающей важное значение для версии кода. Как например, если вы хотите отметить завершение главы 10, вы просто пометите все текущие версии с тегом «Глава-10». Нет необходимости ветви. Вы можете отразить от помеченной версии в любой момент в будущем, если по какой-то причине вам необходимо.
В этом случае я чувствую, что это вполне нормально для использования -F для нажатия. Это просто создает новые филиалы, а не головы. Создание удаленных головок - это другое дело целиком.