Como evito procurar atualizações para um módulo específico?

35

Em um projeto atual, tive que corrigir a vida útil de alguns módulos (hierarquia de nós, acesso ao ambiente de trabalho e mais alguns). Agora, esses módulos são absolutamente perfeitos para as necessidades do projeto e dificilmente romperão com futuras atualizações do núcleo.

Dito isto, quando o aplicativo for entregue, os clientes terão acesso total (usuário 1) ao sistema e, portanto, serão avisados ​​quando esses módulos tiverem atualizações disponíveis. E eles os atualizarão, não importa quantas vezes eu implore para que não o façam (oh, quão fácil seria a vida sem clientes!).

Existe uma maneira (talvez nos .infoarquivos dos módulos ) de convencer o gerenciador de atualizações a não procurar atualizações para esses módulos?

EDITAR

Estou ciente da project status urlchave que está disponível para o .infoarquivo, então acho que poderia defini-la como uma URL inexistente, mas prefiro fazer isso de uma maneira limpa, se possível.

Clive
fonte

Respostas:

31

Você precisa implementar hook_update_projects_alter().

Altere a lista de projetos antes de buscar dados e comparar versões.

A maioria dos módulos nunca precisará implementar esse gancho. É para interação avançada com o módulo de status de atualização: meros mortais não precisam ser aplicados. O principal caso de uso desse gancho é incluir projetos na lista, por exemplo, para fornecer dados de status de atualização em módulos e temas desativados. Um módulo contribuído pode querer ocultar projetos da lista, por exemplo, se houver um módulo específico do site que não tenha nenhum release oficial, esse módulo poderá se remover dessa lista para evitar avisos de "Nenhum release disponível encontrado" em o relatório de atualizações disponíveis. Em casos raros, um módulo pode querer alterar os dados associados a um projeto já na lista.

Chapabu
fonte
19

A projectchave do arquivo .info é adicionada pelo script de empacotamento em drupal.org para identificar de qual projeto o módulo é. O principal uso é o módulo de status Atualizar para monitorar versões dos pacotes instalados e notificar os administradores quando novas versões estiverem disponíveis.

Você acabou de remover ou comentar esta linha no arquivo .info e o Drupal para de procurar atualizações deste módulo.

smartinm
fonte
Isso foi diminuído por estar incorreto ou por algum outro motivo?
mpdonadio
Esta é a IMO, a melhor e mais fácil maneira!
AyeshK
11
@MPD O uso projectmanual é desencorajado nos documentos - esse pode ser o motivo dos votos negativos.
Mołot
Esta foi a única maneira que pude encontrar para parar de procurar uma versão personalizada de um Tema. Eu, é claro, gostaria de fazê-lo da "maneira certa", mas isso funcionou e reutilizou os npc codificados, mas com THEMENAME_update_projects_alter não.
Nedwardss 28/05
3
@nedwardss usando MYMODULE_ou THEMENAME_indica apenas o local em que esse código deve ser colocado. Ao usar esse código em um arquivo de função de tema em vez de um módulo personalizado, ele pode ser processado em um estágio diferente e pode não ter o desempenho esperado. Os temas devem ser incluídos na $projectsvariável.
emc
14

Basta fornecer um exemplo de código para ajudar a resposta escolhida:

function MYMODULE_update_projects_alter(&$projects){
    unset($projects['slug_of_the_module_you_want_to_disable']);
    //dsm($projects);  // view a list of projects
}

Digite o nome do módulo na $projects[]variável para desativar. Se você não tiver certeza de qual é a lesma (será minúscula e sublinhada), use essa dsm()chamada ou print_r()para imprimir uma lista dos módulos.

emc
fonte
11
Uma observação - slugé simplesmente um nome técnico do módulo que é igual ao nome do .infoarquivo do módulo . Para que você não precise despejar a matriz de projetos, basta olhar para a pasta do módulo. Na maioria dos casos, o nome é o mesmo da pasta do módulo.
Nux
11
@Nux "na maioria dos casos" é contraproducente pelas poucas vezes em que a lesma não corresponde ao nome do módulo. Ao visualizar e usar a lesma pela primeira vez, educamos o desenvolvedor e reduzimos o número de possíveis problemas.
emc
O termo usado no Drupal não é lesma, mas nome da máquina . Slug é usado de algum CMS de como equivalente a URL canônica ou apelido caminho ,
kiamlaluno
12

Você pode fazer isso de duas maneiras.

  • drush pm-updatecode --lock = module_to_ignore
  • Use o módulo update_advanced . Ele permite marcar os módulos que você deseja ignorar na página de administração do módulo.

Em particular, as configurações por projeto para ignorar determinados projetos ou mesmo versões específicas, estão ausentes na versão principal do módulo. O módulo "Atualizar configurações avançadas de status" restaura essas configurações e pode, eventualmente, fornecer funcionalidade adicional para o módulo principal "Atualizar status".

4life
fonte
o comando drush é exatamente o que eu estava procurando, muito obrigado!
Afr
O drush help upcvai dar isso para o --lockajuda: --lock = <foo, bar> Adicionar um bloqueio persistente para remover os projectos específicos de consideração durante atualizações. Os bloqueios podem ser removidos com o parâmetro --unlock ou substituídos nomeando especificamente o projeto como um parâmetro para pm-update ou pm-updatecode. O bloqueio não afeta o pm-download.
Yzmir Ramirez 12/09
2

Eu recebo o mesmo problema com as atualizações do módulo, instalei o módulo Desativar atualizações parece estar funcionando bem.

Este é um pequeno módulo administrativo que permite que os administradores do site desabilitem a verificação de atualizações em determinados temas e módulos, expondo a funcionalidade de hook_update_projects_alter () no formulário de configurações de atualização (/ admin / reports / updates / settings). Permite a seleção arbitrária de temas e módulos, bem como a detecção automática de módulos personalizados, módulos corrigidos e módulos de recursos específicos do site.

insira a descrição da imagem aqui

Krishna Mohan
fonte
0

Basicamente, você fez um garfo, certo? Então você deveria:

  1. Renomeie-o para incluir sua marca de forquilha
  2. No arquivo info, configure project status urlpara o seu repositório desse módulo.

Por último, mas não menos importante, se ele não é suportado, mas não foi preterido em favor de qualquer outro módulo, considere pedir para se tornar co-mantenedor e compartilhar suas correções com a comunidade.

Mołot
fonte
2
Donschoe: mantenedor aqui. Eu estaria muito disposto a ajudá-lo a acelerar, se quiser.
Berkes