Особенности, преимущества и недостатки
Преимущества и недостатки git по сравнению с централизованными системами управления версиями (такими как, например, Subversion) типичны для любой распределённой системы и описаны в статье «Система управления версиями». Если же сравнивать git с «родственными» ей распределёнными системами, можно отметить, что git изначально идеологически ориентирован на работу с изменениями, а не с файлами, «единицей обработки» для него является набор изменений, или патч. Эта особенность прослеживается как в структуре самой системы (в частности — в структуре репозитория), так и в принципах построения команд; она отражается на производительности системы в различных вариантах её использования и на достоинствах и недостатках git по сравнению с другими DVCS.
Часто называемые преимущества git перед другими DVCS:
Высокая производительность.
Развитые средства интеграции с другими VCS, в частности, с CVS, SVN и Mercurial. Помимо разнонаправленных конвертеров репозиториев, имеющиеся в комплекте программные средства позволяют разработчикам использовать git при размещении центрального репозитория в SVN или CVS, кроме того, git может имитировать cvs-сервер, обеспечивая работу через клиентские приложения и поддержку в средах разработки, специально не поддерживающих git.
Продуманная система команд, позволяющая удобно встраивать git в скрипты.
Качественный веб-интерфейс «из коробки».
Репозитории git могут распространяться и обновляться общесистемными файловыми утилитами архивации и обновления, такими как rsync, благодаря тому, что фиксации изменений и синхронизации не меняют существующие файлы с данными, а только добавляют новые (за исключением некоторых служебных файлов, которые могут быть автоматически обновлены с помощью имеющихся в составе системы утилит). Для раздачи репозитория по сети достаточно любого веб-сервера.
В числе недостатков git обычно называют:
Некоторое неудобство для пользователей, переходящих с других VCS. Команды git, ориентированные на наборы изменений, а не на файлы, могут вызвать недоумение у пользователей, привыкших к файл-ориентированным VCS, таким как SVN. Например, команда «add», которая в большинстве систем управления версиями производит добавление файла к проекту, в git делает совершенно другое: она находит и подготавливает к фиксации (commit’у) сделанные в проекте или его части изменения (то есть её название «добавить» относится не к файлам, а к сделанным изменениям, которые добавляются в индекс для последующей фиксации).
Использование для идентификации ревизий хэшей SHA1, что приводит к необходимости оперировать длинными строками вместо коротких номеров версий, как во многих других системах.
Бо́льшие накладные расходы при работе с проектами, в которых делаются многочисленные несвязанные между собой изменения файлов. При работе в таком режиме размеры наборов изменений становятся достаточно велики и происходит быстрый рост репозиториев.
Бо́льшие затраты времени, по сравнению с файл-ориентированными системами, на формирование истории конкретного файла, истории правок конкретного пользователя, поиска изменений, относящихся к заданному месту определённого файла.
Отсутствие отдельной команды переименования/переноса файла, из-за чего подобная операция отражается в истории как удаление файла и создание его в другом месте, что требует специального анализа для определения, что в действительности файл был просто перенесён.
Система не умеет отслеживать пустые каталоги.
Некоторые команды работают неожиданно, в частности, могут приводить к неочевидным ошибкам или требовать для правильной работы указания специальных параметров, когда применяются к исходно пустому репозиторию или к репозиторию, в котором ещё не было сделано ни одного коммита.
В ряде публикаций, относящихся преимущественно к 2005—2008 годам можно встретить также нарекания в отношении документации git, отсутствия удобной windows-версии и удобных графических клиентов. В настоящее время эта критика неактуальна: существует версия git на основе MinGW («родная» сборка под Windows), и несколько высококачественных графических клиентов для различных операционных систем, в частности, под Windows имеется клиент TortoiseGit, идеологически очень близкий к широко распространённому TortoiseSVN — клиенту SVN, встраиваемому в оболочку Windows.
- Средства удаленного управления
- Классификация
- Средства удаленного администрирования
- Семейство unix
- Семейство Windows
- Средства удаленного управления рабочим столом
- Практика
- Виртуальные машины
- История и развитие
- Типы виртуализации
- Практика
- Резервное копирование и синхронизация
- Резервное копирование информации
- Синхронизация данных
- Типовые задачи синхронизации
- Реализации к рассмотрению
- Кластеризация
- Основные положения
- Отказоустойчивый кластер
- Вычислительный кластер
- Реализации к рассмотрению
- Облачные вычисления
- Основные положения
- Облачное хранилище данных
- Образы и развертывание системы
- Образы системы – технологии резервирования данных
- Технологии развертывания операционных систем
- Реализации к рассмотрению
- Средства антивирусной и сетевой защиты
- Технологии обнаружения вредоносного кода
- Технический компонент
- Аналитический компонент
- Плюсы и минусы способов обнаружения вредоносного кода
- Брандмауэры
- Общее описание брандмауэров
- Функции брандмауэров
- Недостатки брандмауэров
- Общие принципы настройки Firewall
- Обслуживание систем
- Дефрагментация диска
- Восстановление информации на жестком диске
- Восстановление данных с работоспособного жесткого диска
- Восстановление данных с неработоспособного жесткого диска
- Аппаратное обеспечение для восстановления данных
- Системы контроля версий
- Общие положения
- Типичный порядок работы с системой
- История и статус
- Недостатки
- Возможности
- Основные концепции
- Недостатки
- Использование Subversion
- Возможности
- Особенности, преимущества и недостатки