Что такое Репозиторий?

Что такое Репозиторий?

Если вы общаетесь с людьми, которые пишут программы или используют Unix/Linux системы, то вы просто не могли не слышать такое слово как Репозиторий. Просто потому что в нынешнее время это уже скорее обыденность, чем эксклюзив.

О том, что значит это слово и зачем репозитории нужны, и пойдёт речь в данном обзоре.

 

Репозиторий это

Что такое Репозиторий?

Репозиторий, репозитарий (repository - хранилище) - это, в общем смысле, место, где хранятся и поддерживаются какие-либо данные. Самый банальный пример - это библиотека с книгами. Вы в любой момент можете прийти и получить нужную вам книгу. При этом в самой библиотеке книги хранят специальным образом, а не сваливают в одну кучу.

Примечание: Чаще всего используют слово репозитОрий, но и репозитАрий также встречается.

Под репозиторием в ИТ обычно подразумевают место хранения и контроля версий программного кода. Например, такие системы как SVN (Subversion) и Git. Тем не менее, нужно понимать, что термин репозиторий может использоваться в более широком смысле. Например, в Unix/Linux системах (Ubuntu, Debian, Fedora, openSUSE, CentOS и т.п.) под репозиторием также подразумевают внешние хранилища с инсталляционными файлами (по сути, адреса серверов в интернете, с которых можно быстро скачать нужные программы и библиотеки).

Виды репозиториев программного кода:

1. Локальный. В данном случае репозиторий расположен прямо на том компьютере, где автор пишет свои программы.

2. Централизованный. Данный вид подразумевает, что репозиторий это отдельный сервер, а остальные к нему подключаются.

3. Распределённый. Это гибридный вариант локального и централизованного видов репозитория. Задача такого подхода в том, чтобы уменьшить нагрузку в сети и упростить жизнь авторам, в случае если программу пишут несколько или много людей.

Основная суть. У каждого автора существует свой локальный репозиторий, в который он активно (ну или как получается) сохраняет свои "поделки". В какой-то момент времени (много правок было внесено, появился доступ к интернету и т.п.) автор синхронизирует локальный репозиторий с централизованным. В такой ситуации меньше нагрузка на сервер (правки синхронизируются периодически, а не каждый раз) и меньше времени тратится на исправление недочётов при внесении несколькими авторами правок в общий код (правда, от практики и подхода зависит, но всё же).

Абстрактный пример для понимания. Допустим, Коле и Пете нужно набрать какой-то текст. При этом сложность в том, что часть текста пересекается. Скажем, Коля пишет введение и часть середины, а Петя вторую часть середины и оставшееся.

Как подсказывает логика, должно быть так, что Коля вначале пишет свою часть текста, а потом уже Петя его дописывает. Но в области программирования такое не всегда возможно. Чаще всего Коля и Петя пишут одновременно свой текст. Соответственно, существенно проще будет кому-то из них корректировать свою часть текста, если другая часть середины будет уже полностью написана, чем в ситуации, когда середина текста будет кусками редактироваться в стиле "Коля увидел первую фразу Пети и начал писать, через 5 минут посмотрел текст, а Петя уже поменял фразу, в свою очередь Петя посмотрел написанное Колей и ещё раз решил переформулировать фразу, о чём Коля узнает также минут через 5, и так до бесконечности".

 

Зачем нужны репозитории в ИТ?

Если говорить лаконично, то репозитории нужны в ИТ для сохранности (надёжности, целостности), управляемости и доступности данных (как минимум). Уже предчувствую, что читателю будет недостаточно этого небольшого определения, поэтому рассмотрим моменты по пунктам.

Пожалуй, самое первое и очевидное это доступность данных. Смысл элементарен. Существует некое хранилище (или несколько), откуда вы всегда можете достать нужные вам данные. Банальный пример это репозитарий GitHub, в котором хранятся тысячи разнообразных opensource проектов (программы с открытым исходным кодом). Ну или тот же пример с Unix/Linux системами, где достаточно добавить ссылку на репозитарий и можно скачивать нужные вам установочные пакеты (нет необходимости таскать с собой кучу дистрибутивов, достаточно списка репозиториев).

Кстати, обзор в тему Понятие бесплатного программного обеспечения (Freeware).

Второе это сохранность (надёжность, целостность). Вы когда-нибудь проверяли хэш сумму файла, скажем, по алгоритму md5? И тут вполне ожидаемой реакцией читателя будет вопрос "Что за набор слов???". А ведь это один из давно известных механизмов, который позволяет проверить целостность файлов (текстов). Собственно, этим и тому подобными вещами занимается репозиторий - решает задачу "чтобы надёжно хранилось".

Третье это управляемость. В частности, тот самый пример про Колю и Петю. Только теперь представьте, что этих людей тысячи и больше. Если в репозитарии не будет механизма для управления, то подобное легко может превратиться в хаос. Иное дело, что необязательно должен быть один репозиторий для всего. В тех же Unix/Linux системах много разных репозиториев (и под разные виды ОС) и это удобно. Не говоря уже о том, что конкуренция позволяет двигаться вперёд, а не болтаться на одном месте, как это происходит при монополиях, но это уже оффтопик.

Суммируя вышесказанное, появление репозиториев это вполне логичное явление, учитывая скорость развития области информационных технологий. Банальный пример, в нынешнее время ни один обычный пользовательский компьютер просто не сможет уместить в себе "интернет". Это раньше можно было, скажем, представить себе CD/DVD с полным набором нужных программ, сейчас же даже 4 Гб у DVD это крайне небольшой объём (даже максимальный Blu-Ray с 128 Гб это максимум небольшая коллекция фильмов).

Так же вам может быть интересен обзор Что такое MVP (минимальный продукт)?

Понравилась заметка? Тогда время подписываться в социальных сетях и делать репосты!

Социальные сети

☕ Понравился обзор? Поделитесь с друзьями!

Добавить комментарий / отзыв
Комментарий - это вежливое и наполненное смыслом сообщение (правила).



* Нажимая на кнопку "Отправить", Вы соглашаетесь с политикой конфиденциальности.
Социальные сети
Программы (Freeware, OpenSource...)