El .abapgit.xml y el mapeo de paquetes: la pieza que casi nadie mira
Ese fichero pequeño en la raíz del repo decide cómo se traducen los paquetes ABAP a carpetas y viceversa. Folder logic FULL o PREFIX, master language, starting folder. Aquí está lo que hace y por qué importa.
Por Logali Tech 2 min de lectura
Cuando haces tu primer push con abapGit, en la raíz del repositorio aparece un fichero discreto: .abapgit.xml. La mayoría de la gente lo ignora hasta que un pull importa objetos en el paquete equivocado. Entonces descubren, tarde, que ese fichero es el contrato entre tu jerarquía de paquetes ABAP y la estructura de carpetas del repo.
Qué contiene
El .abapgit.xml guarda la configuración del repositorio. Sus campos clave:
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml">
<asx:values>
<DATA>
<MASTER_LANGUAGE>E</MASTER_LANGUAGE>
<STARTING_FOLDER>/src/</STARTING_FOLDER>
<FOLDER_LOGIC>FULL</FOLDER_LOGIC>
<IGNORE>
<item>/.gitignore</item>
<item>/README.md</item>
</IGNORE>
</DATA>
</asx:values>
</asx:abap>
</abapGit>
- MASTER_LANGUAGE: el idioma maestro de los textos. Fíjalo bien desde el principio; cambiarlo después es doloroso.
- STARTING_FOLDER: la carpeta donde vive el código, casi siempre
/src/. - FOLDER_LOGIC: cómo se mapean paquetes a carpetas. Es el campo que decide todo.
- IGNORE: patrones de ficheros que abapGit no toca.
FULL frente a PREFIX: la decisión que importa
Al vincular un paquete, abapGit te pregunta por la lógica de carpetas. Hay dos opciones y no son intercambiables a la ligera:
- FULL: acepta cualquier nombre de subpaquete. La estructura de carpetas refleja la jerarquía real de paquetes tal cual.
- PREFIX: exige que todos los subpaquetes lleven el nombre del paquete principal como prefijo. Las carpetas usan solo la parte que sobra tras el prefijo, así que quedan más cortas.
flowchart TD ROOT["Paquete raíz ZPROJECT"] --> SUB1["Subpaquete ZPROJECT_CORE"] ROOT --> SUB2["Subpaquete ZPROJECT_UI"] SUB1 --> F1["FULL: /src/zproject_core/"] SUB1 --> P1["PREFIX: /src/core/"] SUB2 --> F2["FULL: /src/zproject_ui/"] SUB2 --> P2["PREFIX: /src/ui/"]
Mi recomendación práctica: FULL por defecto. Es la opción que abapGit sugiere y la menos sorprendente, porque el nombre de la carpeta coincide con el nombre real del paquete. PREFIX solo compensa si tu convención de nombres es tan estricta que el prefijo repetido en cada carpeta se vuelve ruido puro.
Por qué esto te muerde
El escenario clásico del dolor: vinculas un repo con FOLDER_LOGIC FULL en el sistema origen, y en el destino intentas hacer pull esperando otra estructura de paquetes. Si el mapeo no cuadra con los paquetes que existen, o abapGit crea paquetes que no querías o falla el pull.
- El
.abapgit.xmlviaja con el repo, no con el sistema. Quien haga pull hereda tu decisión. - Cambiar FOLDER_LOGIC a mitad de proyecto reorganiza todas las carpetas: un commit gigante y ruidoso.
El
.abapgit.xmlno es metadata decorativa. Es el mapa que traduce paquetes a carpetas. Decídelo una vez, al crear el repo, y no lo toques salvo que sepas exactamente qué reorganización estás provocando.
Consejo final: fija MASTER_LANGUAGE y FOLDER_LOGIC en el primer commit, revisa que STARTING_FOLDER sea /src/, y deja ese fichero en paz. Es de las pocas cosas en abapGit donde “configurar y olvidar” es la respuesta correcta.
¿Te ha resultado útil?
Gracias por tu valoración.
Comentarios
Aún no hay comentarios.