ΠΠ°Π»ΠΈΡΠ½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° gittuf 0.4, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ° ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ° ΡΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΈΠΌΠ°ΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. Gittuf ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠ»ΠΎΠΉ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ ΠΊΡΠΌ Git ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Go ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· Apache 2.0. ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ Π² Π°ΠΊΡΠΈΠ²Π½Π° ΡΠ°Π·Π° Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΈ ΠΈΠΌΠ° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π½Π° Π°Π»ΡΠ° Π²Π΅ΡΡΠΈΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π³ΠΎΡΠΎΠ²Π° Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ΅, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π·Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° gittuf, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΡΡΠ»ΡΠ³ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ GitHub ΠΈ GitLab. ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π±Π΅Π· ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° gittuf Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΎΡΡΠ°Π²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ, Π½ΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠ»ΠΎΡΡ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° gittuf Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° TUF (The Update Framework), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΠ°ΡΠΎ Docker, Fuchsia, AGL (Automotive Grade Linux) ΠΈ PyPI.
ΠΠΎΠ΄Π΅Π»ΡΡ Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π² gittuf Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅. ΠΠΎΡΠ΅Π½ΡΡ Π½Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ΡΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΈ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ°, ΡΡΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ. Gittuf ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ²ΠΊΠ°Π²ΠΈ, Π³ΡΠ°Π½ΡΠ»ΠΈΡΠ°Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΠΈ ΠΏΡΠ°Π²ΠΎΠΌΠΎΡΠΈΡΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, Π² ΠΊΠΎΡΡΠΎ ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π½Π°ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠ΅Π½ Π΄Π° ΡΡΠ·Π΄Π°Π²Π° ΡΠ°Π³ΠΎΠ²Π΅, Π΄Π° ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΌΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΠΏΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ. Gittuf ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΠΎ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½Π°ΡΠ° ΡΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΎΡΠ·ΠΎΠ²Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΏΠΈΡΡΡΠΈ Ρ Π΄ΠΎΡΡΡΠΏ (ACL) ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΡΠ° ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π² Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. Gittuf ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΎΠ΄ΠΈ Π΅ΡΠ°Π»ΠΎΠ½Π΅Π½ Π»ΠΎΠ³ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (RSL β Reference State Log), ΡΠΈΡΡΠΎ ΡΡΠ»ΠΎΡΡ ΠΈ Π·Π°ΡΠΈΡΠ° ΠΎΡ ΡΠ΅ΡΡΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΡΡΠ΅Π· Π΄ΡΡΠ²ΠΎΠ²ΠΈΠ΄Π½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° βΠ΄Π΅ΡΠ΅Π²ΠΎ ΠΠ΅ΡΠΊΠ»Π°β (Merkle Tree) β Π²ΡΡΠΊΠ° ΠΊΠ»ΠΎΠ½ΠΊΠ° ΠΏΠΎΡΠ²ΡΡΠ΄ΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠΈ ΠΊΠ»ΠΎΠ½ΠΈ ΠΈ Π²ΡΠ·Π»ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ²ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ (ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΡΠ°ΠΉΠ½ΠΈΡ Ρ Π΅Ρ, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈ Π² ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠ»Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΈ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΡ).
ΠΠ° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠΈΡΡΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ ΠΈ ΡΠ°Π³ΠΎΠ²Π΅, ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΡΡ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠ° ΡΠΎΡΠΌΡΠ»ΠΈΡΠ° ΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΎΡΠΊΡΠΈΡΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΡΡΠΊΠΎ Π°ΡΠΎΡΠΈΠΈΡΠ°Π½ΠΈ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Π½Π° Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±ΠΈ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΡΠ»Π΅Π΄ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΎΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΎΡΠ·ΠΎΠ²Π°Π²Π°Π½Π΅ΡΠΎ ΠΈ Π·Π°ΠΌΡΠ½Π°ΡΠ° Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅. ΠΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΠΆΠΈΠ²ΠΎΡ ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ Ρ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
