0install: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Add dependency filename aliasing as huge benefit of the development setup.) |
(Add referencing files using relative links consistently as further advantages of the development setup.) |
||
Zeile 1: | Zeile 1: | ||
==Why== | ==Why== | ||
0install is used as cross-platform dependency resolver for not having to package the projects' releases for multiple package managers. | 0install is used as cross-platform dependency resolver for not having to package the projects' releases for multiple package managers. | ||
+ | |||
This allows: | This allows: | ||
* modular, flexible development (single source principle). | * modular, flexible development (single source principle). | ||
Zeile 16: | Zeile 17: | ||
* having the 0install XML file under version control where it belongs: in the same repository where the project sources reside. | * having the 0install XML file under version control where it belongs: in the same repository where the project sources reside. | ||
* aliasing filenames a project depends upon to a functional general name to be able to exchange a file (e.g. a used image or schematic) later without updating all used references e.g. in FreeCAD or blender files (which may be binary where search replace does not work easily). | * aliasing filenames a project depends upon to a functional general name to be able to exchange a file (e.g. a used image or schematic) later without updating all used references e.g. in FreeCAD or blender files (which may be binary where search replace does not work easily). | ||
− | + | * referencing files of dependencies using relative links (as if the dependencies were located as a folder in the current working directory | |
+ | * to increase development consistency. | ||
Version vom 21. Dezember 2016, 05:45 Uhr
Why
0install is used as cross-platform dependency resolver for not having to package the projects' releases for multiple package managers.
This allows:
- modular, flexible development (single source principle).
- using the same toolchain for developing all kinds of projects (not only code)
- on all operating systems.
- version control.
- distributing, depending on modules in any revision and not only a certain release. (Releasing/tagging revisions is optional for development but still useful for indicating stable versions.)
- automatic backup of projects.
- easy testing of modules locally without breaking the system due to multiple versions of a package.
- developer interaction (world wide team work) without being forced to release just to allow other developers to fetch the new changes (because Git is the base system)
- users turning into developers with ease (because 0install is used for releases and can fetch the sources, i.e. the Git repository contents).
- easily fetching, inspecting the sources of a project in a certain version. (e.g. to debug or further develop / fork a local version, this can be rebased later on)
- preventing dependency mess.
- linear project history (not mandatory but possible) and all other Git powers.
- having the 0install XML file under version control where it belongs: in the same repository where the project sources reside.
- aliasing filenames a project depends upon to a functional general name to be able to exchange a file (e.g. a used image or schematic) later without updating all used references e.g. in FreeCAD or blender files (which may be binary where search replace does not work easily).
- referencing files of dependencies using relative links (as if the dependencies were located as a folder in the current working directory
- to increase development consistency.
How to package
A module package version is released directly in the Git repository. (see epic 0install <-> git interaction outlined under #Why
It is packaged using the repository contents. => No magic extra ingredients to be figured out, then merged.
The resulting package can be hosted in the version control repository but it might be desirable to have it separate for big release data amounts. The package URI is provided in the 0install XML file.
How to install, depend on a module
Install a module / package:
0install add <repository.uri>/<module>.xml
Depend on a module by using the 0install XML file URI of the corresponding module repository.