При работе с контролем версий история обычно выглядит как плоская цепочка изменений. Существует некоторый рудиментарный механизм организации иерархии (я имею в виду ветви), но она не кажется достаточно гибкой. Каковы распространенные практики (агенты контроля версий) для организации пересмотров в многоуровневых иерархиях и что такое специальные средства контроля версий?Как организовать ревизии в иерархиях?
Я приведу тривиальный пример реального мира из моей практики, который приведет меня к этому вопросу.
Предположим, я хочу реорганизовать метод/класс. Я создаю билет и называю его «Метод рефакторирования ClassName.method_name()». Изучив код method_name(), я делю процесс рефакторинга на подзадачи. Для простоты рассмотрим, что мне нужно переименовать две переменные с разными значениями в коде, поэтому мне нужно сделать это двумя разными атомарными шагами. Я переименовываю переменную, сохраняю изменения и фиксирую с сообщением «переименовал переменную foo в ClassName.method_name()» (потому что совершение раннего и фиксации часто является хорошим). Повторяю для второй переменной: «переименована переменная bar в ClassName.method_name()».
Теперь у меня есть один билет в системе отслеживания проблем, названный "метод Refactor ClassName.method_name()" и две версии в системе управления версиями:
- "переименовали переменную Foo в ClassName.method_name()"
- «переименовано бар переменной в ClassName.method_name()»
Где связь между вопросом и этими двумя модификациями? Я потерялся!
Моя цель состоит в том, чтобы иметь логическую иерархию, как это:
- "метод Refactor ClassName.method_name()"
- "переименованный переменную Foo в ClassName.method_name()"
- " переименованы переменная бар в ClassName.method_name()»
Ne unless сказать, что я ищу общие рабочие процессы, которые позволят создавать многоуровневые иерархии, подобные этой. Каждый элемент иерархии может быть ревизией или билетом, ситуация с билетом, фиксируемым цепочкой последовательных ревизий, является лишь частным случаем.
Это будет иметь смысл, я поклонник использования outliners и организации данных в иерархии с использованием деревьев.
Как люди делают это в управлении версиями? Существует множество инструментов управления версиями, каждый из которых имеет свои тонкости, некоторые из них позволяют включать трекеры сторонних разработчиков ошибок в репозиторий, некоторые даже имеют интегрированное отслеживание ошибок (например, fossil), поэтому, пожалуйста, подробно остановитесь на рабочих процессах для определенных инструментов управления версиями.
Спасибо, это выглядит очень гладко. Я предвижу, что этот рабочий процесс будет работать с bzr, mercurial, git и окаменелостью, по крайней мере. Но что делать с инструментами управления версиями, которые не поддерживают явное ветвление? Я имею в виду дарков. –