Какие файлы будут изменены против добавленных, когда я делаю hg pull и hg update - PullRequest
14 голосов
/ 19 июля 2010

Так что в Subversion, когда я делаю svn up, я получаю список файлов, которые были добавлены, изменены, удалены и конфликтуют.

Когда я делаю hg pull, то hg up -v, он просто отображаетсписок: getting file.ext, но я не знаю, является ли этот файл новым или уже существовал.Есть ли способ, чтобы Mercurial отображал мета того же типа, если файл был добавлен, изменен или удален?

Предлагает ли Mercurial какую-либо возможность делать то, что я спрашиваю?

Ответы [ 4 ]

19 голосов
/ 19 июля 2010

У Omni есть ваш ответ, и я проголосовал за него, но просто чтобы показать все варианты:

Перед вытягиванием

  • hg входящий # показывает наборы изменений, которые вы получите
  • hg входящий --verbose # показывает наборы изменений, которые вы получите, включая список файлов для каждого
  • hg входящий --patch # показывает полную разницу всех наборов изменений, которые вы получите

После вытягивания (но не обновления):

  • hg log -r.: Tip # показывает полученные вами изменения
  • hg log --verbose -r.: Tip # показывает полученные вами наборы изменений, включая список файлов для каждого
  • hg log --patch -r.: Trip # показывает полные различия всех полученных наборов изменений
17 голосов
/ 20 июля 2010

Используйте команду 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: -)

6 голосов
/ 19 июля 2010

Команда hg incoming --stat делает что-то наподобие того, что вы просите. Кроме того, если вы обновляете новую ревизию, вы можете выполнить hg diff --git -r <rev>, и она даст вам diff, который показывает, какие файлы новые.

1 голос
/ 15 сентября 2010

Вы можете использовать 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
...