Очень медленный перенос Mercurial через сетевой ресурс в Windows

625
jez

TortoiseHG требуется около 15 минут, чтобы выполнить загрузку из репозитория на моем локальном жестком диске (где .hg каталог содержит 532 файла общим объемом 110 МБ) в пустой репозиторий на моем сетевом диске.

Тем не менее, если я просто использую проводник Windows для копирования и вставки того же .hg каталога (532 файла, 110 МБ) на тот же сетевой диск, это займет от 30 секунд до 1 минуты.

Почему это замедление в 10-30 раз? Могу ли я избежать этого? (т.е. Mercurial делает что-то ненужное, чего я могу избежать с помощью соответствующих параметров командной строки?)

Обновление: оно достаточно медленное, что негативно влияет на наш рабочий процесс. И тот же толчок из одного места в другое на локальном HD быстрый (несколько секунд, а не минут). Это означает, что на самом деле было бы намного быстрее скопировать весь удаленный .hgкаталог во временную папку на локальном диске, нажать на него, а затем скопировать обратно на сетевой диск. Прежде чем я расскажу о реализации этого неуклюжего обходного пути ... наверняка есть лучший?

[Подробно: я использую командную строку hg.exeиз TortoiseHG 3.4.1 в Windows 7, а сетевой диск - Apple TimeCapsule. Я получаю к нему доступ через программное обеспечение Агента Базовой Станции Аэропорта, которое создает вид обычного (то есть samba-подобного) сетевого диска. Диск монтируется как Z:\, и поэтому defaultпуть, указанный в, hgrcначинается с Z:\, так что, насколько известно Mercurial, передача происходит из одного «локального» местоположения в другое, то есть не через http или ssh. Такое же замедление происходит, если я использую полный путь UNC \\Like\this\...вместо Z:\...]

2
(Предполагая, что вы беспокоитесь о первом толчке ..) Думаю, вопрос в том, почему вы думаете, что это медленно? Есть ли у вас опыт работы с ртутными, мерзавскими, ископаемыми или другими подобными системами, работающими быстрее? Это нормально, что синхронизация системы контроля версий медленнее, чем прямое копирование файла. Копия файла является прямой копией файловой системы. Mercurial push / pull - это уровень контроля источника над файловой системой, который будет проверять и выбирать только необходимую ветку (например, master) и ее объекты. Другой вопрос может быть в 10 раз медленнее; за то, что это стоит, я не думаю, что это проблема. jehad 7 лет назад 0
Нет, я думаю, что есть настоящая проблема. Я только что попробовал один и тот же push с одного места на локальном жестком диске на другой: это занимает несколько секунд, а не минут. Это означает, что на самом деле было бы более эффективно: (1) скопировать полный удаленный файл .hg с сетевого диска во временную папку на локальном диске, (2) выполнить передачу с локального HD на локальный HD, (3) скопировать полный (и теперь дополненный) временный локальный .hg обратно на удаленный сетевой диск. Это указывает на то, что Mercurial обрабатывает сетевое хранилище очень неэффективно. Может быть, определенные ключи командной строки помогут? jez 7 лет назад 0

0 ответов на вопрос