Ответ выше, кажется, устарел. Синтаксис изменился. Мне нужно реализовать действие pull, которое я пытаюсь выполнить с помощью fetch, а затем слияние и фиксация. Для выборки я использую метод выборки, как этот
repo.fetch('origin', [repo.head.name], credentials: credits)
И это, кажется, на самом деле получить что-то, так как возвращаемый хэш полон информацией о том, что было неправдоподобным. Однако он не записывается на диск. Я ожидал бы, что ветка останется за несколькими коммитами, когда я буду указывать статус в командной строке, но это не так. Если я выберу второй раз с той же командой выше, ничего не будет извлечено. Вероятно, это потому, что он уже был получен в первый раз, но потом я не вижу, где находится выборка.
Теперь, если я идти вперед и делать выборки вручную в командной строке, а затем попытаться объединить локальную копию удаленного филиала и местное отделение (локальные изменения уже зафиксированы), используя следующий код
ref_name = repo.head.name # refs/heads/branchname
branch_name = ref_name.sub(/^refs\/heads\//, '') # branchname
remote_name = "#{remote}/#{branch_name}" # origin/branchname
remote_ref = "refs/heads/#{remote_name}" # refs/heads/origin/branchname
local_branch = repository.branches[branch_name]
remote_branch = repository.branches[remote_name]
index = repo.merge_commits(local_branch.target, remote_branch.target)
options = {
author: { time: Time.now }.merge(author),
committer: { time: Time.now }.merge(committer),
message: 'merged',
parents: [
local_branch.target,
remote_branch.target
],
tree: index.write_tree(repository),
update_ref: 'HEAD'
}
Rugged::Commit.create repo, options
Он создает фиксацию, как ожидалось. Конец также записывается на диск и отображается в истории. Но по какой-то причине отрасль имеет теперь незафиксированные изменения. Содержимое локального файла не изменилось. Я ожидаю, что у них будет содержимое взятого фиксации.
Может ли кто-нибудь указать рабочий пример для извлечения, слияния, фиксации? Версия прочной при записи составляет 0.22.0b3
Update 1
Это приведет мое рабочее дерево в нужное состояние
repo.checkout ref_name, strategy: :force
Update2
Я узнал, как извлечь и сохранить состояние на диск
r = repo.remotes[remote]
r.fetch(credentials: git_credentials)
r.save
Спасибо за это - будет следить за захватывающими изменениями! На данный момент это достаточно хорошо. – rhodee
'Rugged :: Branches' больше не существует в текущей версии прочной. – thesecretmaster