Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Примечание. Если у вашего инструмента сравнения есть CLI (интерфейс командной строки), его можно легко интегрировать с Git как для сравнения, так и для слияния (если он поддерживает 3-way сливается ).
Начиная с Git1.6.3, параметры difftool
- mergetool
позволяют интегрировать эту программу сравнения (см. « Как просмотреть вывод ' git diff
] с программой визуального сравнения? ").
KDiff3 , например, является хорошим кандидатом для этого, поскольку он даже автоматически обнаруживается Git .
Я использовал meld для этой цели , в Ubuntu вы можете просто сделать:
apt-get install meld
Я думаю, что это только двустороннее сравнение, но обычно это только то, что вам нужно, и только то, что вам все равно показывает diff.
Когда вы получаете конфликт с использованием SVN и необходимо выполнить слияние, обычно вы получаете 4 файла AFAIR.
Итак, чтобы использовать meld для слияния ваших изменений, вы должны сделать:
meld file.mine file.<n+m>
И слить свои изменения в ревизию, обновленную из svn, или наоборот. Обычно легче объединить файл с наименьшим количеством изменений в файл с наибольшим количеством изменений.
И, наконец, вы замените файл объединенным файлом и выполните следующее:
svn resolved file
Beyond Compare также поддерживает Linux. Если вам уже нравится BC для Windows, я бы сказал, выбери победителя.
Diffuse поддерживает Subversion, Mercurial, Git и некоторые другие. системы контроля версий. Он работает и в Windows. Для Ubuntu просто установите пакет .deb с помощью "$ sudo dpkg -i diffuse - *. Deb" и затем запустите "
KDiff3 очень хорош (я также использую его в Windows). Он работает как для сравнения, так и для слияния.
Я много использовал SlickEdit в Linux. Он имеет довольно приятный встроенный просмотрщик / редактор различий. Он работает с SVN, CVS и парой других репозиториев контроля версий.
А как насчет kdiff (особенно если вы используете KDE) Или, если у вас есть IDE (например, Eclipse / netbeans), разве она не предоставляет функций, связанных с SVN?
(Я лично использую Eclipse PDT для PHP; и это подключаемый модуль Subversive для SVN)
I use Vim's diff
mode for this. With the vcscommand
plugin, you can simply type :VCSDiff
to enter diff-mode on the current file versus its history.
Ну... кто-нибудь уже попробовал DiffMerge? Если нет, то я рекомендую всем это сделать. Если вы пользовались WinMerge для windows, то вы найдете эту программу отличной альтернативой WinMerge для Ubuntu / Linux.
Попробуйте поискать подробности на следующем сайте: http://www.webtechquery.com/index.php/2010/05/free-diff-tools-ubuntu-linux-windows/
Thanks
Существует также ECMerge
, он имеет встроенную поддержку просмотра HG, Git, Bazaar (при наличии соответствующего инструмента командной строки) вместе с синтаксисом. выделение и так далее:
http://www.elliecomputing.com/
он одинаково работает в Linux, MacOS X, Solaris и Windows.