Переименование в Git и Mercurial: точность и автоматичность - PullRequest
6 голосов
/ 11 мая 2011

У меня есть только несколько дней опыта работы с Git и Mercurial, и у меня нет большого опыта программирования.

В последние несколько дней я прочитал много постов, в которых сравниваются два.На основании прочитанного и моих тестов я получаю следующие выводы:

Переименование Git происходит на 100% автоматически, но не на 100% точно.Он полагается на алгоритм угадать переименования.Конечные пользователи не могут изменить свое решение, даже если оно совершенно неверно.

Я полагаю, что метод Git может подойти в 99% случаев, но этот 1% может вызвать головную боль.Это заставляет меня сомневаться в рефакторинге моего кода (одновременно меняя имя и содержание класса), так как я рискую потерять историю файлов, если рефакторинг слишком много.

Mercurial может быть на 100% автоматическим и на 100% точным,до тех пор, пока я всегда переименовываю / перемещаю свои материалы в Visual Studio и у меня установлен VisualHG, VisualHG должен точно и автоматически отслеживать перемещение и переименование (в настоящее время VisualHG имеет ошибку - Файл не переименовывается при перемещении его между проектами ).И конечные пользователи могут изменить свое решение, если оно делает ошибки.

Если у меня нет Visual Studio, я все еще могу использовать окно TortoiseHg «Обнаружение копий / переименований», я могу установить процент сходства, попросить Mercurial автоматически обнаруживать переименования.Если это делает ошибку, у меня есть шанс исправить это.

Правильны ли мои выводы или нет?

Ссылка:

Git and Mercurial - Сравните и сопоставьте

Ответы [ 2 ]

6 голосов
/ 11 мая 2011

Здесь вы видите объясненную разницу, но в основном вы правы.Mercurial имеет команды rename и mv, которые делают "реальное" переименование, в то время как Git's mv просто делает rm и add.Также кажется, что Mercurial может имитировать поведение Git и угадывать ваши переименования, довольно приятная особенность.Из опыта Git алгоритм обнаружения переименования часто принимает неправильные решения - особенно если вы копируете файл и немного изменяете две копии - в большинстве случаев это будет неправильно.

4 голосов
/ 11 мая 2011

Я не думаю, что способность Mercurial отследить переименования файлов почти настолько совершенна, как вам кажется, это возможно.У меня нет большого опыта работы с Git, но я хорошо разбираюсь в Mercurial, и переименование файлов, кажется, работает нормально в некоторых контекстах (hg view понимает их), если вы ничего не сделали слишком "интересно"(что, кажется, случается довольно часто).

А Git, по крайней мере, по репутации, должен позволять вам вносить изменения в историю на низком уровне, если вам нужно.

...