2010-02-08 15 views
7

Kiedy sklonowuję Mercurial repozytorium zwykle pokazuje pliki jako zmodyfikowane, gdy nie mają. Może się to zdarzyć, gdy wykonam następujące kroki;Mercurial pokazuje pliki zmodyfikowane niepoprawnie

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

Myślę, że to dlatego, że pliki mieli ich uprawnienia zmieniło się w procesie, więc wydaje się, że pliki są różne od hg nie faktycznie diff każdego pliku, gdy jest stosowany hg ul. Wiem, że to też może się zdarzyć w git.

jeśli robię Hg popełnić to problem znika, ale to oznacza, że ​​muszę zrobić pusty popełnić i nie jest szczególnie miłe.

Próbowałem robić różne rzeczy jak hg st --all aby uzyskać więcej informacji i to tylko pokazuje, że niektóre pliki są modyfikowane - nie wszystkie. Nie widzę wzoru.

Kiedy robię mój klon hg, który dzieje się na moim dysku sieciowym, którego użyłem, ponieważ ma kopię zapasową - nie jestem pewien, czy to może być przyczyną zmiany uprawnień pliku? Aktualnie korzystam z Ubunut 9.04.

Czy jest jakiś sposób, żeby jakoś się poprawić?

Projekt w pytaniu (chociaż jej się z innymi) jest http://bitbucket.org/d0ugal/django-bursar/overview/ jak szukam popracować na nim.

+0

Mam również ten problem, jest bardzo denerwujący i sprawia, że ​​czuję się jak Mercurial nie jest wiarygodny. – Webnet

Odpowiedz

0

Okazało się robi:

$ hg diff --git 

... wynika, że ​​uprawnienia do pliku rzeczywiście zmieniła się z 644 do 755.

ja nie szczególnie jak rozwiązania, ale udało mi się rozwiąż go, uruchamiając to (na serwerze obsługującym kod, a nie na mojej lokalnej maszynie).

find . -type f -print | xargs chmod 644 

Następnie dwa pliki wykazały one uległy zmianie od 755 do 644 (tak zaktualizowane tych indywidualnie). Na szczęście w tym przypadku było to dość łatwe, ale projekt z bardziej zróżnicowanymi uprawnieniami do pliku mógł być problemem.

myślę, że może być problem z tym, jak mój serwer jest dzielenie napęd - Muszę przyjrzeć się, że w innym miejscu, ale to służy dopasowanie międzyczasie. To musi mieć jakiś związek z zapisywaniem plików na zdalnym komputerze? Myślę, że następnym razem spróbuję zrobić klon git na samym serwerze i prace nad projektem na miejscu.

Na marginesie, chodzi o to zachowanie w FAQ na git. http://git.wiki.kernel.org/index.php/GitFaq#Why_does_git_diff_sometimes_list_a_file_that_has_no_changes.3F - Nie mogłem jednak znaleźć niczego dla mercurial.

+0

W innym projekcie sklonowałem repozytorium na moim serwerze, na którym jest hostowany kod, i wypisane poprawnie z odpowiednimi uprawnieniami. Wygląda na to, że gdzieś pomiędzy wyewidencjonowaniem a kopiowaniem na dysk sieciowy uprawnienia zostały zmienione. –

+3

Czy nie powinno to być 'hg diff --git' zamiast' hg st -git'? –

+0

Tak, dobre miejsce. –

5

Jeśli to uprawnienia, które zostały zmienione, można zobaczyć te różnice używając hg diff --git. Nie wiem, dlaczego uprawnienia zmieniały się przy kasie.

+0

Dzięki - Właśnie odkryłem, że dzięki pomocy na IRC. Sam odpowiedziałem, jak rozwiązałem problem - nie jest idealny, ale mogę teraz wrócić do pracy! –

Powiązane problemy