#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.
У вас есть:
- Две ветки
- Хотите убедиться, что в одной из двух ветвей есть все обновления другой
- Хотите убедиться, что в другой ветке нет никаких обновлений с первой (пока)
По сути, вам просто нужно регулярно объединять Local
ветку с Branch
веткой, но не наоборот.
Всякий раз, когда вы объединяетесь с веткой, вы сначала обновляете заголовок этой ветки. Это делает набор изменений, который вы фиксируете, чтобы сохранить это слияние, также в этой ветке.
Другими словами, вы бы сделали это:
- Обновление заголовка
Branch
- Щелкните правой кнопкой мыши на заголовке
Local
и выберите «Объединить с локальным …» и выполните слияние - После фиксации этот новый набор изменений оказывается в
Branch
ветке
Local
Ветка все еще находится в блаженном неведении об изменениях в Branch
ветке.
Комментарии:
1. Спасибо за отличный ответ, Лассе, и я согласен, что это Mercurial 101. Просто для того, кто привык к Visual SourceSafe за последние 12 лет, даже Mercurial 101 довольно умопомрачительный. Ваш ответ точен, и после игры с клоном я могу точно видеть, что происходит.
2. Лучший совет, который я могу дать относительно Mercurial, заключается в том, что если вы не уверены, что то, что вы собираетесь сделать, будет иметь желаемый эффект, создайте полную копию вашей рабочей папки, включая папку .hg и все остальное. Затем экспериментируйте, сходите с ума.