Design decisions
While developing subpatch, I took the following design decisions. The requirement list still gives a lot of freedom for the implementation. Therefore this page documents and explains the chosen decisions here.
DD1: written in python3 (but open for a port to another language later if successful)
- [+] faster iteration speed
- [+] Easier deployment/install for users of subpatch. python runs everywhere.
- [+] Programming language that I know really good and written a lot of code already.
DD2: config file format is git-config
- [+] the same config format that the main scm tool for subpatch (=git) uses.
- [+] Most developers are already familiar with the config format, e.g. because
they are modyfing
~/.git config
.
DD3: The config is a single file and placed at the root of the repository
- [+] The project's root directory can be found even without scm. E.g. after
the source code was exported with
git archive
. - [+] A single file avoids a search in all sub directories. Can be expensive for big projects.
DD4: Published as a standalone and single python script
TODO add [+] points here
DD5: Filenames and file system paths are python bytes objects, not strings
TODO add [+] points here
DD6: The subproject's history is not include in the superproject's history.
TODO E.g. git-subtree and combo-layers are doing this
TODO This is against learing L4 (minimize accidentally complexity)
TODO add [+],[-] points here
Note: This list is not completed yet and should grow while supbatch is developed.