Mercurial показывает файлы как неправильно модифицированные - PullRequest
7 голосов
/ 08 февраля 2010

Когда я клонирую репозиторий Mercurial, он обычно показывает, что файлы были изменены, если они не были изменены. Это может произойти, когда я делаю следующие шаги:

$ hg clone <url>
$ cd project
$ hg st
.... large number of files with M at the start for modified
$ hg diff
.... no result.

Я думаю, это связано с тем, что права доступа к файлам в процессе были изменены, поэтому кажется, что файлы отличаются, поскольку hg фактически не делает diff для каждого файла при использовании hg st. Я знаю, что это может случиться и в Git.

если я сделаю коммит hg, то проблема исчезнет, ​​но это означает, что я должен сделать пустой коммит, а это не особенно хорошо.

Я пытался делать разные вещи, такие как hg st --all, чтобы получить больше информации, и он показывает только то, что некоторые файлы изменены - не все. Я не вижу узора.

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

Есть ли способ, которым я могу заставить hg st как-то себя исправить?

Рассматриваемый проект (хотя и с другими) это http://bitbucket.org/d0ugal/django-bursar/overview/, так как я собираюсь поработать над ним.

Ответы [ 2 ]

5 голосов
/ 08 февраля 2010

Если изменились разрешения, вы можете увидеть эти различия, используя hg diff --git. Я не уверен, почему разрешения будут меняться при оформлении заказа.

0 голосов
/ 08 февраля 2010

Как оказалось делает:

$ hg diff --git

... показывает, что права доступа к файлам действительно изменились с 644 до 755.

Мне не особо нравится решение, но я смог решить его, запустив его (на сервере, на котором размещен код, а не на моей локальной машине).

find . -type f -print | xargs chmod 644

Затем два файла показали, что они изменились с 755 до 644 (поэтому я обновил их по отдельности). К счастью, в этом случае это было довольно легко, но проект с более разнообразными правами доступа к файлам мог быть проблемой.

Я думаю, что проблема может быть связана с тем, как мой сервер использует общий доступ к диску - мне нужно разобраться с этим в другой момент, но это подходит на время. Это должно быть как-то связано с тем, как файлы сохраняются на удаленной машине? Думаю, в следующий раз я попытаюсь выполнить клон git на самом сервере и работу над проектом локально.

В качестве примечания, об этом поведении говорится в FAQ по git. http://git.wiki.kernel.org/index.php/GitFaq#Why_does_git_diff_sometimes_list_a_file_that_has_no_changes.3F - я не смог найти что-нибудь для ртути.

...