Кіріспе

Ревизияны басқару бағдарламалық жасақтамасы

Monotone – таратылған нұсқаны басқаруға арналған ашық кодты бағдарламалық құрал. Ол файлдарға енгізілген өзгерістерді қадағалайды, өзгерістерді жиынтықтарға біріктіреді және файлдарды қайта атау тарихын сақтайды. Жобаның басты назарында – өнімділіктен гөрі қауіпсіздік. Monotone үлестірілген жұмыс үшін жасалған, файлдардың нұсқаларын (SHA-1 қамтитын хэш арқылы) және пайдаланушы әрекеттерін (RSA криптографиялық қолтаңбалары арқылы) растау үшін криптографиялық құралдарды кеңінен пайдаланады.

Басты оқиғалар

Monotone 0.26 нұсқасы Monotone әзірлеушілері "roster" деп аталатын жаңа құрылымды қоса, ішкі деректер базасы құрылымына маңызды өзгерістер енгізді. 0.26 нұсқасымен жасалған Monotone деректер базалары ескі Monotone деректер базаларымен өзгерістер алмаса алмайды. Ескі деректер базаларын алдымен жаңа форматқа жаңарту қажет. Жаңа netsync протоколы Monotone-нің бұрынғы нұсқаларымен үйлесімсіз болып табылады.

Дизайн

GNU Arch сияқты, бірақ Subversion-нан өзгеше, Monotone нұсқаны басқаруға таратылған тәсіл қолданады. Monotone, Git және Mercurial сияқты, сызықтық нөмірлеудің орнына, нақты файлдарды немесе файлдар тобын анықтау үшін SHA-1 хэштерін пайдаланады. Әрбір қатысушы өзгерту тарихын жеке SQLite дерекқорында сақтайды.

Адалдық

0.27 нұсқасындағы күрделі оңтайландыруларға дейін, Monotone-ның оңтайландырудан гөрі дұрыстыққа баса назар аударуы жиі жаңа пайдаланушылардың алғашқы жағымсыз тәжірибесіне себеп болып келді. Жаңа пайдаланушының бірінші қадамы әдетте үлкен Monotone дерекқорын синхрондау (клондау) болып табылады, бұл үлкен дерекқорлар үшін, Monotone түзетулер желі арқылы жылжығанда кең ауқымды растау және тұтастығын тексеруден өтуіне байланысты, көбінесе сағаттарға созылуы мүмкін. Бастапқы (клондалған) дерекқоры толтырылғаннан кейін, келесі әрекеттер әдетте жылдамдатылады. 2010 жылғы мәліметтерге сәйкес, кейбір сирек қолданылатын функцияларды одан әрі оңтайландыруға әлі де мүмкіндік бар.

Жұмыс ағыны

Monotone ерекше түрде дивергенция/біріктіру жұмыс ағынын қолдауға баса назар береді, бұл мүмкіндіктің бір бөлігі ретінде әрқашан біріктіру алдында коммит жасауға рұқсат етеді.

Желі құру

Монотон бастапқыда ағаштарды синхрондау үшін әртүрлі желілік протоколдарды қолдағанмен, қазір тек netsync деп аталатын арнайы протоколды ғана қолданады. Бұл протокол бұрынғыларына қарағанда сенімді әрі тиімді, сондай-ақ rsync және cvsup протоколдарымен ұқсас принциптерге негізделген. (Дегенмен, 0.27 нұсқасынан бастап netsync протоколын кез келген дерек ағыны арқылы пайдалану мүмкіндігі бар, оның ішінде ssh қосылымдары да.) Netsync-тің IANA тағайындаған дербес порты (4691) бар, ал оның ескі нұсқаларын трафик талдау үшін Wireshark плагині қолдайды. Жеке Monotone сервері қажет емес, себебі кез келген Monotone клиенті сервер қызметін атқара алады.

Іске асыру

Монотон қазіргі заманғы C++ диалектісінде Boost кітапханасы, Botan криптографиялық кітапханасы және SQLite деректер базасы кітапханасы негізінде жүзеге асырылған. Монотон Lua бағдарламалау тілінде жазылған байланыс функциялары арқылы конфигурациялау мен кеңейтуді қолдайды. Монотонды құрастыру процесі BuildBot арқылы автоматтандырылған және кең ауқымды регрессиялық тесттерді қамтиды.