Используйте распределенную систему контроля версий, такую как git, и используйте компьютер с общими папками для хранения репозитория ссылок. Вот почему:
Каждый клон является резервной копией
В случае сбоя жесткого диска сервера у каждого есть копия, готовая к развертыванию на новом диске или сервере. Поскольку ваша компания не серьезно относится к контролю версий, я полагаю, что с резервными копиями это может быть примерно так же.
Общая ссылка
Наличие основного репозитория с основной веткой позволяет узнать версию с последним словом. Это решает: «Вы проверили свои изменения по сравнению с версией Франка, но были ли у вас и Джона тоже? И как вы их слили?».
Доставить более комфортно
Клиент хочет альфа-версию сегодня? Ну, вы можете проверить, достаточно ли мастер стабилен, и отправить его. Если это не так, и у вас нет времени, чтобы это исправить, просто вернитесь в прошлое и получите более старую, но более стабильную версию. Вы не можете сделать это, если у вас есть только последняя версия.
Вернитесь в прошлое и исправьте свои ошибки
У вашего ручного слияния были проблемы, которые вы видели только через несколько дней, но вы уже перезаписали содержимое общих папок? Без VSC у вас нет истории, поэтому вы не можете легко вернуться к точке, где вы можете проверить свои ошибки и исправить их. Код не похож на картинку, он похож на фильм: он развивается во времени. Вы можете извлечь картинку из фильма. Вы не можете извлечь фильм из картинки.
Найдите ошибки проще
Появилась ошибка, но вы ее не заметили на момент ее появления, поэтому вы не могли ее исправить, пока код был «горячим». Теперь вы на самом деле не знаете, какое изменение внесло его, поэтому оно может происходить из нескольких разных мест в коде. Потребуются часы, чтобы просто найти, где искать. С помощью git вы могли бы просто разработать тест, чтобы сказать, происходит ли ошибка в конкретной версии, и использовать, git bissect
чтобы найти точный коммит, который привел к ошибке. Вместо того, чтобы искать тысячи строк кода, вы теперь знаете, что он находится в этих 10 изменениях строк, и вы можете сохранить тест в своем наборе тестов, чтобы убедиться, что ошибка не появится снова.
Каждый разработчик несет ответственность за свою работу
Если вы руководитель группы и у вас нет VCS, вам, скорее всего, придется выполнять грязную работу, слияния. Если вы делаете это самостоятельно, вы, вероятно, не знаете всего обо всех изменениях и можете вносить ошибки. Напротив, если вы всегда просите людей, которые написали код, собираться с вами каждый раз, когда есть код для слияния, то это время, которое они не будут использовать для создания нового кода.
С VCS, в простом рабочем процессе, разработчик должен заботиться только о своей работе и об одном внешнем источнике изменений: основной ветке. В основной ветке может быть 1 или 100 человек, это то же самое. Чтобы иметь возможность продвигать свои изменения, он / она должен будет адаптировать их к последним изменениям, сделанным другими. Может показаться, что продвижение кода занимает больше времени, но это потому, что вы также выполняете слияние, которое в любом случае заняло бы время.
Разница заключается в том, что слияние выполняется человеком, который внес изменения, который знает этот код лучше всего, потому что он написал ее.
Кто написал этот код?
Здесь есть эта ошибка, но кто написал эту строку кода? Трудно запомнить, особенно если проект длится несколько месяцев. git blame
сказал бы вам, кому и когда была написана эта строка, чтобы вы могли спросить нужного человека, и там нет слова «я не помню, как это писал».
Проект становится больше
Заказчик хочет больше возможностей, а вы слишком маленькая команда, вам понадобится другой разработчик. Как вы справляетесь с повышенной сложностью слияния без VSC?
Срочные изменения
Клиент позвонил и попросил исправить критическую ошибку для производства, но вы в настоящее время работаете над новой функцией. Просто git stash
отложите ваши изменения в сторону или зафиксируйте их в новой ветке и отправьте изменения, и вы готовы начать работу над срочным исправлением, не боясь потерять ожидающую работу.
Сработало 10 минут назад
Вы вносите некоторые изменения локально, и что-то, что работало 10 минут назад, перестало работать. Без VCS вы либо смотрите на код, либо в лучшем случае копируете эталонную версию и анализируете изменения. Ой, подождите, ссылка изменилась с тех пор, как я начал работать, поэтому я не могу больше различаться. И я не думал сохранять нетронутую копию кода, на котором я основывал свои изменения.
С VCS вы просто делаете что-то подобное git diff
прямо сейчас, и ваши изменения по сравнению с правильной версией кода, на котором вы основаны.
Я должен держать свои журналы отладки
Значит, вы плохой парень и не используете логирование? Вы должны были посыпать printf
s во всей своей кодовой базе, пока не нашли все эти кусочки этой неприятной ошибки? Теперь вы нашли один, исправили его, но хотите сохранить тщательно продуманный отладочный код для решения оставшихся проблем.
Без VCS вам либо нужно скопировать файлы, очистить отладочный код (который может добавить некоторые ошибки редактирования), нажать на него и вернуть ваши резервные копии файлов. О, но, похоже, какой-то отладочный код попал в любом случае.
С помощью git вы просто git add --patch
выбираете несколько строк кода, которые хотите добавить в свой коммит, и можете фиксировать только это. Затем вы возобновляете свою работу и сохраняете свой код отладки. Вам не нужно было трогать код, поэтому нет ошибки копирования / вставки.
Большой шарик грязи
Без VCS люди работают на их стороне и дают вам кучу изменений, иногда не связанных. Когда слишком много кода, чтобы проверить, трудно найти ошибку.
VCS позволит вам делать небольшие, инкрементные изменения, и даст вам список изменений. Список изменений очень важен: люди должны сказать, почему они делают изменения, а не что это за изменение (на какой вопрос уже дан ответ самим изменением кода). Это означает, что когда вы проверяете какой-то код новой функции, например, вам не нужно читать множество несвязанных смешанных изменений, таких как несвязанные исправления. Это помогает сосредоточиться на коде, который вам нужен.
Если я дам 100 картошек 1 на 1, а одна гнилая, вы сразу же ее найдете. Теперь, если я брошу перед тобой 100 картошек и попрошу найти гнилую, это не та же задача.
вдавливание
Надеюсь, у вас есть хорошая политика стиля кодирования, в противном случае изменения отступов сведут вас с ума, если вы объединитесь вручную. Конечно, вы можете игнорировать пробелы в изменениях (но не в языках, когда считается отступ, как в Python). Но тогда вы получите странный код, который трудно прочитать.
Вы руководитель проекта
Если вы лидер, это означает, что вы получите вину, если что-то не работает. Если вы не можете освоиться с ситуацией, потому что ваш начальник все еще не может понять, что использование правильного инструмента для правильной работы того стоит, то, по крайней мере, я бы отказался стать лидером предсказуемой неудачи.