Разветвление путем клонирования. Нужно ли вносить изменения по умолчанию, чтобы увидеть ответвление? - PullRequest
0 голосов
/ 13 декабря 2010

Я исходил из фона CVS.

Я пытаюсь выполнить ветвление путем клонирования.

Текущее дерево по умолчанию выглядит так из hello проекта.alt text


  1. Я пытаюсь клонировать проект из 'hello' в 'hello-branch-by-clone'.
  2. Я внес изменения в 'hello-Разветвление по клону 'и фиксация.
  3. Я не делал никаких изменений в' hello '.
  4. Я выполняю переход от' hello-branch-by-clone 'к' hello '.

alt text

Я ожидаю увидеть ветку , но я этого не сделал.


На этот раз я пытаюсьИ наоборот.

  1. Я внес изменения в 'hello-branch-by-clone' и совершил коммит.
  2. Я сделал изменения в 'hello' и зафиксировал.
  3. Мне нужно перейти от 'hello' к 'hello-branch-by-clone' и объединить.
  4. Я выполняю push от 'hello-branch-by-clone' к 'hello'.

На этот раз только тогда я смогу увидеть ветку alt text


Применяя технику клонирования, есть ли способ получить представление ветки , без явного изменения репозитория по умолчанию (hello)

1 Ответ

1 голос
/ 14 декабря 2010

Нет форка, потому что нет двух ревизий, разделяющих родителя.

Клонированный репозиторий не является чем-то особенным. Это идентично оригиналу. Коммиты для него идентичны коммитам в исходном репо. Они не помечены как ветки. Клон - это просто хороший способ иметь другую рабочую область, в которой вы можете выполнять некоторую работу (включая коммиты), не влияя на оригинал.

Разветвление происходит, когда два или более коммитов имеют одного и того же родителя. Часто это происходит при использовании клонов, но может и не быть. Если есть только одна ревизия с одним и тем же родителем, разветвления нет.

После вашей первой последовательности вы ввели только один набор изменений (4), который имеет старый наконечник (3) в качестве родителя, так что это все еще прямая линия. Только когда вы введете второй набор изменений, заключенный в (3), вы увидите вилку.

Теперь запомните, даже если вы «отодвинули» набор изменений обратно, а исходное репо «Hello» содержит все 4 набора изменений, его рабочий каталог по-прежнему указывает на набор изменений (3). Так будет до тех пор, пока вы не запустите «hg update» внутри него. Это означает, что если вы сделаете коммит в «Hello», он будет основан на (3), а затем появится форк. Неважно, когда этот коммит сделан.

Это то, что вы сделали во второй последовательности.

Надеюсь, это поможет.


Я пытался использовать термин «вилка» в этом, потому что «ветвь» имеет много значений, включая команду «hg branch», которая делает несколько другие вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...