Мерзавец: Найдите дублирующиеся блобы (файлы) в этом дереве

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

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 ");
        }
    }
}
16
задан Community 23 May 2017 в 12:26
поделиться

3 ответа

Выполнение этого на кодовой базе, я продолжаю работать, было разоблачением, которое я могу сказать Вам!

#!/usr/bin/perl

# usage: git ls-tree -r HEAD | $PROGRAM_NAME

use strict;
use warnings;

my $sha1_path = {};

while (my $line = <STDIN>) {
    chomp $line;

    if ($line =~ m{ \A \d+ \s+ \w+ \s+ (\w+) \s+ (\S+) \z }xms) {
        my $sha1 = $1;
        my $path = $2;

        push @{$sha1_path->{$sha1}}, $path;
    }
}

foreach my $sha1 (keys %$sha1_path) {
    if (scalar @{$sha1_path->{$sha1}} > 1) {
        foreach my $path (@{$sha1_path->{$sha1}}) {
            print "$sha1  $path\n";
        }

        print '-' x 40, "\n";
    }
}
8
ответ дан 30 November 2019 в 16:30
поделиться

Ответы сценариев от Вашего связанного вопроса в значительной степени применяются здесь также.

Попытка следующая команда мерзавца от корня Вашего репозитория мерзавца.

git ls-tree -r HEAD

Это генерирует рекурсивный список всех 'блобов' в текущей ГОЛОВЕ, включая их путь и их sha1 идентификатор.

мерзавец не поддерживает обратные каналы от блоба до дерева, таким образом, это была бы задача сценариев (жемчуг, Python?), чтобы проанализировать git ls-tree -r вывод и создать сводный отчет всех sha1s, которые появляются несколько раз в списке.

3
ответ дан 30 November 2019 в 16:30
поделиться

Только что создал однострочник, который выделяет дубликаты, отображаемые с помощью git ls-tree .
Может быть полезно

git ls-tree -r HEAD |
    sort -t ' ' -k 3 |
    perl -ne '$1 && / $1\t/ && print "\e[0;31m" ; / ([0-9a-f]{40})\t/; print "$_\e[0m"'
7
ответ дан 30 November 2019 в 16:30
поделиться
Другие вопросы по тегам:

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