Что может привести к "отсутствующим файлам" в рабочем каталоге 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 отказалась создавать настоящий файл на диске.

Решение состояло в том, чтобы сделать новый клон рассматриваемого хранилища.

Если по какой-то причине вы не можете позволить себе сделать чистый свежий клон (например, на локальную реконфигурацию большого проекта, требующую много времени), следующий обходной путь должен решить проблему:

  1. Закройте все приложения, которые могут работать с хранилищем, или любые отслеживаемые файлы (IDE, Tortoise HG и т. Д.).
  2. Из репозитория проблемы переместите .hg каталог в другое место.
  3. Сделайте свежий клон репозитория в новом каталоге.
  4. Скопируйте .hg каталог из нового клонированного репозитория в старый репозиторий.
  5. Бежать hg up в старом репозитории (и при необходимости измените ветку).

Это должно восстановить любые отсутствующие файлы на диске.

Удалить резервную копию .hg каталог, который был перемещен из старого репозитория и нового клона репозитория, когда все в порядке с вашими файлами.

  • Для новых добавленных файлов, вы должны вручную hg add файлы в репо
  • Для добавленных | измененных файлов у вас есть hg commit перед толчком
  • hgignore (в общем случае) - это файл, относящийся к конкретному местоположению, а не сохраненный (и не опубликованный) файл, его содержимое может отличаться, и поэтому разные файлы набора будут игнорироваться на разных хостах ( hg add без параметров может давать разные результаты): check hg status для репо с уникальными файлами
Другие вопросы по тегам