mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-18 15:36:22 +00:00
feat: hacer fast forward si no hay cambios locales #14533
This commit is contained in:
parent
9ec0dc87a9
commit
f00d6c6d45
2 changed files with 45 additions and 14 deletions
|
@ -1,17 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Permite traer los cambios desde webhooks
|
||||
|
||||
# Permite traer los cambios desde el repositorio remoto
|
||||
class GitPullJob < ApplicationJob
|
||||
# @param :site [Site]
|
||||
# @param :usuarie [Usuarie]
|
||||
# @param :message [String]
|
||||
# @return [nil]
|
||||
def perform(site, usuarie, message)
|
||||
site.repository.fetch
|
||||
# @param :site [Site]
|
||||
# @param :usuarie [Usuarie]
|
||||
# @param :message [String]
|
||||
# @return [nil]
|
||||
def perform(site, usuarie, message)
|
||||
site.repository.fetch
|
||||
|
||||
return if site.repository.up_to_date?
|
||||
return if site.repository.up_to_date?
|
||||
|
||||
if site.repository.fast_forward?
|
||||
site.repository.fast_forward!
|
||||
else
|
||||
site.repository.merge(usuarie, message)
|
||||
end
|
||||
end
|
||||
|
||||
git_lfs_checkout
|
||||
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
|
|
@ -75,13 +75,18 @@ class Site
|
|||
# Forzamos el checkout para mover el HEAD al último commit y
|
||||
# escribir los cambios
|
||||
rugged.checkout 'HEAD', strategy: :force
|
||||
|
||||
git_sh("git", "lfs", "fetch", "origin", default_branch)
|
||||
# reemplaza los pointers por los archivos correspondientes
|
||||
git_sh("git", "lfs", "checkout")
|
||||
|
||||
commit
|
||||
end
|
||||
|
||||
# Trae todos los archivos desde LFS
|
||||
#
|
||||
# @return [Boolean]
|
||||
def git_lfs_checkout
|
||||
git_sh('git', 'lfs', 'fetch', 'origin', default_branch)
|
||||
git_sh('git', 'lfs', 'checkout')
|
||||
end
|
||||
|
||||
# El último commit
|
||||
#
|
||||
# @return [Rugged::Commit]
|
||||
|
@ -118,6 +123,25 @@ class Site
|
|||
rugged.merge_analysis(remote_head_commit).include?(:up_to_date)
|
||||
end
|
||||
|
||||
# Detecta si es posible adelantar la historia local a la remota o
|
||||
# necesitamos un merge
|
||||
#
|
||||
# @return [Boolean]
|
||||
def fast_forward?
|
||||
rugged.merge_analysis(remote_head_commit).include?(:fastforward)
|
||||
end
|
||||
|
||||
# Mueve la historia local a la remota
|
||||
#
|
||||
# @see {https://stackoverflow.com/a/27077322}
|
||||
# @return [nil]
|
||||
def fast_forward!
|
||||
rugged.checkout_tree(remote_head_commit)
|
||||
rugged.references.update(rugged.head.resolve, remote_head_commit.oid)
|
||||
|
||||
nil
|
||||
end
|
||||
|
||||
# Guarda los cambios en git
|
||||
#
|
||||
# @param :add [Array] Archivos a agregar
|
||||
|
|
Loading…
Reference in a new issue