Дешевое клонирование / локальное разветвление в Mercurial - PullRequest
2 голосов
/ 08 апреля 2010

Я только что начал работать с Mercurial несколько дней назад, и есть кое-что, чего я не понимаю.

У меня есть экспериментальная вещь, которую я хочу сделать, поэтому обычным делом будет клонировать мой репозиторий,работать над клоном, и если в конце концов я захочу сохранить эти изменения, я отправлю их в мой основной репозиторий.

Проблема в том, что клонирование моего репозитория занимает много времени (у нас много кода), а простая компоновка клонированной копии займет около часа.
Так что мне нужно как-то работать в другом репозитории, но все жев моей оригинальной рабочей копии.

Введите локальный филиалы .

Проблема в том, что создание локальной ветки занимает вечно, и работать с ними тоже не так уж и весело.Потому что при перемещении между локальными ветвями «не возвращаться» в целевое состояние ветки, я должен выдать hg purge (чтобы удалить файлы, которые были добавлены в перемещенную из ветви), а затем hg update -c (чтобы вернуть измененные файлы впереехал из филиала).(примечание: я попробовал форк PK11 с расширением локальной ветки, это происходит с простым созданием локальной ветки за исключением)

В конце концов, это слишком сложно.Какие у меня варианты?

Ответы [ 4 ]

5 голосов
/ 08 апреля 2010

Существует несколько способов работы с локальными ветками , кроме клонирования :

  • Закладки
  • Именованные ветви
  • Анонимные ветки

Возможно, вам будет интересно прочитать очень проницательное руководство по ветвлению в Mercurial . Я предполагаю, что расширение bookmarks является наиболее подходящим способом перехода в контексте, который вы описали.

1 голос
/ 11 апреля 2010

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

Поскольку клонирование создает жесткие ссылки, оно уже почтиэто может получить;если клонирование уже занимает 5-10 минут, создание копии файловой системы должно быть еще хуже.(Совет: имейте в виду hg clone -U, если вам не нужна рабочая копия, она будет намного быстрее.)

В противном случае, да, анонимные ветки с закладками - это обычный способ переключения на месте..

0 голосов
/ 08 апреля 2010

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

0 голосов
/ 08 апреля 2010

сколько времени занимает клонирование локального репо?

звучит так, будто процесс сборки может быть слабым звеном для меня - может быть, вам нужно что-то вроде ccache ? чтобы можно было быстро клонировать и построить

...