Дата добавления
08.10.2019
Дата обновления
18.06.2021
Строим Git - это глубокое погружение во внутренности системы контроля версий Git. Перестраивая его на языке программирования высокого уровня, мы исследуем информатику, стоящую за этим широко используемым инструментом. В процессе мы получаем более глубокое понимание самого Git, а также охватываем широкий спектр широко применимых тем программирования, в том числе:
Концепции Unix
- Чтение и запись из файлов, делая записи атомарными, предотвращают состязание между процессами
- Запуск дочерних процессов на переднем и заднем плане, общение с ними одновременно
- Отображение вывода в терминале, включая форматирование цвета, постраничный вывод и взаимодействие с текстовым редактором пользователя
- Анализ различных форматов файлов, включая модель фиксации на основе дерева Git, индекс, файлы конфигурации и упакованные объектные файлы.
Структуры данных
- Как Git хранит контент на диске, чтобы эффективно использовать пространство, сделать историю эффективной для поиска и облегчить обнаружение различий между коммитами
- Использование diffs для эффективного обновления содержимого рабочего пространства при извлечении нового коммита
- Эффективное использование простых структур данных в памяти для решения задач программирования
- Разбор и интерпретация языка запросов для адресации коммитов
Одновременное редактирование
- Как Git использует ветки для моделирования одновременных правок
- Алгоритмы обнаружения различий между версиями файлов и слиянием ветвей
- Почему возникают конфликты слияний, как их можно избежать и как Git помогает пользователям предотвращать потерянные обновления
- Как слияние может быть использовано в качестве основы для многочисленных операций по редактированию истории коммитов
Разработка программного обеспечения
- Самозагрузка и развитие системы хостинга
- Разработка через тестирование
- Рефакторинг для обеспечения возможности разработки новых функций
- Разработка программного обеспечения только для сбоев, которое позволяет прерывать и возобновлять программы
Сеть
- Использование SSH для начальной загрузки сетевого протокола
- Как Git-репозитории взаимодействуют, чтобы минимизировать данные, которые они должны передавать при извлечении контента
- Как сетевой протокол использует атомарные операции для предотвращения перезаписи пользователями изменений друг друга