Основная проблема здесь в том, что ваш рабочий каталог не чистый.Mercurial предотвращает случайное перепрыгивание людей между ветками с незафиксированными изменениями, поскольку это, как правило, плохая идея.
Давайте начнем с этой первой команды:
$ hg update tip
abort: crosses branches (merge branches or use --clean to discard changes)
Это говорит вам о двух важных вещах:
- вы пытаетесь пересечь ветви
- у вас есть незафиксированные изменения
И у вас есть два варианта:
- объединить
- использовать hg update --clean, чтобы потерять ваши изменения
Итак, каковы ваши изменения?Первый шаг - запустить «hg status».Как вы говорите, «hg status» выводит много файлов с добавлением 1 или? ».Ну, эти "1" на самом деле "!"с указанием удаленных / отсутствующих файлов (получите лучший шрифт!).Вы должны дважды проверить сводку, чтобы получить вывод, подобный следующему:
parent: 15200:fa6f93befffa
patch: use more precise pattern for diff header color styling (issue3034)
branch: default
commit: 1 deleted, 1 unknown (clean) <- your changes
update: (current)
Если вы попытаетесь объединиться в этот момент, вы получите сообщение типа:
$ hg merge stable
abort: outstanding uncommitted changes (use 'hg status' to list changes)
Еслиу вас есть изменения, отличные от отсутствующих файлов, вы можете рассмотреть возможность их фиксации.
Если эти отсутствующие файлы являются вашими единственными изменениями, то, вероятно, можно отменить их:
hg revert -a
После того, как выВы сделали это, вы находитесь в состоянии, когда Mercurial позволит вам обновлять или объединять без жалоб.
Наконец, вы говорите: «hg status выводит много файлов из других проектов, так как он начинается в .. Файл Iдобавлен единственный файл, который должен быть добавлен. "Это основное недоразумение о том, как работает Mercurial.В отличие от CVS или SVN, в отношении Mercurial существует только один проект , и действия (commit / update / merge / status) работают сразу по всему дереву проекта.Подкаталоги не являются самостоятельными проектами с отдельной историей.