Mercurial: обновление вилки с изменениями из главного репозитория - PullRequest
3 голосов
/ 12 марта 2012

Я слежу за этим сообщением Codeplex: обновление вилки с изменениями из главного репозитория , но мне кажется, что это не работает для меня.Поскольку я новичок в Mercurial, я могу что-то упустить ..

Сценарий

Вот URL-адреса основного репозитория и моего форка.Я создал форк из основного хранилища несколько месяцев назад.

Проблема

Я могуНе обновлять мой форк с изменениями из главного репозитория.

Предпринятые шаги

Вот шаги, которые я пытался сделать, но это не сработало.

PS C:\michael sync\git\nuget> hg clone https://hg.codeplex.com/forks/michaelsync/msyncwillmakeyoubetter
destination directory: msyncwillmakeyoubetter
requesting all changes
adding changesets
adding manifests
adding file changes
added 2231 changesets with 13584 changes to 3800 files
updating to branch default
1205 files updated, 0 files merged, 0 files removed, 0 files unresolved

PS C:\michael sync\git\nuget> cd .\msyncwillmakeyoubetter

PS C:\michael sync\git\nuget\msyncwillmakeyoubetter> hg pull https://hg.codeplex.com/nuget
pulling from https://hg.codeplex.com/nuget
searching for changes
adding changesets
adding manifests
adding file changes
added 301 changesets with 2574 changes to 838 files (+1 heads)
(run 'hg heads' to see heads)

PS C:\michael sync\git\nuget\msyncwillmakeyoubetter> hg commit -m "sync the changes from main respo to my fork"
nothing changed

PS C:\michael sync\git\nuget\msyncwillmakeyoubetter> hg push
pushing to https://hg.codeplex.com/forks/michaelsync/msyncwillmakeyoubetter
searching for changes
abort: push creates new remote branches: 1.6, 1.6.1, 1.7!
(use 'hg push --new-branch' to create new remote branches)

Чего я не понимаю, так это того, что после извлечения кода из главного репозитория ничего не изменится.Он сказал, что ничего не изменилось, когда я попытался зафиксировать.

Я проверил эти сообщения Как я могу получить изменения из "главного" репозитория в Mercurial для проекта, размещенного в коде Google? и Mercurial - как получить последние изменения изРодитель форка? , но не мог заставить его работать до сих пор.

1 Ответ

7 голосов
/ 12 марта 2012

Прежде всего, очень важно понимать, что именно делают различные команды, которые вы использовали:

  1. pull: получить изменения из репозитория, но не применяютсяотправить их в рабочую копию
  2. commit: применить изменения рабочей копии к локальному каталогу
  3. push: перенести все наборы изменений в локальном репозитории на удаленныйодин
  4. update (который вы не использовали): обновите вашу рабочую копию до определенного набора изменений из локального репозитория

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

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

Рабочая копия - это файлы, которые вы на самом делесм. в проводнике, они могут находиться в совершенно ином состоянии, чем последнее изменение в хранилище.

Итак, после того, как вы сделали pull, если вы хотите «применить» изменения к вашей рабочей копииВы должны сделать update, Альтернативно, вы также можете du hg pull -u.Если вы внесли некоторые изменения с момента последнего pull, вам может потребоваться merge вместо обновления, если вы посмотрите на документацию, на которую вы ссылались, они делают merge (шаг 3).

Если update был успешным, нет необходимости делать commit, изменения уже есть в вашем локальном хранилище.Если вам нужно было сделать merge, commit потребуется для подтверждения внесенных вами изменений.

Относительно части push вы создаете новые ветви, выполняя действия, указанные всообщение об ошибке.По умолчанию Mercurial не продвигает наборы изменений, создавая новые ветви, вы должны использовать указанную команду: hg push --new-branch или выдвинуть ветку специально hg push mybranch

Надеюсь, мои объяснения достаточно ясны, в противном случае не стесняйтесь комментировать,Я также рекомендую вам прочитать руководство по Mercurial, например, следующее: http://hginit.com/

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