Как избежать повреждения репозитория Mercurial при совместном использовании репозитория между Windows / Mac? - PullRequest
1 голос
/ 27 мая 2010

У меня есть несколько проектов, которые разделены между Windows и Mac. Машина разработки - это Mac, на котором работает Parallels: файлы хранятся на стороне Mac, а источник - на стороне Windows. Это очень удобно, поскольку я могу быстро переключаться между инструментами Windows и Mac без синхронизации файлов.

Недавно я перешел с Subversion на Mercurial, и теперь у меня возникают проблемы с повреждением репозитория Mercurial, если я использую инструменты Windows для добавления / обновления и т. Д. Я должен быть очень осторожен с операциями на стороне Windows безопасны (в основном только для чтения), и, конечно, я регулярно забываю.

Кто-нибудь знает, почему происходит коррупция? Я думал, что хранилища Mercurial не зависят от платформы. Любые идеи, как предотвратить это, не удаляя инструменты Windows полностью?

1 Ответ

4 голосов
/ 27 мая 2010

Обе стороны Windows и OSX используют одну и ту же версию Mercurial. Mercurial обладает отличной обратной совместимостью на уровне сети и файлов, так как любая версия может выдвигать / извлекать / фиксировать в репозитории любой предыдущей версии, но она не совместима с прямой версией, поэтому, если ваша сторона Windows использует Mercurial 1.0, а ваша сторона OSX - 1,5 тогда окна не должны фиксировать клон, созданный стороной OSX.

В общем, Mercurial был создан для клонирования на пользователя на систему и имел конфликтующие действия, опосредованные через push и pull. Общие репозитории, к которым обращаются несколько клиентов для локальных действий, таких как фиксация, не рекомендуется.

Редактирование в обеих системах - это хорошо, но коммит только из OSX. На стороне Windows вы можете применить это, поместив что-то вроде этого в ваш файл% USER_PROFILE% \ Mercurial.ini:

[hooks]
pre-commit = c:\doesnotexist.exe

Этого должно быть достаточно для отказа хука, что остановит прохождение коммита.

...