Мне нужны примеры кода для защищенного или зернистость, показывающая, как сделать git push
.
Фон
У меня есть задачи rake deploy:staging
и deploy:production
, которые я использую для развертывания своего приложения.
Я развертываю на героку, поэтому эти задачи по существу делают следующее:
- Получить самый последний тег (например,
git describe --abbrev=0
) - Отправьте версию, представленную этим тегом, на указанный пульт (например,
git push staging v1.00
) - Сохраните версию в конфигурационной переменной heroku (например,
heroku config:add APP_VERSION=v1.00
)
(Там также есть некоторые проверки, чтобы убедиться, что я не забыл создать новый тег перед отправкой и т. д.)
Первоначально я использовал системные вызовы из моего Rakefile для этих команд CLI; затем я перешел к использованию git и heroku-api драгоценные камни.
Однако гем git, похоже, заброшен (за последний год никаких коммитов); кажется, что Grit и Rugged теперь являются стандартными жемчужинами для работы с Git.
К сожалению, из-за отсутствия документации я не могу понять, как сделать git push с любой из этих библиотек.
(В следующих примерах предположим, что удаленная/ветка, которую я отправляю, является источником/мастером и уже настроена как удаленная в локальном репо)
Начиная с прочного:
$ irb
2.0.0-p0 :001 > require 'rugged'
=> true
2.0.0-p0 :002 > repo = Rugged::Repository.new('/path/to/repo')
=> #<Rugged::Repository:0x007fe8b48821c0 @encoding=#<Encoding:UTF-8>>
2.0.0-p0 :003 > remote = Rugged::Remote.lookup(repo, 'origin')
NoMethodError: undefined method `lookup' for Rugged::Remote:Class
Теперь о твердости:
$ irb
2.0.0-p0 :001 > require 'grit'
=> true
2.0.0-p0 :002 > repo = Grit::Repo.new('/path/to/repo')
=> #<Grit::Repo "/path/to/repo/.git">
2.0.0-p0 :004 > remote = repo.remotes.last
=> #<Grit::Remote "origin/master">
2.0.0-p0 :005 > repo.git.push(remote)
NoMethodError: undefined method `delete' for #<Grit::Remote "origin/master">
Любая помощь будет принята с благодарностью.