Подтвердить что ты не робот

Git библиотека для Go

Как проект для домашних животных, я хочу разработать приложение для заметок, используя git в качестве хранилища. (Я подозреваю, что этого еще не существует, учитывая этот пост в блоге: http://jarofgreen.co.uk/2012/08/how-about-a-mobile-note-app-backed-by-git/)

Теперь я хотел бы принять это как возможность поиграть с Go немного. Тем не менее, я не могу найти какой-либо (даже не самый крошечный подход) к библиотеке git для Go. Есть ли вообще?

Очевидно, что мое знание Go не существует, поэтому писать привязки для libgit не представляет интересный способ начать... (и я бы, вероятно, прибегнул к рубину, о котором и не знаю)

4b9b3361

Ответ 1

Я бы сказал git2go - это библиотека привязок git для использования в Go. Он регулярно обновляется и поддерживается пользователями, запускающими libgit2.

Если вы ищете реализацию git, написанную исключительно в Go, go-git из source {d} является наиболее зрелым и активным вариантом.

Ответ 2

Вы можете просто выполнить команду git, используя os/exec пакет из стандартной библиотеки Go.

Ответ 3

То, что предложил Виктор, действительно является "официальным" способом "script" Git, как это предусмотрено его разработчиками. Команды Git делятся на две широкие группы специально для этой цели: команды "сантехника" являются низкоуровневыми и интенсивно используются в основном для использования другими программами; команда "фарфор" предназначена для взаимодействия с пользователем и вызывает команды сантехники для выполнения своей работы. Просмотрите каталог /usr/lib/git-core (может отличаться от вашей системы), чтобы понять, сколько команд Git было выполнено.

С другой стороны, Go поддерживает связь с разделяемыми библиотеками через свой cgo объект. Таким образом, вы можете попробовать обернуть libgit2. AFAIK, libgit2 еще не полностью соответствует параметру Git, но он способен читать/записывать репозитории Git, делать разветвление и т.д. — возможно, этого будет достаточно для вашей задачи.

Хорошо, после того, как я написал все это, я прокрутил запись "Bindings" на сайте libgit2 и нашел go-git...

Ответ 5

Так как несколько лет назад, моя команда и я, мы кодировали чистую реализацию git в Go, она избегает иметь какую-либо зависимость c/С++ и делает ее более гибкой и простой в расширении.

https://github.com/src-d/go-git

go- git стремится достичь полноты libgit2 или jgit, в настоящее время покрывает большинство операций чтения сантехники и некоторых основных операций записи, но не имеет основных операций с фарфором, таких как слияния.