Використовуйте розподілену систему управління версіями, як 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 дозволить вам робити невеликі, поступові зміни та надавати вам журнал змін. Журнал змін є важливим: люди повинні сказати там, чому вони роблять зміни, а не в чому полягає зміна (на яке питання Альреді відповідає сам зміни коду). Це означає, що, наприклад, ви перевіряєте якийсь код нової функції, вам не доведеться читати безліч непов'язаних змішаних змін, як-от непов'язані помилки. Це допомагає зосередити увагу на коді, який вам важливий.
Якщо я дам тобі 100 картоплин 1 на 1, а одна гнила, ти її негайно знайдеш. Тепер, якщо я скину перед вами 100 картоплин і попрошу знайти гнилу, це не те саме завдання.
Відступ
Сподіваємось, що у вас є хороша політика стилю кодування, інакше зміни відступу зберуть вас з розуму, якщо ви з’єднаєтесь вручну. Звичайно, ви можете ігнорувати пробіли в змінах (але не мовами, коли вважається відступ, як-от Python). Але тоді ви отримаєте дивний код, який важко читати.
Ви керівник проекту
Якщо ви лідер, це означає, що ви будете винні, якщо все не працює. Якщо ви не можете впоратись із ситуацією, оскільки ваш начальник все ще не може зрозуміти, що використовувати правильний інструмент для правильної роботи варто, то, принаймні, я б відмовився стати лідером передбачуваної невдачі.