Neste Guia, vou orientar você nas etapas necessárias para aplicar patches nas definições de metadados do SAP Service e Asset Manager.
Conteúdo:
O que é um patch?
Por que a correção é fornecida como patch?
Como aplicar o patch?
Apêndice
O que é um patch?
Um patch é uma representação compacta das diferenças entre dois arquivos, destinada ao uso com arquivos de texto orientados a linhas. Descreve como transformar um arquivo em outro e é assimétrico: o patch do arquivo1 para o arquivo2 não é o mesmo patch para a outra direção.
Porque a correção vem como um patch?
Anteriormente, as correções eram fornecidas como arquivos contendo alterações. O usuário precisa substituir os arquivos padrão originais pelos arquivos de patch para obter a correção.
Foi uma tarefa desafiadora e manual quando duas correções separadas exigiam alterações no mesmo arquivo. Para resolver esse problema, foi introduzido um formato de patch para correções de metadados. O formato de patch usa contexto e números de linha para localizar diferentes regiões de arquivo. Pode ser aplicado a uma versão do primeiro arquivo um pouco anterior ou posterior àquela da qual foi derivado, desde que o programa aplicativo ainda possa detectar o contexto da alteração.
Um único arquivo de patch pode conter diferenças para qualquer número de arquivos, e git diff produz diferenças para todos os arquivos modificados no repositório em um único patch.
Como aplicar o patch?
O patch pode ser aplicado no IDE abaixo
- Off-line: código do Microsoft Visual Studio
- On-line – SAP Business Application Studio
Opção 1: offline: código do Microsoft Visual Studio
- Dcarregue o arquivo de patch de metadados do SAP Note XXXXXXX.
- Ccopie o arquivo de patch no Microsoft Visual Studio Code.
- UMCorrija o serviço SAP e os metadados do Asset Manager.
Vamos usar o exemplo SAP Note 3486946 para metadados 2.405.
1a) Dcarregue o arquivo de patch de metadados da nota SAP 3486946.
Baixe o arquivo 3486946(2405).patch em https://me.sap.com/notes/3486946
1b) Ccopie o arquivo de patch no Microsoft Visual Studio Code.
Copie o arquivo baixado de preferência adjacente à pasta de definições de metadados
1c) UMCorrija o serviço SAP e os metadados do Asset Manager.
Abra o terminal incorporado no código do Microsoft Visual Studio (Menu>Terminal>Novo Terminal), vá para a pasta de definições de metadados e execute o comando patch.
patch --no-backup-if-mismatch -p4 < ../3486946\(2405\).patch
O –no-backup-if-incompatibilidade A opção faz com que o patch não crie arquivos de backup, mesmo para patches incompatíveis
-p
Remover
-p4 significa que removerá 4 componentes principais da rota
De para/src/metadata/definitions/Application.app PARA Aplicativo.app
aplique o patch ao arquivo Application.app indica que as alterações foram aplicadas com sucesso.
Opção 2: On-line – SAP Business Application Studio
- Dcarregue o arquivo de patch de metadados do SAP Note XXXXXXX.
- Ccopie o arquivo de patch para o SAP Business Application Studio.
- UMCorrija o serviço SAP e os metadados do Asset Manager.
2a) Dcarregue o arquivo de patch de metadados da nota SAP 3486946.
Baixe o arquivo 3486946(2405).patch em https://me.sap.com/notes/3486946
2b) Ccopie o arquivo de patch para o SAP Business Application Studio.
Faça upload do arquivo de patch baixado, de preferência para a pasta de definições de metadados
2c) UMCorrija o serviço SAP e os metadados do Asset Manager.
Abra o terminal integrado (Menu > Exibir > Terminal)
Execute o comando patch da pasta de definições de metadados
patch --no-backup-if-mismatch -p4 < ./3486946\(2405\).patch
aplique o patch ao arquivo Application.app indica que as alterações foram aplicadas com sucesso.
Nota: Exclua o arquivo 3486946(2405).patch da árvore do projeto após aplicar o patch.
Apêndice:
Possíveis razões para falha no comando patch
Comum:
1. Você deve estar no diretório de nível correto que corresponde à opção -p
-p
2. O arquivo deve existir na estrutura do projeto à qual você está tentando aplicar o patch
3. Aplicado parcialmente: se o patch foi aplicado a 2 de 3 arquivos Siga a etapa no. 4, Desfaça as alterações nos 2 primeiros arquivos e aplique novamente.
Importante:
4. O arquivo deve ser “suficientemente semelhante” àquele a partir do qual o patch foi produzido, caso contrário o patch não será aplicado. – Certifique-se de que o contexto do patch seja respeitado. Aplica o patch aos metadados padrão. Se estiver personalizando, abra o arquivo .patch em seu editor de texto e faça as alterações manualmente. Consulte “Qual é a estrutura de um patch» seção.
5. A etapa 4 se aplica a todos os arquivos no .patch
Outros:
- Reinicie o VSCode e tente novamente
- Abra um novo espaço de trabalho no VSCode e aplique o patch
- Aplicar o patch no SAP Business Application Studio
Qual é a estrutura de um patch?
Aqui está um patch simples da nota SAP 3486946 – SAP Service and Asset Manager – Falha na atualização do aplicativo, NativeClass não está definido
3486946(2405).patch
diff --git a/src/metadata/definitions/Application.app b/src/metadata/definitions/Application.app
index 27681dc0d5..e7e901ddcc 100644
--- a/src/metadata/definitions/Application.app
+++ b/src/metadata/definitions/Application.app
@@ -22,5 +22,5 @@
"OnSuspend": "/SAPAssetManager/Rules/ApplicationEvents/ResetPeriodicAutoSync.js",
"OnExit": "/SAPAssetManager/Rules/ApplicationEvents/ExitEventHandler.js",
"OnLinkDataReceived": "/SAPAssetManager/Rules/DeepLinks/LinkDataReceived.js",
- "_SchemaVersion": "23.4"
+ "_SchemaVersion": "24.4"
}
Divida-o em seções:
diff --git a/src/metadata/definitions/Application.app b/src/metadata/definitions/Application.app
Este é o cabeçalho diferencial do Git. diff –git não é um comando literal, mas simplesmente sugere a noção de um diff específico do Git no estilo de comando Unix.
a/src/metadata/definitions/Application.app e b/src/metadata/definitions/Application.app são os arquivos comparados, com os principais nomes de diretório aeb adicionados para distingui-los caso sejam iguais (como são aqui, este patch mostra alterações de uma versão do mesmo arquivo para outra). Para gerar esse patch, editei o arquivo Application.app e executei git diff, que mostra alterações não graduais entre a árvore de trabalho e o índice. Não há diretórios nomeados a e b no repositório, são apenas convenções.
index 27681dc0d5..e7e901ddcc 100644
Esta é uma linha de cabeçalho estendida, uma das várias formas possíveis e apenas uma neste patch. Esta linha fornece informações do índice Git sobre este arquivo: 27681dc0d5 e e7e901ddcc são os IDs de blob das versões A e B do conteúdo do arquivo comparado e 100644 são os bits de modo, indicando que este é um arquivo normal: não executável e não um link simbólico (o uso de .. aqui entre IDs de blob é apenas como um separador e não tem nada a ver com seu uso na nomenclatura). Outras linhas de cabeçalho podem indicar os modos antigo e novo se eles foram alterados, os nomes dos arquivos antigos e novos se o arquivo foi renomeado, etc.
Os IDs de blob serão usados se esse patch for aplicado posteriormente pelo Git ao mesmo projeto e ocorrerem conflitos durante a aplicação. Se esses blobs estiverem em seu banco de dados de objetos, o Git poderá usá-los para realizar uma mesclagem de três
FONTE