Яндекс.Метрика

    Ни о чём

    Слияние в контроле версий как критерий полезности работы

    Контроль версий исходного кода необходим как сохранение в играх. Без сохранения в играх нельзя ни прерваться, ни вернуться в прошлое. Без контроля версий невозможно вернуться в прошлое. Помимо возможности возврата к предыдущему состоянию контроль версий позволяет объединять усилия нескольких участников, вносящих изменения. Предполагалось, что дальше я напишу вводную статейку по работе с одним из средств контроля версий, но…


    Автор изображения: John Woolley Источник изображения: статья DVCS and DAGs
    Вернёмся к тематике игр. Представьте, что Вы и ваш друг Загружаетесь в игре в одно и то же сохранение. Допустим сохранение это хранится на серверах StayPlaytion© и вы «расшарили» другу своё сохранение. Игра в которую вы играете относится к классу стратегий. Вам необходимо завоёвывать террийтории, прокачивать юнитов, прокачивать постройки и т.д. Сохраняться можно только в момент, когда все юниты находятся в бараках.

    Вы с вашим другом достигаете невероятных успехов каждый у себя дома. Доходите до сохранения. Теперь посмотрим, что может получиться, если вы захотите слить ваши сохранения в одно. Да почему бы и нет? Он развивался в одном направлении, вы в другом — давайте объединим результаты?

    В вашей игровой системе находится пункт слияния сохранений, некогда имели общего предка (родительское сохранение). Выбираем оба сохранения и тут! Бац!

    Необходимо уладить несколько конфликтов:
    • Вы и ваш товарищ построили новые здания на пересекающихся участках земли. Необходимо оставить одно из зданий, а второе переместить на один из соседних участков.
    • Вы и ваш товарищ завоевали пересекающиеся наборы вражеских территорий. Завоеванные территории будут автоматически объединены.
    • Вы и ваш товарищ в сумме потратили ресурсов больше чем имелось в родительском сохранении. Необходимо ввести деньги в систему и оплатить избыточные покупки))

    Что-то не вяжется, не так ли? Абсолютно не соблюдается балланс сил. В приведенном примере повсюду дыры и похоже он не выдерживает никакой критики. Этим и отличаются игры от работы/занятий. Их даже версионировать нормально нельзя. Возможно я привел неудачный пример. А возможно я сейчас сформулировал один из критериев, отличающих развлечение от полезной работы.

    Иными словами, если к вашему занятию применим контроль версий — вы занимаетесь плодотворным делом. Если контроль версий не применим — это развлечение/увлечение.