Ошибка «недостаточно памяти - завершающее приложение» при выполнении svn-слияния - PullRequest
3 голосов
/ 14 марта 2011

Мы видим следующую ошибку при попытке выполнить командную строку svn merge с Subversion 1.6.9 под 32-битной Windows XP.

Недостаточно памяти - завершающее приложение.

Это приложение запросило Runtime прекратить его необычным способом.Для получения дополнительной информации обратитесь в службу поддержки приложения.

При проверке диспетчера задач Windows примерно в это время обнаруживается следующее использование памяти

Memory usage spike

Пиковое использование памятипроцесса svn.exe превышает 1,8 ГБ.

Кроме того, мы получаем тот же результат при попытке выполнить объединение с использованием TortoiseSVN.

Мы пытаемся выполнить объединениеот корневого уровня нашего хранилища.Общий размер файла (на компьютере разработчика) репозитория составляет около 3 ГБ.

Это первый раз, когда мы пытаемся выполнить слияние на корневом уровне.Мы достигли внутреннего предела svn?

Редактировать

После некоторых проб и ошибок я обнаружил, что эта проблема, похоже, вызвана одной конкретной папкой в ​​нашем хранилище.Эта папка содержит 1500 сценариев SQL.Выполнение слияния только для этой папки приводит к той же ошибке нехватки памяти (хотя для ее взрыва требуется больше времени).

Ответы [ 3 ]

4 голосов
/ 21 марта 2011

Нам удалось устранить эту проблему, хотя мы до сих пор не понимаем точную природу причины.

Как указано в моем сообщении «Правка», мы отслеживали проблему в одной папке, содержащей около 1500 сценариев SQL. Эта папка также содержала svn:externals одного файла.

Мы выполнили следующие шаги:

  • удалил это svn:externals и сделал svn commit
  • удалил рабочую копию папки (похоже, существует проблема, из-за которой, если вы удалите свойство svn: externals, которое ссылается на один файл, который файл, который был внешним в папке, не будет удален при последующем svn update)
  • выполнил svn update

Когда мы в следующий раз попытались svn merge, команда успешно завершилась.

2 голосов
/ 14 марта 2011

Учитывая объем используемой памяти (~ 1,8 ГБ) до завершения и тот факт, что вы работаете в 32-разрядной Windows, в которой для каждого процесса установлено ограничение в 2 ГБ, я бы рекомендовал выполнить слияние на 64-битовая машина.

Если у вас нет 64-битной машины, попробуйте разбить ее на более мелкие слияния (если вы не реинтегрируете ветвь, то я не уверен, как бы вы ее разбили)вверх).

Я имел дело с 3 ГБ рабочих копий и большим количеством слияний (всегда из корня ветки) - я никогда не сталкивался с проблемой памяти, но я также был 64-битным длядолго.Возможно, что объединение ветки с большим количеством изменений может потребовать много памяти, но я просто размышляю.

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

Отдельное предложение: поискать в списке рассылки аналогичные проблемы.

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

ОБНОВЛЕНО: Важно понимать, что такое svn: mergeinfos.Соблюдайте осторожность при удалении их без некоторого понимания.В случае Ричарда в хранилище никогда не было слияний, совершенных из корня ветвей, что означает, что svn: mergeinfo в корне, вероятно, ничего не содержало, поэтому удаление их всех приведет к тому, что svn узнает о том, что ранее было объединено.Это имеет значение при выполнении полных слияний веток (например, svn merge url / to / src / branch - где не указана ревизия), и может привести к тому, что Subversion попытается повторно слить ревизии, которые были ранее слиты.Слияния Cherry-pick (то есть указание ревизий x, y, z) не должны затрагиваться.Даже если все это удалено, это не конец света, просто у вас будет поведение, подобное svn 1.4, для целых слияний ветвей, которые включают ветки до этого момента времени.

Тем не менее, мне приходилось несколько раз очищать посторонние слияния поддеревьев - только не из корня.

Mergeinfo рекомендовал прочитать:

0 голосов
/ 14 марта 2011

Вы используете 64-битную сборку SubVersion на 64-битных окнах?

Если нет, помните об ограничении объема памяти в Windows. Для использования процесса вы ограничены 3 ГБ, так что это может быть пределом, которого вы достигаете.

Кстати, последняя версия TortoiseSVN - 1.6.13

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...