abort: неотслеживаемый файл в рабочем каталоге отличается от файла в запрашиваемой ревизии: '.hgignore' - PullRequest
11 голосов
/ 09 марта 2011

Я пытаюсь получить некоторые файлы и каталоги, и у меня появляются следующие сообщения:

Когда я смотрю в свой репозиторий, я вижу, что файлы были загружены, но все содержат _ в качестве префикса,и даже имена файлов и папок содержат _

requesting all changes 
adding changesets 
adding manifests 
adding file changes 
added 1094 changesets with 4304 changes to 1071 files abort:
untracked file in working directory differs from file in requested revision: '.hgignore' [command interrupted]

Что не так?

Ответы [ 2 ]

9 голосов
/ 09 марта 2011

Я думаю, что вы создали .hgignore в своем рабочем каталоге, не добавляя его в репозиторий (hg add).Этот файл "не отслежен".

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

Существует два решения вашей проблемы:

  1. Сделайте резервную копию вашего файла .hgignore, выполните обновление и, если необходимо, добавьте отличия от резервной копии.
  2. Добавьте свой собственный файл в хранилище с помощью hg add, затем повторно запустите обновление.Может потребоваться зафиксировать файл перед обновлением.

Я посоветую использовать первое решение.

0 голосов
/ 09 марта 2011

Когда вы говорите, что файлы в хранилище имеют префикс _, вы заглядываете внутрь каталога .hg, не так ли?Это хранилище данных для самого Mercurial и файлы там - это журналы, а не ваши файлы.За пределами .hg у вас будет рабочий каталог, где файлы - это те файлы, которые вы ожидаете.Вы не получаете один из них сейчас, потому что hg update отказывается обновлять рабочий каталог, потому что это перезапишет ваш неподтвержденный файл .hgignore.

Какую команду точную вы выполняете?Похоже, что он выполняет hg pull, за которым следует hg update, поэтому я бы предположил, что hg clone, но если у вас уже есть .hgignore, это неправильная команда для использования.Если вместо этого вы используете hg pull -u или hg fetch, вы должны просто использовать hg pull, чтобы получить наборы изменений.Тогда вы можете:

hg add .hgignore  # add the hg ignore file you already have that's untracked
hg commit -m .hgignore  # commit the .hgignore file you just added
hg merge  # merge your new commit (.hgignore) with the changesets you just pulled down.
...