Я думаю, что вставка более эффективна почти во всех случаях, когда вы генерируете данные (т.е. их еще нет в списке).
Приоритетная очередь - не единственный вариант для вставки. Как уже упоминалось в других ответах, бинарное дерево (или связанное с ним RB-дерево) одинаково эффективно.
Я также проверил бы, как реализована приоритетная очередь - многие уже основаны на b-деревьях, но несколько реализаций не очень хорошо извлекают элементы (они, по сути, проходят всю очередь и ищут самую высокую приоритет).
Единственное, что вы можете сделать, - это убедиться, что вы экспортируете из известной ревизии, и записать этот номер ревизии в текстовый файл при экспорте. Команда svnversion
сообщит вам номер версии рабочего каталога. Поэтому выполните svn update
, чтобы получить последнюю версию, затем svn export
в место развертывания, затем svnversion
, перенаправив вывод в текстовый файл в том же месте. как экспорт. Номер ревизии будет ревизией на момент обновления, даже если с тех пор кто-то зафиксировал новый код.
Вы, конечно, захотите автоматизировать вышеуказанный процесс с помощью сценария оболочки или чего-то подобного.
Вы также можете выполнить обновление svn
, а затем экспорт svn
из этой локальной копии. Преимущество этого заключается в том, что Subversion будет использовать «rsync» (или любой другой алгоритм, который он использует) для обновления только тех файлов, которые были изменены. А затем вы просто экспортируете из своей локальной копии, экономя пропускную способность и сохраняя всю информацию репозитория с вашей локальной кассой.
Создайте два каталога, один для оформления заказа, а другой для экспорта, затем разверните с помощью двухэтапного процесса:
svn update /path/to/repository checkout/project
svn export checkout/project export/project
Вы можете выполнить svn info / path / to / repository
непосредственно перед (или после) экспортом, но вам придется заблокировать, чтобы убедиться, что не было сделано никаких изменений.
В качестве альтернативы можно использовать метод, описанный в вашем комментарии, и пропустить сценарий оболочки, например:
svn export /path/to/repository | grep ^Exported > revision.txt
или
svn export /path/to/repository | tail -l > revision.txt