Форум программистов, компьютерный форум, киберфорум
Git
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 4
Регистрация: 05.05.2017
Сообщений: 521

Работа с библиотекой git

26.02.2019, 20:34. Показов 2165. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поставил https://github.com/ruby-git/ruby-git
Как считать лог?
Есть пример использования но не могу разобраться - :log => Logger.new(STDOUT) - это переводит вывод лога на консоль. Как считывать в какой нить объект типа массива строк? Может у кого есть ссылка на примеры на русском? Мне нужно в фоне постоянно парсить гит лог и записывать в файл по определенным правилам изменения.
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 g = Git.open(working_dir, :log => Logger.new(STDOUT))
 
    g.index
    g.index.readable?
    g.index.writable?
    g.repo
    g.dir
 
    g.log   # returns array of Git::Commit objects
    g.log.since('2 weeks ago')
    g.log.between('v2.5', 'v2.6')
    g.log.each {|l| puts l.sha }
    g.gblob('v2.5:Makefile').log.since('2 weeks ago')
 
    g.object('HEAD^').to_s  # git show / git rev-parse
    g.object('HEAD^').contents
    g.object('v2.5:Makefile').size
    g.object('v2.5:Makefile').sha
Добавлено через 11 минут
Пытаюсь запустить код

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
require 'rubygems'
require 'git'
require 'logger'
 
print 'Hello. Please enter a working dir:'
 
working_dir = gets
g = Git.open(working_dir, log: Logger.new(STDOUT))
g.index
g.index.readable?
g.index.writable?
g.repo
g.dir
 
g.log # returns array of Git::Commit objects
g.log.since('2 weeks ago')
g.log.between('v2.5', 'v2.6')
g.log.each { |l| puts l.sha }
g.gblob('v2.5:Makefile').log.since('2 weeks ago')
 
g.object('HEAD^').to_s # git show / git rev-parse
g.object('HEAD^').contents
g.object('v2.5:Makefile').size
g.object('v2.5:Makefile').sha
Code
1
2
3
4
5
6
7
8
C:\RailsInstaller\Ruby2.3.3\bin\ruby.exe C:/Users/Admin/RubymineProjects/rubyParser/main_parser.rb
Hello. Please enter a working dir:C:\Users\Admin\source\repos\PortScanner\.git
C:/Users/Admin/source/repos/PortScanner/.gitC:\Users\Admin\source\repos\PortScanner\.git
 
: path does not exist (ArgumentError)
I, [2019-02-26T20:33:13.851531 #13604]  INFO -- : Starting Git
 
Process finished with exit code 1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2019, 20:34
Ответы с готовыми решениями:

Работа с библиотекой
В чем ошибка? 1.unit2.pas(57,58) Error: Fields cannot appear after a method or property definition, start a new visibility section first ...

Работа с GD библиотекой
Как можно реализовать передачу изображения созданного с помощью GD библиотеки в twitter ?

Работа с библиотекой
Есть динамическая библиотека, как вызвать фукцию которая храниться в библиотеки????

2
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
27.02.2019, 08:40
Цитата Сообщение от Pantheonptz Посмотреть сообщение
path does not exist (ArgumentError)
#gets возвращает строку вместе с символом новой строки, используйте метод #chomp
Ruby
1
working_dir = gets.chomp
1
1 / 1 / 4
Регистрация: 05.05.2017
Сообщений: 521
27.02.2019, 13:18  [ТС]
Теперь заработало. Не знал таких нюансов. Как в руби работать с объектами? вызываю g.log, он возвращает как я понял какой то объект или массив объектов? как с ним общаться? как отдельно обращаться к комментарию, дате, автору и т.д.
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
require 'rubygems'
require 'git'
require 'logger'
 
if (Gem.win_platform?)
  Encoding.default_external = Encoding.find(Encoding.locale_charmap)
  Encoding.default_internal = __ENCODING__
 
  [STDIN, STDOUT].each do |io|
    io.set_encoding(Encoding.default_external, Encoding.default_internal)
  end
end
 
print 'Введите рабочую директорию: '
 
working_dir = gets.chomp
g = Git.open(working_dir, log:Logger.new(STDOUT)) #log:Logger.new(STDOUT)
g.index
g.index.readable?
g.index.writable?
g.repo
g.dir
 
array = g.log # returns array of Git::Commit objects
puts '++++++++++++++++++++++++++++++++++++++++++'
puts array
Добавлено через 4 минуты
Ruby
1
puts array[1].message
Вроде допетрил. Только теперь проблема с кодировкой - кириллические комменты к коммитам выводит ������������������ ������������������
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2019, 13:18
Помогаю со студенческими работами здесь

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

Работа с библиотекой
Нужно создать 3 функции в библиотеке по имени, по индексу, по совпадающему имени. New--Other--Dll Wizard. Я создал для проверки хотя бы...

Работа с Git
Здравствуйте, товарищи! У меня возникла небольшая проблемка при работе с Git'ом. Суть проблемы: 1. Есть два локальных репозитория...

Работа с git
Подскажите пожалуйста, как таковых знаний по GIT нету, есть веб сервер, на которым установлен git хотелось бы понять как правильно работать...

Работа с Git
Сколько ни пытаюсь разобраться в работе Git, не получается. Такое ощущение, будто в мануалах просто набор новых слов в случайном порядке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru