2015-09-21 3 views
0

Отказ от ответственности. Я разрешаю открытому вопросу, но моя медленная проблема ветвления была вызвана перегрузкой сервера. Так что это не обычное поведение Perforce. Теперь я беру около 30 секунд, чтобы разветвить файлы 10K.Как эффективно работать с потоком задач?

Я новый пользователь Perforce 2014. Я создал потоковое хранилище и поместил унаследованное приложение (около 10 000 файлов cpp) в ветку разработки. Это было относительно быстро для первоначального импорта, около 1 часа для загрузки всего.

Теперь я хочу создать «легкий» поток задач для работы над новой функцией. Я использую задачу по умолчанию меню> новый поток> тип задачи ... Я выбираю «файл филиала из родительского потока при создании потока»

К моему удивлению, для создания новой задачи требуется возраст (около 1 часа), потому что это разветвление каждого файла. Я ожидаю, что процесс будет почти мгновенным, исходя из других инструментов SCM. (Мерзавец, SVN, ...)

Теперь мой вопрос:

  • это ожидаемое поведение?
  • В качестве альтернативы, есть ли способ создать быстрее задачу и только развернуть файл, который я намерен изменить?

ответ

2

Создание нового потока задач из 10 тыс. Файлов ДОЛЖНЫ быть очень быстрой операцией (порядка секунды или двух?), Поскольку фактическое содержимое файла не передается, если вы начинаете с синхронизированной рабочей области. Если вы создаете совершенно новое рабочее пространство для нового потока, то часть создания нового рабочего пространства будет синхронизировать файлы; Я ожидаю, что это займет примерно столько же времени, сколько было сделано, так как он переносит столько же данных.

Убедитесь, что при создании нового потока вы не создаете новое рабочее пространство. В визуальном клиенте есть возможность «создать рабочее пространство»; убедитесь, что снимите этот флажок, или он создаст новое рабочее пространство, а затем синхронизирует его, а это часть, которая займет час.

из командной строки, начиная с рабочего пространства // Поток/родитель, вот что вам нужно сделать, чтобы сделать новый поток задач:

p4 stream -t task -P //stream/parent //stream/mynewtask01 
p4 populate -r -S //stream/mynewtask01 
p4 client -s -S //stream/mynewtask01 
p4 sync 

«поток» и «клиент» команды Дон Фактически я работаю над любыми файлами, поэтому они будут очень быстрыми, несмотря ни на что. «Заполнение» будет разворачивать все 10k-файлы, но делает это на обратной стороне, фактически не перемещая какой-либо контент, так что это также будет очень быстро (если вы встанете на миллионы или миллиарды, это может занять заметное количество время в зависимости от серверного оборудования, но 10k ничего). «Синхронизация» будет очень быстрой, если вы уже синхронизированы с // потоком/родителем, потому что все файлы уже есть; опять же, это просто перемещение указателей на стороне сервера, а не передача содержимого файла.

+0

Это определенно проблема с командой populate, а не с синхронизацией. Обычно синхронизация составляет 1 или 2 минуты. На данный момент я нашел обходной путь, и продолжу расследование. Спасибо, что позволил мне сейчас, это не обычное поведение. –

+0

Первое, что я проверил бы, - это предварительно представить триггеры, если они есть, - заполнение должно быть действительно быстрым, но оно срабатывает триггерами, и если у вас есть, скажем, контролер кода, который срабатывает как триггер, то это вероятно, вытаскивая все файлы для запуска своих тестов, прежде чем он позволит продолжить заполнение. Другие вещи, которые можно проверить, могут быть необычными параметрами типа файла, например, + S (что приводит к физическому копированию) или + k (что вынуждает переваривание дайджеста). –

+0

Теперь я понял, что синхронизация была выполнена локально с пограничным сервером, а ветвь/заполнение - на главном сервере. Возможно, главный сервер был перегружен, что объясняет, почему ветвление было медленным, а другая синхронизация была довольно быстрой. –

0

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

задач по умолчанию создаются с помощью следующего «вида потока»

share ... 

я заменил его

import ... 
share /directory/I/actually/want/to/modify/... 

Так я пропускаю разветвление большую часть файла, и он работает нормально.

Смежные вопросы