Abort: untracked file в рабочем каталоге отличается от файла в запрошенной версии: '.hgignore'
Я пытаюсь вытащить некоторые файлы и каталоги, и у меня есть следующие сообщения:
Когда я смотрю в своем репозитории, я вижу, что файлы были загружены, но все они содержат _
в качестве префикса, и даже имена файлов и папок содержат _
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]
Что не так?
Ответы
Ответ 1
Я думаю, что вы создали .hgignore
в своем рабочем каталоге, не добавляя его в репозиторий (hg add
). Этот файл "не проверен".
Кто-то другой, из другого клона, тоже добавил этот файл, зафиксировал и нажал его. Теперь, когда вы пытаетесь обновить свой рабочий каталог, Mercurial попытается добавить этот файл, но видит файл с тем же именем в вашем рабочем каталоге, который не отслеживается и отличается.
Есть два решения вашей проблемы:
- Резервное копирование файла .hgignore, обновление и добавление отличий от резервной копии при необходимости
- Добавьте свой собственный файл в репозиторий с помощью
hg add
, а затем заново запустите обновление. Возможно, потребуется зафиксировать файл до обновления.
Я советую использовать первое решение.
Ответ 2
Когда вы говорите, что файлы в репозитории имеют _
в качестве префикса, вы смотрите вниз в каталог .hg
, не так ли? То, что хранилище данных для самого Mercurial и файлов там - revlogs, а не ваши файлы. Вне .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 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.