Mercurial говорит: "abort: выдающиеся незафиксированные изменения", я не хочу совершать
сценарий: локальное РЕПО, прежде чем я выйду из офиса
$ hg status
M important/update1
M another/important/update2
M work/in/progress
Я хочу, чтобы commit и push важно/обновление 1 и важно/обновление 2, потому что я хочу вытащить эти файлы в мое локальное РЕПО, когда я вернусь домой. Я не готов совершитьработа/в/прогресс. На самом деле он даже не разбирается правильно. Этот файл открывается в моей IDE и я просто хочу оставить все как есть.
Теперь я делаю: (поспешно, трамвай уходит в три минут)
$ hg commit important/update1 another/important/update2
$ hg push
pushing to https://**censored**
searching for changes
abort: push creates new remote heads on branch 'default'!
(did you forget to merge? use push -f to force)
Ok. Коллега что-то подтолкнул... (трамвай отправляется через две минуты...)
$ hg pull (really important update!)
$ hg update
abort: outstanding uncommitted changes
хрень. Мне нужно обновление коллег, но я не собираюсь совершать работа/в/прогресс, гораздо меньше толкать его! И я опоздал на трамвай...
как вы справляетесь с этим?
5 ответов
использовать расширение чердаке временно отложить / сохранить незавершенное производство.
Если вы не хотите использовать shelve, вы можете сделать это всего с 3 командами:
hg diff > mylocalchanges.txt
hg revert -a
# Do your merge here, once you are done, import back your local mods
hg import --no-commit mylocalchanges.txt
рабочий процесс для людей, разрабатывающих несколько функций / исправлений ошибок одновременно:
одной из возможностей было бы клонировать столько репозиториев, сколько вы разрабатываете. Но это может быть дорого в дисковом пространстве, времени, а также запутанным. Другая возможность-работать над другой темой в одном локальном репозитории (назовем его Main), но использовать только второй выборочно зафиксировать одну или несколько желаемых функций в центре хранилище.
Это очень хорошо объяснено и описано в этой статье:
https://blogs.oracle.com/tor/entry/mercurial_tip_checking_in_regularly
Если вы когда-либо сталкиваетесь со следующими сообщениями об ошибках:
- "abort: push создает новые удаленные головки!"(потенциальные множественные головы)
- "abort: пересекает ветви (используйте' HG merge ' или 'HG update-C') "(рабочий каталог в другой ветви, чем вытащенные изменения), или
- " abort: выдающиеся незафиксированные изменения "(невозможно объединить из-за локальных изменений)
статья выше объясняет, почему все это происходит, и предлагает рабочий процесс, чтобы избежать этих проблем. Примечание: также можно использовать mqueues механизма патч, чтобы подтолкнуть изменения (см. комментарий#1 этой статьи).
надеюсь, это поможет.
Я обычно использую расширение полки TortoiseHg, который вы также можете активировать для использования на вашем cmdline:
[extensions]
tortoisehg.util.hgshelve =
Теперь вы можете использовать команды:
$ hg shelve
Если вы знаете, что обновление не будет мешать нашей работе, вы также можете заставить pull / update (hg pull -f
).
Если вы нажимаете просто, чтобы предоставить код сети, чтобы вы могли тянуть и продолжать работать дома, я не знаю, что ваш коллега должен нажимать на то же самое РЕПО. Вы можете рассмотреть возможность использования репозитория разработчика: РЕПО для вашего личного использования (либо по разрешениям, либо просто по принуждению/вежливости).
определенная программа (например,печь FogCreek SW) предоставьте эту возможность, но даже если вы просто храните репозитории на сетевом / общем диске, вы должны быть возможность создания личного РЕПО есть.
Если это не так (т. е. у вас нет разрешений сервера), вы также можете рассмотреть возможность использования именованной ветви. В этом случае вы просто фиксируете свою именованную ветвь и нажимаете эту ветвь на сервер. Предположительно, ваш коллега оставит ваши названные ветви в покое, и не будет ничего нового, чтобы вытащить и объединить. С точки зрения "беспорядка ветвей", да, они присутствуют на протяжении всего срока действия РЕПО, но закрытие названной ветви непосредственно перед слияние удалит их из вашего поля зрения и решит некоторые проблемы.
> hg update <branch name>
> hg commit --close-branch -m 'closing branch <branch name>'
в конце концов, я не считаю беспорядок в филиалах серьезной проблемой, если у вас (а) есть гигантская команда или (б) не закрывают ваши филиалы.