2010-07-23 4 views
4

Я ищу DVCS, который позволит мне использовать что-то вроде «named commit» - похожее на то, что происходит с очередями патча, но не совсем ... (я сравню только к mq и stg, так как я не знаю, каких-либо других подобных)DVCS с «named commits»

очереди патч близки, но я хотел бы, чтобы эти функции:

  • Создание нового филиала в хранилище, ветви также патч серии. (m q использует глобальные очереди очередей, git теряет stg информацию при ветвлении и ветвях с исправлениями, применяемыми в настоящее время)
  • Возможность перечислить «названные коммиты», поп и нажимать их точно так же, как патчи. (оба делают это)
  • Привязка «named commit» изменяется на обычные коммиты - так что, когда я создаю патч при обороте 1, я меняю патч на rev 3, я все равно могу проверить rev 1 и увидеть старую версию. (mq снова глобально, stg не работает с «не на какой-либо ветке», когда я возвращаюсь к старой версии)
  • То же, что и выше, действительно - возможность тегировать ревизию таким образом, что если я проверю ее, назвал коммиты "я тогда.

Есть ли что-то подобное там? Любые расширения для некоторых DVCS? Или, может быть, есть способ сделать mq или stg вести себя так, как я хочу? Какие-либо предложения?

Похоже mq, который держит его информация находится в том же репо, как и другие файлы, будут близки к тому, что мне нужно, но это вообще возможно?


Просто объяснить цель быстро: Я хочу, чтобы патчи применяются все время, но они не «часть развития». Я просто хочу, чтобы несколько конкретных функций хранились отдельно в моей собственной вилке основного репо.

+0

Это вы что искали? http://mercurial.selenic.com/wiki/Tag – msw

+0

Я мог бы использовать теги, но я должен был бы назвать их определенным образом. Если вы создаете 2 «специальные теги», тогда вставьте и удалите первый (и только тот) тегированный фиксатор в этой ветке - как я могу легко сказать, какие исправления применяются прямо сейчас, а какие нет? Хотя, я проверю, могу ли я как-то списать его в меркуриальном ...если бы это было сделано без проблем, это было бы действительно сладкое решение! Спасибо за эту идею. – viraptor

+0

Я начал недавно использовать названные ветви в mercurial для каждой функции, которую я разрабатываю, и объединить ее, когда она закончена. Только опечатки и исправления выполняются непосредственно в ветке по умолчанию. В качестве альтернативы вы также можете использовать теги, если вы ищете более легкое решение. – tux21b

ответ

1

Вы можете сделать это с помощью Mercurial, используя mq внутри своего собственного репо. Большинство команд имеют флаг --mq, который будет работать в очереди исправлений. Для начала использования hg init --mq (hg qinit также работает, но этот шаблон более ограничен, тем более, что qpush будет перегружен). Это создает репо внутри .hg/patches, которое не зависит от основного репо. Затем используйте mq, как обычно. Если вы хотите зафиксировать свою очередь исправлений, используйте hg commit --mq.

Вы также можете пометить и ввешивать флаг --mq, чтобы отслеживать разные головы. К сожалению, похоже, что расширение Bookmarks еще не поддерживает mq, что было бы неплохо, так как вам, вероятно, нужны легкие ярлыки. Однако, если бы вы захотели, вы можете настроить псевдоним для qbookmark, который просто добавляет -R .hg/patches, поэтому он работает в репозитории очереди исправлений.

Я не использовал этот экстенсивно сам, но он похож на поддержку родных Mercurial команд --mq, чтобы сделать это возможным решением для вас.

Смежные вопросы