„Здрасти, Амиго!“

"Здрасти!"

„Днес ще ви разкажа за системите за контрол на версиите.“

"Както вероятно вече знаете, програмите често са много големи и отнемат много време за писане. Понякога десетки хора могат да прекарат години в писане на програма."

„Проектите с мorони редове code са реалност.“

"Уау!"

„Всичко е много сложно. Хората често си пречат един на друг и често променят един и същ code и така нататък, и така нататък.“

„За да внесат ред в тази бъркотия, програмистите започнаха да използват системи за контрол на версиите за своя code.“

Система за контрол на версиите е програма, състояща се от клиент и сървър.

„Програмата съхранява данни (codeът, написан от програмисти) на сървър и програмистите ги добавят or променят с помощта на клиенти.“

„Основната разлика между системата за контрол на версиите и програмите, които просто правят възможно съвместната работа върху documentи, е, че тя съхранява всички предишни версии на всички documentи (codeови файлове).“

"Можете ли да ми дадете повече подробности. Как работи всичко?"

„Представете си, че сте програмист и искате да направите малки промени в изходния code на програма, съхранявана в хранorще на сървъра.“

„Ето Howво трябва да направите:“

„1) Влезте в сървъра.“

„2) Копирайте най-новата version на всички файлове на вашия компютър с помощта на командата Checkout.“

"3) Направете промени в необходимите файлове."

"4) Стартирайте програмата локално, за да сте сигурни, че се компorра и работи."

"5) Изпратете вашите "промени" на сървъра с помощта на командата Commit."

— Това като цяло има смисъл.

„Но има още нещо. Представете си, че пристигате на работа сутринта, но в Индия вече е обяд. Така че вашите индийски колеги вече са направor промени и са ангажирали промените си във вашето хранorще на сървъра.“

„Трябва да работите с най-новата version на codeа. Така че изпълнявате командата Update .“

„Какво е различно от Checkout ?“

" Checkout е проектиран да копира всички файлове на хранorщето, но Update актуализира само файловете, които са бor актуализирани на сървъра, отHowто последно сте изпълнor команда Checkout / Update ."

„Приблизително така работи:“

Плащане :

Системи за контрол на версиите - 1

„Сега да кажем, че променихме файл B и искаме да го качим на сървъра. За да направим това, трябва да използваме командата Commit .“

Системи за контрол на версиите - 2

„И ето How работи командата Update :“

Системи за контрол на версиите - 3

"Колко интересно! Има ли други команди?"

„Да, има доста. Но те варират в зависимост от това коя програма за контрол на версиите изберете. Така че, опитвам се просто да обясня общите принципи.“

„Съществува и операция, наречена сливане – обединяване на два documentа. Да предположим, че двама програмисти са модифицирали един и същ файл едновременно. Тогава програмата на сървъра няма да позволи и двете промени да бъдат ангажирани. Който извърши първи, може да добави своя or нейните промени."

„И така, Howво прави другият човек?“

„Той or тя ще бъдат поканени да извършат операция за актуализиране , за да вземат най-новите промени от сървъра. Между другото, това – извършването на актуализация преди извършване на ангажимент – е добра практика.“

"След това, по време на операцията за актуализиране, клиентската програма ще се опита да обедини локалните промени с промените, получени от сървъра."

„Ако програмистите са променor различни части на file, тогава програмата за контрол на версиите вероятно ще може да ги обедини успешно.  Ако промените са на едно и също място, тогава програмата за контрол на версиите ще докладва за конфликт на сливане и ще подкани потребителя да ръчно обединете промените."

„Например, това често се случва, когато и двамата програмисти добавят нещо в края на файл.“

— Разбирам. Като цяло изглежда разумно.

— И още нещо: клони.

„Представете си, че двама програмисти от екип са натоварени със задачата да пренапишат един и същи модул. Или още по-добре – да го пренапишат от нулата. Докато този модул не бъде завършен, програмата няма да може да работи и може дори да не се компorра.“

— И така, Howво трябва да правят?

„Те се придвижват напред, като добавят клонове към хранorщето. Грубо казано, това означава, че хранorщето се разделя на две части. Не по файлове or директории, а по версии.“

„Представете си, че електричеството никога не е било открито и роботите никога не са бor измислени. Тогава трите освободителни войни никога нямаше да се случат и цялата човешка история щеше да следва напълно различен път.

„Този ​​път е алтернативен клон на историята.“

„Или можете просто да опитате да си представите клон просто като копие на хранorщето. С други думи, в даден момент направихме клонинг на хранorщето на сървъра, така че в допълнение към основното хранorще (често наричано ствол ), имаме друг клон ."

„Е, това изглежда по-разбираемо.

„Защо не можахте просто да кажете, че сме копирали хранorщето?“

„Това не е просто копиране.“

„Тези клони могат не само да бъдат отделени от ствола, но и да се слеят в него.

„С други думи, част от работата може да се извърши в клон и след това, когато приключи, можете да добавите клона на хранorщето към ствола на хранorщето?“

— Да.

— А Howво ще стане с досиетата?

„Файловете ще бъдат обединени.“

„Е, това звучи готино. Надявам се, че е също толкова готино в действие.“

„И след това малко. Добре, нека си починем.“

„ Тук има много полезна информация  “