#svn #netbeans #symfony1 #netbeans-6.9
#svn #netbeans #symfony1 #netbeans-6.9
Вопрос:
В проекте у нас есть несколько svn:includes для подключения к фреймворку и некоторые сторонние плагины. Поскольку сама платформа (Symfony) включает множество других вложенных библиотек через svn: externals, NetBeans может потребоваться много времени для завершения фоновой работы автоматического «Сканирования проектов». Иногда он полностью зависает при выполнении части «Проверка внешних изменений».
Я пытался обойти это, отключив «Сканирование на наличие внешних изменений», но это, похоже, только снижает частоту проблемы, создавая новые неудобства, а не решает ее.
Я надеюсь, что кто-нибудь знает способ сообщить SVN scan, чтобы он просматривал изменения ТОЛЬКО в НАШЕМ репозитории (что должно занять всего пару секунд), а не во вложенных внешних репозиториях. Аналогично использованию команды CLI svn update —ignore-externals.
Предыстория: Запуск NetBeans 6.9.1 в OS X 10.6.
Комментарии:
1. Возможно, это не по теме, но рассматривали ли вы возможность использования Maven вместо Subversion для управления зависимостями?
2. Нет, мы на самом деле не магазин Java и вообще никогда не использовали Maven. Поскольку CLI svn эффективно справляется с этой ситуацией, я не думаю, что Subversion является здесь слабым местом. Это либо что-то о том, как NetBeans вызывает svn под капотом, либо какой-то другой процесс, выполняемый NetBeans, который я, возможно, неправильно приписываю этому.
Ответ №1:
Вы можете добавлять --ignore-externals
ко многим подкомандам svn, таким как svn update --ignore-externals
или svn st --ignore-externals
, но вам нужно будет посмотреть, как вы можете заставить Netbeans делать это, поскольку у него есть собственный svn-клиент.
Вы можете заставить Netbeans использовать svn командной строки, используя следующий переключатель, хотя:
-J-DsvnClientAdapterFactory=commandline
http://wiki.netbeans.org/FaqSvnCli
Но помимо этого у меня не так много знаний о svn / netbeans, чтобы обеспечить это. Одна вещь, которую я сделал в Windows с помощью TortoiseGit, заключалась в том, чтобы указать TortoiseGit на git.cmd и выполнить там некоторую обработку, а затем вызвать git.cmd git.exe из msysgit. Вероятно, вы можете попробовать это. Задайте путь к какому-либо другому скрипту, которым вы управляете, который затем вызовет двоичный файл svn, что-то вроде приведенного ниже?
#!/bin/bash
svn $* --ignore-externals
и назовите его svn, сделайте его исполняемым и, возможно, укажите его в path.
(проверьте, является ли подкоманда update или status, а затем добавьте --ignore-externals
, если необходимо, поскольку Netbeans, я думаю, просто анализирует вывод из клиента командной строки svn, и дополнительный вывод Subcommand doesn't accept --ignore-externals
может испортить его обработку)
Да, не совсем точный ответ, но я записал свой мыслительный процесс.
Комментарии:
1. Спасибо. Я изучаю эту возможность, хотя это намного сложнее, чем я надеялся. Я не вижу, чтобы у NetBeans был способ указать пользовательский скрипт вместо просто svn. Это означает, что если я попытаюсь установить пользовательский скрипт-оболочку, как вы предлагаете, то он будет вызываться ПОСТОЯННО, когда я использую svn, а не только через NetBeans. Если я также не выясню, как определить, будет ли вызывающий процесс NetBeans вести себя по-другому.
2. Это действительно беспорядочно! Я не вижу никаких других вариантов. Если кто-то более опытный в Netbeans может ответить, это будет здорово 🙂
3. Я только что поставил вам 1, потому что, хотя я пока только внедрил переключатель принудительного использования CLI svn под капотом, у меня еще не было повторения этой проблемы. Это может быть просто медленная библиотека с ошибками, которую он использует по умолчанию. Если здесь не появятся более простые или подробные ответы, я приму и ваши. Большое спасибо за помощь!
4. также возникли проблемы с производительностью SVN, добавил «run.args.extra =-J-DsvnClientAdapterFactory=commandline» в project.properties и, похоже, это работает; по крайней мере, для локальных репозиториев. это «фоновое сканирование проектов» по-прежнему приводит к тому, что Java загружает процессор (там довольно много файлов).