Подтвердить что ты не робот

Сообщение Mercurial о перемещенных файлах после крупной реорганизации

Недавно мы реорганизовали очень неорганизованный сайт на нашем сервере. Этот сайт контролируется версиями с использованием Mercurial. Мы все реорганизовали. Тысячи файлов. Теперь, когда я делаю hg status, он показывает тонну новых невоспроизводимых файлов, представленных ? и тонны отсутствующих файлов, которые являются теми же файлами, что и необработанные, представленными !.

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

4b9b3361

Ответ 1

Используйте hg addremove. Вы не можете просто перемещать файлы и ожидать, что Mercurial узнает об этом - если вы перемещаете отслеживаемые файлы, используйте hg mv.

Ответ 2

Вы можете использовать hg mv --after для обозначения того, что вы уже перенесли файл.

Ответ 3

hg addremove будет обнаруживать переименовывания после факта, если файлы по умолчанию похожи на 100%, а порог подобия можно переопределить с помощью -s.

Кроме того, при использовании TortoiseHg thg guess появится диалоговое окно, в котором вы можете использовать слайдер для установки сходства и просмотра итоговых совпадений между добавленными и удаленными файлами, а затем выберите пары, которые вы хотите записать в качестве переименования.

Пример:

C:\>hg init test
C:\>cd test
C:\test>echo >file1
C:\test>echo ONE>file1
C:\test>echo TWO>file2
C:\test>hg ci -Am init
adding file1
adding file2

C:\test>ren file1 file3
C:\test>ren file2 file4
C:\test>hg st
! file1
! file2
? file3
? file4

C:\test>hg addrem
removing file1
removing file2
adding file3
adding file4
recording removal of file1 as rename to file3 (100% similar)
recording removal of file2 as rename to file4 (100% similar)

C:\test>hg status -C   # -C shows file copies.
A file3
  file1                # file3 copied from file1...
A file4
  file2                # file 4 copied from file2...
R file1
R file2