.
This commit is contained in:
parent
badcae7d5d
commit
bc0950bd00
101
doc/README.md
Normal file
101
doc/README.md
Normal file
@ -0,0 +1,101 @@
|
||||
Introduction
|
||||
============
|
||||
|
||||
The OBS (Open Build Service) was created at a time when VCS field was still
|
||||
evolving. One of the main issues not handled at the time was handling of large
|
||||
files. Large files are at the core of package sources -- think, upstream
|
||||
sources.
|
||||
|
||||
Today, this has changed. Git is the most popular and widely used VCS in history.
|
||||
Entire businesses are build around providing services for Git. Git has also
|
||||
ability to deal with large files via Git LFS subsystem.
|
||||
|
||||
Here, we'll detail how Git and Git LFS can be leveraged to provide a superior
|
||||
contributor environment while increasing flexibility and transparency and
|
||||
tracability in OBS project management.
|
||||
|
||||
|
||||
Overview of current project
|
||||
---------------------------
|
||||
|
||||
OBS is used to build projects. It doesn't build package or images, but it *only* builds
|
||||
projects. And while package management is exposed directly, project management is
|
||||
hidden behind APIs, legacy workflows and a monolithic codebase.
|
||||
|
||||
The goal of this project is to move *project* management to Git and facilitate
|
||||
*project* workflow via external, adaptable helpers. As a consequence, OBS will
|
||||
be used to build any project, in Git or in legacy VCS internal to OBS. But
|
||||
Git-based projects will no longer be curtailed by internal OBS machinery and can
|
||||
adapt any project specific workflow in a modular fashion, without the need to
|
||||
change OBS sources.
|
||||
|
||||
The goal is to move current workflows for openSUSE:Factory, as well as SLFO,
|
||||
out of OBS and into Git. OBS will still be used to build such projects, but
|
||||
everything else, from approvals to maintainer definitions, to project configs,
|
||||
must be moved to Git. Doing so will not only simplify workflows for package
|
||||
maintainers but also will inject transparency in project history and secure our
|
||||
infrastructure with modern cryptography.
|
||||
|
||||
|
||||
How Git works
|
||||
-------------
|
||||
|
||||
Git contains only 4 basic objects:
|
||||
* blob -- file data
|
||||
* tree -- directory listing, contains other trees or blob or commit, or
|
||||
commits (aka, submodules)
|
||||
* commit -- this contains parent commit information, tree objects, forming
|
||||
unchangable, sealed history backed by a cryptographic hash function (kind of like a
|
||||
Bitcoin blockchain)
|
||||
* tags -- additional labels associated with commits
|
||||
|
||||
A good way of thinking about Git is not as a VCS, but as a multi-version file
|
||||
system, where each revision is sealed by the new revisions.
|
||||
|
||||
Each of the objects is represented internally as part of another object via SHA256. Therefore, integrity of Git, along with entire evolution of the sources, is backed by SHA256.
|
||||
|
||||
In contrast, integrity function used by OBS is MD5.
|
||||
|
||||
|
||||
|
||||
Workflow of Git Projects
|
||||
------------------------
|
||||
|
||||
OBS connects package with project. A commit to a package, updates the projects
|
||||
where the instance of the package resides.
|
||||
|
||||
Git does not contain notion of projects and packages. It simply manages source
|
||||
trees. The work associated with managing a project and its packages is now done
|
||||
externally.
|
||||
|
||||
The basic structure of a Git managed project is below. The package repository
|
||||
contains package sources, while project repository contains all the information
|
||||
associated with the project, including pointers (aka, git submodules) of all the package sources.
|
||||
|
||||
![ProjectGit submodule points to commit in PackageGit](project.svg "ProjectGit with corresponding PackageGit")
|
||||
|
||||
An update in package must be represented as an update to the project. This can
|
||||
happen in two ways. Either direct using `prjgit-updater`, which updates the
|
||||
project git directly on pushes,
|
||||
|
||||
![ProjectGit submodule is updated following push to PackageGit](project-update.svg "ProjectGit update following PackgeGit push")
|
||||
|
||||
or indirectly via `pr-review` workflow, which updates project git via PR
|
||||
workflow,
|
||||
|
||||
![PackageGit submodule is updated via PR rerouted through ProjectGit](project-pr-update.svg "ProjectGit PR mergesPackgeGit PR")
|
||||
|
||||
In all cases, the project must be updated for the changes to be built. This is
|
||||
akin to OBS today, except that the project is an internal state, mostly hidden
|
||||
from inspection.
|
||||
|
||||
Centralization of package management
|
||||
------------------------------------
|
||||
|
||||
The proposal is to move all "official" package sources under a `/pool`
|
||||
organization. Each "official" project would then have *one* branch assigned to
|
||||
help with package updates.
|
||||
|
||||
The branches represent the current state of packages in a given project. Basic
|
||||
package updates follow the `pr-review` workflow.
|
||||
|
758
doc/project-update.svg
Normal file
758
doc/project-update.svg
Normal file
@ -0,0 +1,758 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="640"
|
||||
height="480"
|
||||
viewBox="0 0 169.33333 127"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
sodipodi:docname="project-update.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<script
|
||||
id="script2"><![CDATA[
|
||||
window.addEventListener('load', (event) => {
|
||||
layerNo = 1
|
||||
maxLayer = 1
|
||||
|
||||
updateLayers = () => {
|
||||
for (i=0; i<svg.children.length; i++) {
|
||||
elem = svg.children[i]
|
||||
e = elem.attributes['inkscape:label']
|
||||
|
||||
if(e && e.value == 'Layer' + layerNo) {
|
||||
elem.style = "display: inline;"
|
||||
} else if (e && e.value.startsWith('Layer') && !isNaN(Number(e.value.slice(5)))) {
|
||||
elem.style = "display: none;"
|
||||
}
|
||||
}
|
||||
layerNo = 1 + layerNo % maxLayer;
|
||||
};
|
||||
|
||||
svg = document.getElementById("svg5");
|
||||
for (i=0; i<svg.children.length; i++) {
|
||||
e=svg.children[i].attributes['inkscape:label']
|
||||
if (e && e.value.startsWith('Layer') && !isNaN(Number(e.value.slice(5))) && maxLayer < Number(e.value.slice(5))) {
|
||||
maxLayer = Number(e.value.slice(5))
|
||||
}
|
||||
}
|
||||
|
||||
updateLayers()
|
||||
setInterval(updateLayers, 2000)
|
||||
})
|
||||
]]></script>
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="px"
|
||||
showgrid="false"
|
||||
showborder="false"
|
||||
showguides="true"
|
||||
borderlayer="false"
|
||||
inkscape:zoom="1.1048941"
|
||||
inkscape:cx="556.61444"
|
||||
inkscape:cy="341.20918"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1055"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer2">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12931" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="TriangleStart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto-start-reverse"
|
||||
inkscape:stockid="TriangleStart"
|
||||
markerWidth="5.3244081"
|
||||
markerHeight="6.155385"
|
||||
viewBox="0 0 5.3244081 6.1553851"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always"
|
||||
preserveAspectRatio="xMidYMid">
|
||||
<path
|
||||
transform="scale(0.5)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 5.77,0 -2.88,5 V -5 Z"
|
||||
id="path135" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
id="linearGradient11538"
|
||||
inkscape:swatch="solid">
|
||||
<stop
|
||||
style="stop-color:#00ff00;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop11536" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
style="display:inline"
|
||||
sodipodi:insensitive="true">
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11542"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="35.026764"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11544"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="48.632828"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11546"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="62.238888"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11548"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="69.041916"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11550"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="55.435856"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11552"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="34.920143"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11554"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="40.535263"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11556"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="46.150379"
|
||||
cx="117.90185" />
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect8745"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="12.345296"
|
||||
ry="4.4311748" />
|
||||
<g
|
||||
id="g12938"
|
||||
inkscape:transform-center-x="20.555337"
|
||||
inkscape:transform-center-y="-0.76137238">
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect8747"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="75.344467"
|
||||
ry="4.4311748" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="36.571346"
|
||||
y="85.468292"
|
||||
id="text12313"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12311"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="36.571346"
|
||||
y="85.468292">abc123</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="mix-blend-mode:normal;fill:#ff0000;stroke:#971d20;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect8563"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="12.358525"
|
||||
ry="4.4311748" />
|
||||
<rect
|
||||
style="fill:#ff0000;stroke:#971d20;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect8749"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="50.890579"
|
||||
ry="4.4311748" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse12343"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="41.829796"
|
||||
cx="42.27565" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="34.686447"
|
||||
y="9.218442"
|
||||
id="text12347"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12345"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="34.686447"
|
||||
y="9.218442">Pkg A</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="104.41515"
|
||||
y="9.481307"
|
||||
id="text12351"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12349"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="104.41515"
|
||||
y="9.481307">Project B</tspan></text>
|
||||
<path
|
||||
style="fill:#0000ff;fill-rule:evenodd;stroke:#3744ff;stroke-width:0.614402px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 100.90122,75.053007 V 100.05301"
|
||||
id="dirlist"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.26206"
|
||||
y="78.953926"
|
||||
id="text12521"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12519"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.26206"
|
||||
y="78.953926">_config</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="84.456581"
|
||||
id="text12525"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12523"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="84.456581">project.build</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.13494"
|
||||
y="90.486328"
|
||||
id="text12529"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12527"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.13494"
|
||||
y="90.486328">maintainer.info</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="95.285149"
|
||||
id="text12533"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12531"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="95.285149">pkgA - <tspan
|
||||
style="fill:#2b2fd0;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="tspan12637">[abc123]</tspan></tspan></text>
|
||||
<path
|
||||
style="display:inline;fill:#808000;fill-rule:evenodd;stroke:#808000;stroke-width:0.559949;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart);image-rendering:auto"
|
||||
d="M 104.56693,94.121259 64.939894,85.735877"
|
||||
id="path12705"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="Layer2"
|
||||
id="g5346"
|
||||
inkscape:groupmode="layer"
|
||||
style="display:none"
|
||||
sodipodi:insensitive="true">
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5284"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="35.026764"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5286"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="48.632828"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5288"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="62.238888"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5290"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="69.041916"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5292"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="55.435856"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5294"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="34.920143"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5296"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="40.535263"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5298"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="46.150379"
|
||||
cx="117.90185" />
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect5300"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="12.345296"
|
||||
ry="4.4311748" />
|
||||
<g
|
||||
id="g5308"
|
||||
inkscape:transform-center-x="20.555337"
|
||||
inkscape:transform-center-y="-0.76137238"
|
||||
transform="translate(0,6.879167)">
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect5302"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="75.344467"
|
||||
ry="4.4311748" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="36.571346"
|
||||
y="85.468292"
|
||||
id="text5306"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5304"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="36.571346"
|
||||
y="85.468292">cdefg3</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="mix-blend-mode:normal;fill:#ff0000;stroke:#971d20;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5310"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="12.358525"
|
||||
ry="4.4311748" />
|
||||
<rect
|
||||
style="fill:#ff0000;stroke:#971d20;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect5312"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="50.890579"
|
||||
ry="4.4311748" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5314"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="41.829796"
|
||||
cx="42.27565" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="34.686447"
|
||||
y="9.218442"
|
||||
id="text5318"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5316"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="34.686447"
|
||||
y="9.218442">Pkg A</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="104.41515"
|
||||
y="9.481307"
|
||||
id="text5322"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5320"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="104.41515"
|
||||
y="9.481307">Project B</tspan></text>
|
||||
<path
|
||||
style="fill:#0000ff;fill-rule:evenodd;stroke:#3744ff;stroke-width:0.614402px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 100.90122,75.053007 V 100.05301"
|
||||
id="path5324"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.26206"
|
||||
y="78.953926"
|
||||
id="text5328"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5326"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.26206"
|
||||
y="78.953926">_config</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="84.456581"
|
||||
id="text5332"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5330"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="84.456581">project.build</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.13494"
|
||||
y="90.486328"
|
||||
id="text5336"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5334"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.13494"
|
||||
y="90.486328">maintainer.info</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="95.285149"
|
||||
id="text5342"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5340"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="95.285149">pkgA - <tspan
|
||||
style="fill:#2b2fd0;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="tspan5338">[abc123]</tspan></tspan></text>
|
||||
<path
|
||||
style="display:inline;fill:#808000;fill-rule:evenodd;stroke:#808000;stroke-width:0.559949;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart);image-rendering:auto"
|
||||
d="M 104.56693,94.121259 47.038205,76.629952"
|
||||
id="path5344"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse5397"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="75.921089"
|
||||
cx="42.27565" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="Layer3"
|
||||
id="g374"
|
||||
inkscape:groupmode="layer"
|
||||
style="display:none">
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse310"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="35.026764"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse312"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="48.632828"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse314"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="62.238888"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse316"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="69.041916"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse318"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="55.435856"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse320"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="34.920143"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse322"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="40.535263"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse324"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="46.150379"
|
||||
cx="117.90185" />
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect326"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="12.345296"
|
||||
ry="4.4311748" />
|
||||
<g
|
||||
id="g334"
|
||||
inkscape:transform-center-x="20.555337"
|
||||
inkscape:transform-center-y="-0.76137238"
|
||||
transform="translate(0,6.879167)">
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect328"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="75.344467"
|
||||
ry="4.4311748" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="36.571346"
|
||||
y="85.468292"
|
||||
id="text332"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan330"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="36.571346"
|
||||
y="85.468292">cdefg3</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="mix-blend-mode:normal;fill:#ff0000;stroke:#971d20;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect336"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="12.358525"
|
||||
ry="4.4311748" />
|
||||
<rect
|
||||
style="fill:#ff0000;stroke:#971d20;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect338"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="56.182251"
|
||||
ry="4.4311748" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse340"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="41.829796"
|
||||
cx="42.27565" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="34.686447"
|
||||
y="9.218442"
|
||||
id="text344"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan342"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="34.686447"
|
||||
y="9.218442">Pkg A</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="104.41515"
|
||||
y="9.481307"
|
||||
id="text348"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan346"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="104.41515"
|
||||
y="9.481307">Project B</tspan></text>
|
||||
<path
|
||||
style="fill:#0000ff;fill-rule:evenodd;stroke:#3744ff;stroke-width:0.614402px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 100.90122,80.344677 V 105.34471"
|
||||
id="path350"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.26206"
|
||||
y="84.245598"
|
||||
id="text354"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan352"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.26206"
|
||||
y="84.245598">_config</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="89.748253"
|
||||
id="text358"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan356"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="89.748253">project.build</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.13494"
|
||||
y="95.778"
|
||||
id="text362"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan360"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.13494"
|
||||
y="95.778">maintainer.info</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="100.57679"
|
||||
id="text368"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan366"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="100.57679">pkgA - <tspan
|
||||
style="fill:#2b2fd0;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="tspan364">[cdefg3]</tspan></tspan></text>
|
||||
<path
|
||||
style="display:inline;fill:#808000;fill-rule:evenodd;stroke:#808000;stroke-width:0.559949;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart);image-rendering:auto"
|
||||
d="M 104.48033,99.805101 65.564009,92.387895"
|
||||
id="path370"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse372"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="75.921089"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse583"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="51.442051"
|
||||
cx="117.90185" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer4"
|
||||
style="display:none" />
|
||||
<metadata
|
||||
id="metadata8476">
|
||||
<rdf:RDF>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by/4.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by/4.0/" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Adam Majer</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:date>2024-08-18</dc:date>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</svg>
|
After Width: | Height: | Size: 36 KiB |
301
doc/project.svg
Normal file
301
doc/project.svg
Normal file
@ -0,0 +1,301 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="640"
|
||||
height="480"
|
||||
viewBox="0 0 169.33333 127"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
sodipodi:docname="project.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="px"
|
||||
showgrid="false"
|
||||
showborder="false"
|
||||
showguides="true"
|
||||
borderlayer="false"
|
||||
inkscape:zoom="2.2097881"
|
||||
inkscape:cx="491.6761"
|
||||
inkscape:cy="268.80405"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1055"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12931" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="TriangleStart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto-start-reverse"
|
||||
inkscape:stockid="TriangleStart"
|
||||
markerWidth="5.3244081"
|
||||
markerHeight="6.155385"
|
||||
viewBox="0 0 5.3244081 6.1553851"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always"
|
||||
preserveAspectRatio="xMidYMid">
|
||||
<path
|
||||
transform="scale(0.5)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 5.77,0 -2.88,5 V -5 Z"
|
||||
id="path135" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
id="linearGradient11538"
|
||||
inkscape:swatch="solid">
|
||||
<stop
|
||||
style="stop-color:#00ff00;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop11536" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11542"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="35.026764"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11544"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="48.632828"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11546"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="62.238888"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11548"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="69.041916"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11550"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="55.435856"
|
||||
cx="42.27565" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11552"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="34.920143"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11554"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="40.535263"
|
||||
cx="117.90185" />
|
||||
<ellipse
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#971d20;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse11556"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="46.150379"
|
||||
cx="117.90185" />
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect8745"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="12.345296"
|
||||
ry="4.4311748" />
|
||||
<g
|
||||
id="g12938"
|
||||
inkscape:transform-center-x="20.555337"
|
||||
inkscape:transform-center-y="-0.76137238">
|
||||
<rect
|
||||
style="fill:#00ff00;stroke:#00a849;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect8747"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="21.707499"
|
||||
y="75.344467"
|
||||
ry="4.4311748" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="36.571346"
|
||||
y="85.468292"
|
||||
id="text12313"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12311"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="36.571346"
|
||||
y="85.468292">abc123</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="mix-blend-mode:normal;fill:#ff0000;stroke:#971d20;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect8563"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="12.358525"
|
||||
ry="4.4311748" />
|
||||
<rect
|
||||
style="fill:#ff0000;stroke:#971d20;stroke-width:0.264583;stroke-opacity:1"
|
||||
id="rect8749"
|
||||
width="41.136299"
|
||||
height="17.88035"
|
||||
x="97.333694"
|
||||
y="50.890579"
|
||||
ry="4.4311748" />
|
||||
<ellipse
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#00a849;stroke-width:0.343958;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
id="ellipse12343"
|
||||
ry="1.6656893"
|
||||
rx="1.6767484"
|
||||
cy="41.829796"
|
||||
cx="42.27565" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="34.686447"
|
||||
y="9.218442"
|
||||
id="text12347"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12345"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="34.686447"
|
||||
y="9.218442">Pkg A</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="104.41515"
|
||||
y="9.481307"
|
||||
id="text12351"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12349"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.93889px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.291042"
|
||||
x="104.41515"
|
||||
y="9.481307">Project B</tspan></text>
|
||||
<path
|
||||
style="fill:#0000ff;fill-rule:evenodd;stroke:#3744ff;stroke-width:0.614402px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 100.90122,75.053007 V 100.05301"
|
||||
id="dirlist"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.26206"
|
||||
y="78.953926"
|
||||
id="text12521"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12519"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.26206"
|
||||
y="78.953926">_config</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="84.456581"
|
||||
id="text12525"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12523"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="84.456581">project.build</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.13494"
|
||||
y="90.486328"
|
||||
id="text12529"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12527"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.13494"
|
||||
y="90.486328">maintainer.info</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.175px;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.291042;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="107.02952"
|
||||
y="95.285149"
|
||||
id="text12533"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12531"
|
||||
style="stroke-width:0.291042"
|
||||
x="107.02952"
|
||||
y="95.285149">pkgA - <tspan
|
||||
style="fill:#2b2fd0;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="tspan12637">[abc123]</tspan></tspan></text>
|
||||
<path
|
||||
style="display:inline;fill:#808000;fill-rule:evenodd;stroke:#808000;stroke-width:0.559949;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart);image-rendering:auto"
|
||||
d="M 104.56693,94.121259 64.939894,85.735877"
|
||||
id="path12705"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata8476">
|
||||
<rdf:RDF>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by/4.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by/4.0/" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Adam Majer</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:date>2024-08-18</dc:date>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
Loading…
Reference in New Issue
Block a user