New Serializers
Task List for New Serializers
The following list includes the mandatory and recommended tasks for adding a new serializer to abapGit:
Check Support for New Object Types
If the object type is listed already (and not implemented), check the corresponding issue. Typically, you will find valuable discussions to continue or previous work to use as a starting point.
If the object type is not included in the list, create an issue with the title "<OBJECT_TYPE>: Support for <OBJECT_TYPE_DESCRIPTION>" (for example, "TABL: Support for Tables"). Briefly describe why the object is needed and outline the implementation approach.
Wait for the OK from abapGit maintainers
Before starting the implementation, it's best to wait for feedback from the community. Once you get the go-ahead, the issue will be assigned to you.
Info
abapGit maintainers will add your issue to a central list and, if there's no further discussion required, close it.
Implement the serializer class
Follow the instructions below. Often, it makes sense to use an existing serializer class as a template. This can save a lot of work especially if the new object type is similar to others.
Warning
Your code must comply with the development guidelines for abapGit. Most notably your code must be compatible with 7.02 ABAP syntax and available standard SAP objects, use prefixing of variables, be pretty-printed, and pass all abaplint checks.
You might get lots of abaplint errors. If you are uncertain how to resolve these, maintainers are happy to help.
Create a test repository
Define a minimal test case for the new object type and commit it to a test repo in abapGit Test Repositories. If you don't have access, use the issue you created initially to ask for it. See "Testing" below for an example.
Test your implementation
Perform a complete test cycle with your test repository:
- Create New Online Repo for a local package (for example
$TABL
) - Execute a Pull (should install without any diffs)
- Uninstall the repository (should not leave any objects of TADIR entries behind)
- Repeat the process for a transportable package (for example
ZTABL
)
- Create New Online Repo for a local package (for example
Create a pull request for your implementation
Fork the abapGit repository and add a branch for your serializer class. Commit your implementation (the
zcl_abapgit_object_<type>
class) to the branch, and create a pull request to the abapGit repository. Reference your issue in the pull request and add a link to the test repository.Note: Object types using the ABAP File Format must be added to the AFF Registry as well.
Update documentation
Add the new object type to the list of supported objects. If the object type is using the ABAP File Format (JSON), add a link to the corresponding JSON schema in the AFF repository.
Wait for feedback from and merge by abapGit maintainers
One of the maintainers will typically do a code review, run the test themselves, and either provide feedback or merge the pull request.
Completing tasks
After a successful merge, abapGit developer and standalone version will support the new object type. Congratulations. Feel free to tell the world about it!