TortoiseHg слияние локального с заголовком ветки

#mercurial #tortoisehg

#mercurial #tortoisehg

Вопрос:

У меня есть репозиторий в TortoiseHg с одной веткой (разработка следующей версии), но изменения в локальной (исправления ошибок) … что-то вроде…

Локальное 0-------3--4
 
Ветка 1--2

Я хочу еще немного доработать версию ветки, но с последующими локальными изменениями, объединенными в нее. И я хочу оставить локальную версию в состоянии, в котором я могу продолжить разработку без изменения ветки.

Я не уверен, действительно ли то, о чем я спрашиваю, возможно, или исходящее из среды Visual SourceSafe просто затуманивает мою способность видеть то, что должно быть очевидным.

На самом деле, подумав об этом немного больше (как я писал выше) Мне интересно, является ли мой подход неправильным. Вероятно, мне следовало продолжить дальнейшую разработку в локальной версии, а затем создать ветку с исправлением ошибок, которую я мог бы объединить обратно в локальную.

Итак, вопрос в том, есть ли способ обойти то, что я хочу сделать с текущей настройкой репозитория, или я должен экспортировать отдельные ревизии и перестроить репозиторий с нуля? (Или любые другие варианты?)

Комментарии:

1. Что такое Local и Branch с точки зрения Mercurial ? Для меня это явно нечисто. Просто покажите hg glog

2. Спасибо за ответ. Я никогда не использовал Mercurial напрямую (всегда использовал TortoiseHg, никогда не запускал командную строку), поэтому я не могу сказать наверняка. Под «локальным» я имею в виду исходную временную линию обязательств… однако, учитывая отсутствие у меня опыта работы с Mercurial / TortoiseHg, я мог бы нести чушь

3. Не мусор, но не в правильном техническом термине. Что я хочу исправить для понимания проблемы . Откройте THG explorer, выберите свой проект в реестре репозитория, щелкните по нему — Terminal. hg glog или hg log , если 1-й не работает

4. Я думаю, что моя главная терминологическая ошибка заключалась в том, чтобы назвать его «локальным», когда его фактическое имя в репозитории «по умолчанию». Все равно спасибо за вашу помощь

Ответ №1:

Мне кажется, что это довольно обычная обработка Mercurial.

У вас есть:

  1. Две ветки
  2. Хотите убедиться, что в одной из двух ветвей есть все обновления другой
  3. Хотите убедиться, что в другой ветке нет никаких обновлений с первой (пока)

По сути, вам просто нужно регулярно объединять Local ветку с Branch веткой, но не наоборот.

Всякий раз, когда вы объединяетесь с веткой, вы сначала обновляете заголовок этой ветки. Это делает набор изменений, который вы фиксируете, чтобы сохранить это слияние, также в этой ветке.

Другими словами, вы бы сделали это:

  1. Обновление заголовка Branch
  2. Щелкните правой кнопкой мыши на заголовке Local и выберите «Объединить с локальным …» и выполните слияние
  3. После фиксации этот новый набор изменений оказывается в Branch ветке

Local Ветка все еще находится в блаженном неведении об изменениях в Branch ветке.

Комментарии:

1. Спасибо за отличный ответ, Лассе, и я согласен, что это Mercurial 101. Просто для того, кто привык к Visual SourceSafe за последние 12 лет, даже Mercurial 101 довольно умопомрачительный. Ваш ответ точен, и после игры с клоном я могу точно видеть, что происходит.

2. Лучший совет, который я могу дать относительно Mercurial, заключается в том, что если вы не уверены, что то, что вы собираетесь сделать, будет иметь желаемый эффект, создайте полную копию вашей рабочей папки, включая папку .hg и все остальное. Затем экспериментируйте, сходите с ума.