Итак, производительность довольно хороша, верно? Работает с бинарными файлами и большими проектами, как будто это не проблема!

Вот забавная вещь: скажем, у вас есть большой проект. Скажем, этот большой проект весит около 180 ГБ. МНОГО УДОВОЛЬСТВИЯ ПРАВИЛЬНО?

В любом большом проекте в какой-то момент вы столкнетесь с элементарной тавтологией: ваш сервер однажды убьет вас в приступе слепой ярости. Чтобы избежать этой печальной смерти от того, что в большинстве реалий должно быть неодушевленным предметом, позаботьтесь о своем сервере. Оно любит тебя. Он просто пытается поступать правильно с вами.

В начале разработки Steel Hunters я по глупости — как маленький ребенок, который просто втыкает кошачьи хвосты в электрические розетки — проверил ВСЕ ВЕЩИ в репозитории Joy Machine волей-неволей. Это привело к такому состоянию:

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

Это не тривиально. На самом деле, на сборку этой двухстрочной команды (в Windows PowerShell) у меня ушло около восьми часов. Оказывается: стирание репозитория с помощью большого количества файлов — это не то, что люди делают? В качестве альтернативы: я пропустил что-то очень очевидное. Я так не думаю, но мы говорим обо мне.

Я поделюсь этим знанием с миром, чтобы никому не пришлось проходить через несколько сотен хромированных вкладок в кроличью нору печали, пока вы не поймете, что забыли, как выглядит свет. Опять же: это зависит от командлетов Windows PowerShell. Кроме того, когда вы выполняете это, вы, по сути, говорите: «Меня больше не интересуют никакие удаленные файлы из моего репозитория что бы то ни было». ВНИМАНИЕ. Это выполнение приводит к постоянному и необратимому удалению всех файлов, перечисленных в deletedfiles.txt.

p4 files ... | grep ' - delete' | sed s/#.*// | Out-File F:\deletedfiles.txt
Get-Content F:\deletedfiles.txt | Foreach {p4 obliterate -y $_}

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

Одна из основных проблем с этим «решением» для быстрой очистки репозитория заключается в том, что я часто сталкивался с ситуацией, когда PowerShell просто зависал, требуя от меня обновления текстового файла (он выполняется линейно, поэтому вы можете быть достаточно уверены, что последний файл перед стойлом является вашим конечным выбором, и вы просто удаляете до начала файла). Это раздражает. Это не так раздражает, как вручную просматривая структуру каталогов файлов хранилища, чтобы сделать это вручную.

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