Какие файлы будут изменены или добавлены, когда я сделаю hg pull и hg update
Итак, в Subversion, когда я делаю svn up
, я получаю список файлов, которые были добавлены, изменены, удалены и конфликтуют.
Когда я делаю hg pull
, а затем hg up -v
, он просто отображает список: getting file.ext
, но я не знаю, является ли этот файл новым или уже существует. Есть ли способ, чтобы Mercurial отображал такую же информацию о том, был ли добавлен, изменен или удален файл?
Предлагает ли Mercurial любую способность делать то, что я прошу?
Ответы
Ответ 1
Используйте команду status для отображения изменений в статусе файла между рабочей копией и родительской версией или между любыми двумя версиями. Это дает вам вывод следующим образом:
$ hg status --rev .:tip
M hgext/keyword.py
M mercurial/cmdutil.py
M mercurial/commands.py
M mercurial/context.py
M mercurial/patch.py
A tests/test-encoding-align
A tests/test-encoding-align.out
который соответствует этому обновлению:
$ hg update -v
resolving manifests
getting hgext/keyword.py
getting mercurial/cmdutil.py
getting mercurial/commands.py
getting mercurial/context.py
getting mercurial/patch.py
getting tests/test-encoding-align
getting tests/test-encoding-align.out
7 files updated, 0 files merged, 0 files removed, 0 files unresolved
Изменить: Вы можете создать привязку preupdate
, чтобы всегда получать эту информацию как часть ваших обновлений. Я случайно оказался на Windows, и вот этот крюк работает:
[hooks]
preupdate = hg status --rev .:%HG_PARENT1%
Замените %HG_PARENT1%
на $HG_PARENT1
на Unix-подобных системах. Это должно сделать Mercurial еще более похожим на Subversion: -)
Ответ 2
У Omni есть свой ответ, и я проголосовал за него, но просто чтобы показать все варианты:
Перед тем, как потянуть
- hg incoming # показывает изменения, которые вы получите
- hg incoming --verbose # показывает изменения, которые вы получите, включая список файлов для каждого
- hg incoming --patch # показывает полный разброс всех наборов изменений, которые вы будете получать
Потянув (но не обновляя):
- hg log -r.: tip # показывает изменения, которые вы получили.
- hg log --verbose -r.: tip # показывает внесенные вами изменения, включая список файлов для каждого
- hg log --patch -r.: trip # показывает полный разброс всех наборов изменений, которые вы получили.
Ответ 3
Команда hg incoming --stat
делает что-то вроде того, что вы просите. Кроме того, если вы обновляете новую версию, вы можете сделать hg diff --git -r <rev>
, и она даст вам diff, который показывает, какие файлы являются новыми.
Ответ 4
Вы можете использовать hg incoming
с пакетами, чтобы применить ответ Мартина к изменениям, которые вы еще не сделали.
> cd myrepo
# Get the latest revision in my copy
> hg tip
changeset: 17:5005ce2dc418
.
.
.
# Get a bundle file of changes, but don't put them in myrepo yet
> hg incoming --bundle changes.bundle
# Overlay the bundle on myrepo and do hg status as if I've already pulled
> hg -R changes.bundle status --rev 17:tip
A addedfile
M modifiedfile
.
.
.
# Changes are good! Pull from bundle
hg pull changes.bundle