Как настроить Netbeans subversion для большого проекта со многими svn: externals

#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 загружает процессор (там довольно много файлов).