Как ускорить принудительное автоматическое разрешение?

Я хотел бы знать, как ускорить принудительное автоматическое разрешение при интеграции (объединить ваши и их, если нет конфликтов).

В настоящее время требуется несколько часов для ~ 5000 файлов при запуске с использованием прокси-сервера, даже если на прокси-сервере файлы предварительно кэшированы.

Также интерфейс p4v не дает никаких подсказок относительно хода выполнения задачи, вы не знаете, завершится ли она через секунду или в следующем году.


person sorin    schedule 29.01.2010    source источник
comment
Автоматическое разрешение (без слияния) — простейший из возможных алгоритмов, так почему же он такой МЕДЛЕННЫЙ?! Я думаю, проблема в том, что Perforce делает все по сети, поэтому он делает 5000 запросов последовательно или что-то глупое.   -  person Colonel Panic    schedule 18.06.2014
comment
Также интерфейс p4v не дает никаких подсказок относительно хода выполнения задачи, вы не знаете, завершится ли она через секунду или в следующем году. Бред какой то. Мое диалоговое окно слияния ясно показывает, что оно завершено на 100%, и так было в течение последнего часа.   -  person vargonian    schedule 20.07.2018


Ответы (4)


5000 файлов — это не так уж много для сервера средней мощности.

Ваши файлы имеют значительный размер в бинарном виде? если ваши 5000 файлов являются двоичными, авторазрешение будет проверять их контрольную сумму на локальном жестком диске для сравнения с контрольной суммой на сервере (а не на прокси-сервере, который просто передает вам информацию или файлы), и это может замедлить работу.

Если вы заранее знаете, что пытаетесь выполнить одностороннее решение (съесть свое на жестком диске или съесть чужое с сервера), вы можете используйте параметры "принять ваши" или "принять их" для автоматического разрешения и пропустить операцию контрольной суммы. В командной строке это будет «p4 resolve» с опцией «-ay» или «-at» соответственно.

Вы также можете связаться с администратором perforce db и попросить его зарегистрировать действия сервера. Возможно, когда вы выполняете интеграцию и разрешение, выполняются действия, которые удерживают блокировки файлов, заставляя вас вращаться и ждать, пока блокировки не будут сняты. См. ссылку на 'монитор p4 show -a '.

Например, в нашем офисе обычно в понедельник утром все в офисе интегрируются в свои частные филиалы и решают проблемы.

person Epu    schedule 20.03.2010
comment
В любом случае контрольная сумма нескольких гигабайт данных каждый раз небыстра. Есть ли способ заставить принудительно использовать только время модификации файлов? В 99,999% случаев файлы не изменяются без изменения их даты/времени. - person sorin; 20.03.2010
comment
У Perforce нет простого способа сделать это. Если вы не хотите обнаруживать изменения и просто используете время изменения файла, чтобы определить, следует ли их автоматически разрешать, вам придется написать сценарий или что-то запрограммировать, чтобы получить представление базы данных perforce о том, когда файл был отправлен по сравнению со временем модификации файла. на вашем жестком диске. Значение modtime вашего клиентского рабочего пространства также может изменить время модификации синхронизированных файлов, поэтому будьте осторожны, если пойдете по этому пути. - person Epu; 30.03.2010

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

Я предполагаю, что существуют некоторые затраты на передачу туда и обратно для каждого файла, поскольку общее время разрешения довольно постоянно, независимо от того, разбиваю ли я команду на отдельные команды разрешения для каждого файла, группирую ли их по группам файлов или разрешаю весь список изменений. В моем случае накладные расходы составляют около 1 секунды на файл для > 10 тыс. файлов.

В настоящее время я работаю над этой проблемой, войдя в виртуальную машину, расположенную вместе с удаленным сервером, и выполняя решение оттуда. Затем вы можете отправить с виртуальной машины, а затем нормально синхронизироваться. Поскольку мне нужно сначала запустить тесты локально перед отправкой, я откладываю файлы на виртуальную машину, а затем удаляю их из полки на своей локальной машине. Это тоже не очень быстро, но кажется лучше.

Таким образом, это не решение проблемы, а жизнеспособный обходной путь в моем случае, который экономит часы.

person user2977198    schedule 14.08.2014

Я думаю, вы могли бы выполнить решение из командной строки, что могло бы дать вам некоторое представление о том, что оно все еще продолжается, и не заблокировало бы вас от другой работы в P4V.

person Douglas Leeder    schedule 30.01.2010

Если вы заранее знаете, что это наверняка будет односторонним решением, возможно, вы могли бы попытаться заставить принять «их» или «вашу» версию. См. «p4 help resolve» из командной строки, в частности, опции «-at» и «-ay».

Я не знаю наверняка, принесет ли это какое-либо преимущество в производительности или нет, но достаточно просто попробовать его (и провести некоторые тесты).

person rjnilsson    schedule 05.02.2010