Что может привести к "отсутствующим файлам" в рабочем каталоге Mercurial, и что я должен сделать, чтобы это исправить?
Сегодня я заметил несколько файлов на моих компьютерах с Ubuntu и Mac, которые, похоже, отсутствуют в рабочем каталоге Mercurial на моем компьютере с Windows.
Я использую Mercurial для синхронизации папок между несколькими машинами.
Всякий раз, когда кто-либо улучшает какие-либо файлы в этой папке или добавляет новые файлы в эту папку, я хочу, чтобы на каждом из этих компьютеров были обновлены новые и улучшенные файлы.
Я выполнил "push", "pull" и "update" на каждом ноутбуке, чтобы синхронизировать их с сервером (и "update" на сервере), и проверил, что рабочий каталог "чистый". Поэтому я ожидал, что в каждой подпапке в рабочем каталоге должно быть как минимум одинаковое количество файлов на каждом компьютере. Но я вижу, что Mac и Ubuntu имеют дюжину файлов в одной конкретной подпапке в своем рабочем каталоге - так что, очевидно, Mercurial успешно обновил новые файлы, когда они были добавлены на один из этих компьютеров, и скопировал эти новые файлы на другой компьютер - но в этой папке Windows есть только 3 файла.
В диспетчере файлов Windows 7 "Параметры папки >> Вид" у меня включена функция "Показать скрытые файлы, папки и диски".
- На сервере Ubuntu 14 я использую TortoiseHg.
- На ноутбуке Ubuntu 14 я использую TortoiseHg.
- На ноутбуке Mac OS X я использую SourceTree.
- На ноутбуке с Windows 7 у меня была более старая версия TortoiseHg, а недавно я обновил TortoiseHg до версии 3.5.2.
- Сам репозиторий был изначально создан в 2012 году на машине, которая была перенастроена, а его жесткие диски были стерты несколько лет назад. (Вероятно, это было под управлением Windows XP).
Что я должен сделать, чтобы написать хороший отчет об ошибке с этой проблемой "отсутствующих файлов", которую я вижу?
2 ответа
Я знаю, что это старый вопрос, но, возможно, это поможет кому-то еще.
У меня была такая же проблема: файл отслеживался, но на одной машине hg pull && hg up
фактически не создавал файл на диске.
Проверка файла в обозревателе хранилища (с использованием Tortoise HG) показала, что он отслеживается, однако HG отказалась создавать настоящий файл на диске.
Решение состояло в том, чтобы сделать новый клон рассматриваемого хранилища.
Если по какой-то причине вы не можете позволить себе сделать чистый свежий клон (например, на локальную реконфигурацию большого проекта, требующую много времени), следующий обходной путь должен решить проблему:
- Закройте все приложения, которые могут работать с хранилищем, или любые отслеживаемые файлы (IDE, Tortoise HG и т. Д.).
- Из репозитория проблемы переместите
.hg
каталог в другое место. - Сделайте свежий клон репозитория в новом каталоге.
- Скопируйте
.hg
каталог из нового клонированного репозитория в старый репозиторий. - Бежать
hg up
в старом репозитории (и при необходимости измените ветку).
Это должно восстановить любые отсутствующие файлы на диске.
Удалить резервную копию .hg
каталог, который был перемещен из старого репозитория и нового клона репозитория, когда все в порядке с вашими файлами.
- Для новых добавленных файлов, вы должны вручную
hg add
файлы в репо - Для добавленных | измененных файлов у вас есть
hg commit
перед толчком - hgignore (в общем случае) - это файл, относящийся к конкретному местоположению, а не сохраненный (и не опубликованный) файл, его содержимое может отличаться, и поэтому разные файлы набора будут игнорироваться на разных хостах (
hg add
без параметров может давать разные результаты): checkhg status
для репо с уникальными файлами