2013-09-19 4 views
0

Я пробовал работать git log --since 2013-09-17 через Git::Repository-run, но он не работает. В нем указано, чтоGit :: Репозиторий не запускает git log

git: 'log --since=2013-09-17' is not a git command. See 'git --help'. 

Однако, когда я запускаю команду на консоли, она работает очень хорошо. Вот мой код:

41 my $repo = Git::Repository->new(
42   git_dir => $git_path, 
43); 
44 my $log_cmd = 'log'.($from ? " --since=$from" : '').($to ? " --until=$to" : ''); 
48 my @commits = $repo->run($log_cmd); 

Также отметим, что log без каких-либо с тех пор/пока-Params не работает нормально.

Есть ли у вас, ребята, идея, что я здесь делаю неправильно?

ответ

2

использовать параметр список в качестве аргументов run() здесь, похоже, как вы бы использовать форму списка из Perl-system() или exec() встроенных команд:

my @log_cmd = ('log', ($from ? "--since=$from" :()), ($to ? "--until=$to" :())); 
my @commits = $repo->run(@log_cmd); 
+0

Хах, я должен был положить немного больше внимания в чтении документы. Спасибо друг! Хотя предоставленный вами код не будет работать, потому что он не примет параметр '' ''в качестве параметра. Но построение cmd как массива работает. – Vince

+1

Я исправил код с помощью '()' вместо '' '', он должен работать. –

Смежные вопросы