Подверсия Клиентское [закрытое] приложение

Когда вы объявляете ссылочную переменную (т. е. объект), вы действительно создаете указатель на объект. Рассмотрим следующий код, в котором вы объявляете переменную примитивного типа int:

int x;
x = 10;

В этом примере переменная x является int, и Java инициализирует ее для 0. Когда вы назначаете его 10 во второй строке, ваше значение 10 записывается в ячейку памяти, на которую указывает x.

Но когда вы пытаетесь объявить ссылочный тип, произойдет что-то другое. Возьмите следующий код:

Integer num;
num = new Integer(10);

Первая строка объявляет переменную с именем num, но она не содержит примитивного значения. Вместо этого он содержит указатель (потому что тип Integer является ссылочным типом). Поскольку вы еще не указали, что указать на Java, он устанавливает значение null, что означает «Я ничего не указываю».

Во второй строке ключевое слово new используется для создания экземпляра (или создания ) объекту типа Integer и переменной указателя num присваивается этот объект. Теперь вы можете ссылаться на объект, используя оператор разыменования . (точка).

Exception, о котором вы просили, возникает, когда вы объявляете переменную, но не создавали объект. Если вы попытаетесь разыменовать num. Перед созданием объекта вы получите NullPointerException. В самых тривиальных случаях компилятор поймает проблему и сообщит вам, что «num не может быть инициализирован», но иногда вы пишете код, который непосредственно не создает объект.

Например, вы можете имеют следующий метод:

public void doSomething(SomeObject obj) {
   //do something to obj
}

В этом случае вы не создаете объект obj, скорее предполагая, что он был создан до вызова метода doSomething. К сожалению, этот метод можно вызвать следующим образом:

doSomething(null);

В этом случае obj имеет значение null. Если метод предназначен для того, чтобы что-то сделать для переданного объекта, целесообразно бросить NullPointerException, потому что это ошибка программиста, и программисту понадобится эта информация для целей отладки.

Альтернативно, там могут быть случаи, когда цель метода заключается не только в том, чтобы работать с переданным в объекте, и поэтому нулевой параметр может быть приемлемым. В этом случае вам нужно будет проверить нулевой параметр и вести себя по-другому. Вы также должны объяснить это в документации. Например, doSomething может быть записано как:

/**
  * @param obj An optional foo for ____. May be null, in which case 
  *  the result will be ____.
  */
public void doSomething(SomeObject obj) {
    if(obj != null) {
       //do something
    } else {
       //do something else
    }
}

Наконец, Как определить исключение & amp; причина использования Трассировки стека

11
задан jwarzech 12 September 2008 в 18:22
поделиться

11 ответов

Автономные клиенты

Поскольку общий одинокий Синхронный SVN является мощным и кросс-платформенным решением. Это похоже на наиболее исходное приложение на каждой из платформ.

Веб-сайт Подверсии включает список других автономных Клиентов SVN (большинство является кросс-платформенным). [Скопированный упоминают ниже из http://subversion.tigris.org/links.html#clients]

eSvn - межплатформенный ОСНОВАННЫЙ НА QT GUI frontend к Подверсии http://sourceforge.net/projects/esvn

FSVS - быстрая командная строка подверсии, клиентоориентированная вокруг развертывания программного обеспечения http://fsvs.tigris.org/

KDESvn - Клиент Подверсии для http://www.alwins-world.de/wiki/programs/kdesvn KDE

QSvn - Межплатформенный клиент Подверсии GUI http://ar.oszine.de/projects/qsvn/

RapidSVN - Межплатформенный GUI выходит напрямую для Подверсии http://rapidsvn.tigris.org/

RSVN - Сценарий Python, который позволяет несколько операций стороны репозитория в единственной, атомарной транзакции. https://opensvn.csie.org/traccgi/rsvn/trac.cgi/wiki

SmartSVN - Межплатформенный клиент GUI для Подверсии (Не открытый исходный код. Доступный в свободном и коммерческой версии.) https://www.smartsvn.com/

Подкомандующий - межплатформенная Подверсия клиент GUI включая визуальный текст объединяет инструмент. http://subcommander.tigris.org/

SvnX - Пантера Mac OS X клиент GUI. http://www.lachoseinteractive.net/en/community/subversion/svnx/

Клиент Syncro SVN - Межплатформенный графический клиент Подверсии. (Не открытый исходный код. Ознакомительные версии, доступные для Mac OS X, Windows и Linux.) http://www.syncrosvnclient.com

WorkBench - Кросс-платформенная разработка программного обеспечения GUI основывалась на Подверсии, записанной в Python http://pysvn.tigris.org/

Версии - клиент Подверсии GUI для Mac OS X. (Не открытый исходный код; требует коммерческой лицензии.) http://www.versionsapp.com/

ZigVersion - Интерфейс Подверсии для Mac OS X. Цели разработать интерфейс на основе типичных рабочих процессов программистов. (Обратите внимание, что это не открытый исходный код.) http://zigversion.com/

Интегрированные клиенты

TortoiseSVN является лучшей системой общего использования [Интегрированная система не автономна - Спасибо Martin Kenny]. Это интегрирует себя в Windows Explorer (Можно использовать его в проводнике или любом диалоговом окне оболочки), таким образом, это работает чрезвычайно хорошо и дает Вам полную мощность SVN.

Ankhsvn является хорошим решением, которое интегрируется в Visual Studio (Кроме Специальных Выпусков).

SVN Notifier контролирует Ваши репозитории и уведомит Вас, когда что-либо изменяется. Это интегрируется с TortoiseSVN, чтобы показать Вам журналы фиксации и diffs. Очень удобный при работе в среде команды.

29
ответ дан 3 December 2019 в 00:43
поделиться

TortoiseSVN

С их веб-сайта:

Клиент Подверсии, реализованный как окна, окружает расширение.

TortoiseSVN является действительно простое в использовании Управление версиями / управление версиями / программное обеспечение управления исходным кодом для Windows. Так как это не интеграция для определенного IDE, можно использовать его с любыми средствами разработки, которые Вы любите. TortoiseSVN свободен использовать. Вы не должны получать ссуду или платить полную зарплату лет для использования ее.

25
ответ дан 3 December 2019 в 00:43
поделиться

Можно попытаться использовать SmartSVN - https://www.smartsvn.com/

5
ответ дан 3 December 2019 в 00:43
поделиться

Можно ли объяснить, почему TortoiseSVN не работает на Вас? Это помогло бы нам выяснить то, в чем Вы действительно нуждаетесь в приложении.

Объедините TortoiseSVN с Windows Explorer, и у Вас есть большой инструмент и затем погрузка VisualSVN, если Вы хотите, чтобы что-то интегрировалось с Visual Studio.

2
ответ дан 3 December 2019 в 00:43
поделиться

Как расширение оболочки, я предполагаю, что это не технически автономное приложение, но +1 для TortoiseSVN, тем не менее.

1
ответ дан 3 December 2019 в 00:43
поделиться

Я рекомендовал бы TortoiseSVN начать с (в основном, он добавляет связанные с SVN контекстные меню к проводнику), но это может быть очень голодная память.

Я обычно использую его, когда я должен, но также и использовать очень чистую и применимую подверсию инструментов командной строки, идет и Subclipse как часть Eclipse.

1
ответ дан 3 December 2019 в 00:43
поделиться

Тот и только tortoiseSVN!

Это интегрируется в Windows Explorer, Вы вызываете его щелчком правой кнопкой. Все команды находятся под меню TortoiseSVN, за исключением часто используемых команд, таких как обновление, фиксация или разность (это настраивается).

По некоторым причинам SVN proterties расположены на вкладке в меню Properties, не в меню TortoiseSVN. Это имеет смысл, вид, но это заняло время, привыкнув к нему.

TortoiseSVN превосходен, но я только понял, что это было потрясающим, когда я переместился в Mac (где Черепаха не доступна), и попробованный для нахождения достойного инструмента. Ничто не приближается.

1
ответ дан 3 December 2019 в 00:43
поделиться

Если Вам не нравятся расширения оболочки, TortoiseSVN может использоваться в качестве приложения через свой удобный интерфейс автоматизации - один исполняемый файл несколько команд arguements.

См. руководство TortoiseSVN

Каждая команда повышает модальное диалоговое окно для определенной задачи.

1
ответ дан 3 December 2019 в 00:43
поделиться

SmartSVN хорош, если Вы хотите клиент, который не интегрируется с Проводником и является вместо этого автономным приложением. (Хотя я думаю более позднее предложение версии интеграция Проводника также.)

1
ответ дан 3 December 2019 в 00:43
поделиться

Для общего одинокого Синхронного SVN (60$) один из самого хорошего взгляда и полнофункциональных. Это является межплатформенным (Победа, Linux, OSX).

1
ответ дан 3 December 2019 в 00:43
поделиться

Память и диск IO могут быть проблемой с TSVNCache, который управляет оверлейными программами значка Черепахи. Можно зафиксировать его, поместив контроль в один или два каталога и заставив кэш обработать только взгляд на те каталоги, а не весь диск.

См. эту ссылку для инструкций.

0
ответ дан 3 December 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: