LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Так а что делать с методом list_files, как в нём определить кто должен файлы листить: git или svn?

Т.е.:

package MyApp::Model::Repository;

sub list_files {
    my ($self, $repo) = @_;

    my $vcs = $repo->vcs; # тут может быть что угодно: git, hg, ...

    # а тут надо получить список файлов из репозитория
    # git -> `git ls-files`
    # hg -> `hg locate`
    # svn -> `svn list`
}

Но вообще желательно, чтоб метод list_files проксировался из соответствующего хелпера: MyApp::*::Git, MyApp::*::Mercurial, ... В зависимости от $repo->vcs.

Кроме list_files будут еще контрактные методы, внутренняя логика которых тоже зависит от типа VCS.

P.S. Кажется мне, что это неправильный подход и я где-то перемудрил

Исправление KennyMinigun, :

Так а что делать с методом list_files, как в нём определить кто должен файлы листить: git или svn?

Т.е.:

package MyApp::Model::Repository;

sub list_files {
    my ($self, $repo) = @_;

    my $vcs = $repo->vcs; # тут может быть что угодно: git, hg, ...

    # а тут надо получить список файлов из репозитория
    # git -> `git ls-files`
    # hg -> `hg locate`
    # svn -> `svn list`
}

Но вообще желательно, чтоб метод list_files проксировался из соответствующего хелпера: MyApp::*::Git, MyApp::*::Mercurial, ... В зависимости от $repo->vcs.

Кроме list_files будут еще контрактные методы, внутренняя логика которых зависит от типа VCS.

P.S. Кажется мне, что это неправильный подход и я где-то перемудрил

Исправление KennyMinigun, :

Так а что делать с методом list_files, как в нём определить кто должен файлы листить: git или svn?

Т.е.:

package MyApp::Model::Repository;

sub list_files {
    my ($self, $repo) = @_;

    my $vcs = $repo->vcs; # тут может быть что угодно: git, hg, ...

    # а тут надо получить список файлов из репозитория
    # git -> `git ls-files`
    # hg -> `hg locate`
    # svn -> `svn list`
}

Но вообще желательно, чтоб метод list_files проксировался из соответствующего хелпера: MyApp::*::Git, MyApp::*::Mercurial, ... В зависимости от $repo->vcs.

Кроме list_files будут еще контрактные методы, внутренняя логика которых зависит от типа VCS.

P.S. Кажется мне, что это неправильный подход и я где-то перемудрил

Исходная версия KennyMinigun, :

Так а что делать с методом list_files, как в нём определить кто должен файлы листить git или svn?

Т.е.:

package MyApp::Model::Repository;

sub list_files {
    my ($self, $repo) = @_;

    my $vcs = $repo->vcs; # тут может быть что угодно: git, hg, ...

    # а тут надо получить список файлов из репозитория
    # git -> `git ls-files`
    # hg -> `hg locate`
    # svn -> `svn list`
}

Но вообще желательно, чтоб метод list_files проксировался из соответствующего хелпера: MyApp::*::Git, MyApp::*::Mercurial, ... В зависимости от $repo->vcs.

Кроме list_files будут еще контрактные методы, внутренняя логика которых зависит от типа VCS.

P.S. Кажется мне, что это неправильный подход и я где-то перемудрил