Pro Git
Pro Git
🎯 ¿Cansado de los anuncios?
Elimínalos ahora 🚀
# only allows certain users to modify certain subdirectories in a project
def check_directory_perms
access = get_acl_access_data('acl')
# see if anyone is trying to push something they can't
new_commits = `git rev-list #{$oldrev}..#{$newrev}`.split("\n")
new_commits.each do |rev|
files_modified = `git log -1 --name-only --pretty=format:'' #{rev}`.split("\n")
files_modified.each do |path|
next if path.size == 0
has_file_access = false
access[$user].each do |access_path|
if !access_path # user has access to everything
|| (path.start_with? access_path) # access to this path
has_file_access = true
end
end
if !has_file_access
puts "[POLICY] You do not have access to push to #{path}"
exit 1
end
end
end
end
check_directory_perms
Se puede obtener una lista de los nuevos commits a enviar con git rev-list.
Para cada uno de ellos, puedes ver qué archivos se quieren modificar y
asegurarte que el usuario que está enviando los archivos tiene acceso a todos
ellos.
Desde este momento, los usuarios ya no podrán subir cambios con mensajes de
confirmación que no cumplan las reglas, o cuando intenten modificar archivos a
los que no tienen acceso.
👉 Descargar el audiolibro GRATIS en Amazon Reportar problema / Sugerencias