This repository has been archived by the owner on Feb 24, 2024. It is now read-only.
forked from swcarpentry/git-novice
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
838ae10
commit 5b20a38
Showing
23 changed files
with
618 additions
and
413 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,80 +1,128 @@ | ||
--- | ||
title: Автоматизований контроль версій | ||
title: Automated Version Control | ||
teaching: 5 | ||
exercises: 0 | ||
--- | ||
|
||
::::::::::::::::::::::::::::::::::::::: objectives | ||
|
||
- Зрозуміти переваги автоматизованої системи контролю версій. | ||
- Зрозуміти основи функціонування автоматизованих систем контролю версій. | ||
- Understand the benefits of an automated version control system. | ||
- Understand the basics of how automated version control systems work. | ||
|
||
:::::::::::::::::::::::::::::::::::::::::::::::::: | ||
|
||
:::::::::::::::::::::::::::::::::::::::: questions | ||
|
||
- Що таке контроль версій і навіщо його використовувати? | ||
- What is version control and why should I use it? | ||
|
||
:::::::::::::::::::::::::::::::::::::::::::::::::: | ||
|
||
Ми почнемо з розгляду того, як контроль версій може бути використаний для відстеження того, що і коли зробив один користувач. | ||
Навіть якщо ви не співпрацюєте з іншими людьми, автоматизований контроль версій набагато краще, ніж ця ситуація: | ||
We'll start by exploring how version control can be used | ||
to keep track of what one person did and when. | ||
Even if you aren't collaborating with other people, | ||
automated version control is much better than this situation: | ||
|
||
!["notFinal.doc" Хорхе Чама, https://www.phdcomics.com](fig/phd101212s.png){alt='Comic: аспірант надсилає «FINAL.doc» своєму науковому керівнику. Декілька дедалі інтенсивніших та неприємних раундів обміну коментарями і версіями закінчуються файлом під назвою "FINAL_rev.22.comments49.corrections.10.#@$%HYDIDCOMETOGRADSCHOOL????.doc"'} | ||
!["notFinal.doc" by Jorge Cham, <https://www.phdcomics.com>](fig/phd101212s.png){alt='Comic: a PhD student sends "FINAL.doc" to their supervisor, but after several increasingly intense and frustrating rounds of comments and revisions they end up with a file named "FINAL_rev.22.comments49.corrections.10.#@$%WHYDIDCOMETOGRADSCHOOL????.doc"'} | ||
|
||
Ми всі були в цій ситуації раніше: здається непотрібним мати кілька майже ідентичних версій одного документа. Деякі текстові процесори дозволяють нам впоратися з цим трохи краще, наприклад, Microsoft Word може [відстежувати зміни](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), Google Docs підтримує [історію версій](https://support.google.com/docs/answer/190843?hl=en), а LibreOffice - [запис та відображення змін](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes). | ||
We've all been in this situation before: it seems unnecessary to have | ||
multiple nearly-identical versions of the same document. Some word | ||
processors let us deal with this a little better, such as Microsoft | ||
Word's | ||
[Track Changes](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), | ||
Google Docs' [version history](https://support.google.com/docs/answer/190843?hl=en), or | ||
LibreOffice's [Recording and Displaying Changes](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes). | ||
|
||
Системи управління версіями починають зі зберігання базової (тобто початкової) версії документа, а потім записують зміни, які ви робите на кожному етапі редагування. Ви можете думати про це як про запис вашого прогресу: ви можете перемотати його назад, щоб почати з базової версії документу та відтворити кожну внесену вами зміну, в кінцевому підсумку прийшовши до вашої більш пізньої версії. | ||
Version control systems start with a base version of the document and | ||
then record changes you make each step of the way. You can | ||
think of it as a recording of your progress: you can rewind to start at the base | ||
document and play back each change you made, eventually arriving at your | ||
more recent version. | ||
|
||
![](fig/play-changes.svg){alt='Зміни зберігаються у послідовності'} | ||
![](fig/play-changes.svg){alt='Changes Are Saved Sequentially'} | ||
|
||
Якщо ви будете розглядати зміни, як щось окреме від самого документу, ви можете уявити собі процес «відтворення» різних наборів змін на базовому документі, який, зрештою, призведе до різних версій цього документа. Наприклад, два користувачі можуть робити незалежні набори змін в одному документі. | ||
Once you think of changes as separate from the document itself, you | ||
can then think about "playing back" different sets of changes on the base document, ultimately | ||
resulting in different versions of that document. For example, two users can make independent | ||
sets of changes on the same document. | ||
|
||
![](fig/versions.svg){alt='Різні версії можна зберегти'} | ||
![](fig/versions.svg){alt='Different Versions Can be Saved'} | ||
|
||
Якщо немає конфліктів, тобто немає ситуації, коли декілька користувачів вносять зміни до одного й того ж розділу документа, то буде можливо включити два набори змін до одного базового документа. | ||
Unless multiple users make changes to the same section of the document - a conflict - you can | ||
incorporate two sets of changes into the same base document. | ||
|
||
![](fig/merge.svg){alt='Різні версії можна обʼєднати'} | ||
![](fig/merge.svg){alt='Multiple Versions Can be Merged'} | ||
|
||
Система управління версіями - це інструмент, який відстежує ці зміни для нас, по суті створюючи різні версії наших файлів. Це дозволяє нам вирішити, які зміни будуть внесені до наступної версії (кожен запис цих змін називається [коміт]({{ page.root }}{% link reference.md %}#commit)), і зберігає корисні метадані про зміни. Повна історія комітів для конкретного проєкту та їх метадані складають [репозиторій]({{ page.root }}{% link reference.md %}#repository). | ||
Репозиторії, які знаходяться на різних комп'ютерах, можуть бути синхронізовані, що сприяє співпраці між різними людьми. | ||
A version control system is a tool that keeps track of these changes for us, | ||
effectively creating different versions of our files. It allows us to decide | ||
which changes will be made to the next version (each record of these changes is | ||
called a [commit](../learners/reference.md#commit)), and keeps useful metadata | ||
about them. The complete history of commits for a particular project and their | ||
metadata make up a [repository](../learners/reference.md#repository). | ||
Repositories can be kept in sync across different computers, facilitating | ||
collaboration among different people. | ||
|
||
::::::::::::::::::::::::::::::::::::::::: callout | ||
|
||
## Довга історія систем управління версіями | ||
## The Long History of Version Control Systems | ||
|
||
Automated version control systems are nothing new. | ||
Tools like [RCS](https://en.wikipedia.org/wiki/Revision_Control_System), [CVS](https://en.wikipedia.org/wiki/Concurrent_Versions_System), or [Subversion](https://en.wikipedia.org/wiki/Apache_Subversion) have been around since the early 1980s and are used by | ||
many large companies. | ||
However, many of these are now considered legacy systems (i.e., outdated) due to various | ||
limitations in their capabilities. | ||
More modern systems, such as Git and [Mercurial](https://swcarpentry.github.io/hg-novice/), | ||
are *distributed*, meaning that they do not need a centralized server to host the repository. | ||
These modern systems also include powerful merging tools that make it possible for | ||
multiple authors to work on | ||
the same files concurrently. | ||
|
||
Автоматизовані системи управління версіями не є чимось новим. | ||
Інструменти, такі як [RCS](https://en.wikipedia.org/wiki/Revision_Control_System), [CVS](https://en.wikipedia.org/wiki/Concurrent_Versions_System), або [Subversion](https://en.wikipedia.org/wiki/Apache_Subversion) існують з початку 1980-х років і використовуються багатьма великими компаніями. | ||
Однак багато з них зараз вважаються застарілими системами через різні обмеження у своїх можливостях. | ||
Більш сучасні системи, такі як Git та [Mercurial](https://swcarpentry.github.io/hg-novice/), є розподіленими , що означає, що їм не потрібен централізований сервер для розміщення репозиторію. | ||
Ці сучасні системи також включають потужні інструменти злиття змін (merging), які дозволяють багатьом авторам працювати над одними й тими ж файлами одночасно. | ||
|
||
:::::::::::::::::::::::::::::::::::::::::::::::::: | ||
|
||
::::::::::::::::::::::::::::::::::::::: challenge | ||
|
||
## Написання статті | ||
## Paper Writing | ||
|
||
- Уявіть, що ви склали чудовий абзац для статті, яку ви пишете, але пізніше ви зіпсували його. Як би ви відродили попередню чудову версію вашого висновку? Чи можливо це взагалі? | ||
- Imagine you drafted an excellent paragraph for a paper you are writing, but later ruin | ||
it. How would you retrieve the *excellent* version of your conclusion? Is it even possible? | ||
|
||
- Уявіть, що у вас є 5 співавторів. Як би ви відстежували зміни та коментарі, які вони вносять до вашої статті? Якщо ви використовуєте LibreOffice Writer або Microsoft Word, що станеться, якщо ви приймете зміни, внесені за допомогою опції `Відстежувати зміни` ("Track Changes")? Чи будете ви мати історію цих змін? | ||
- Imagine you have 5 co-authors. How would you manage the changes and comments | ||
they make to your paper? If you use LibreOffice Writer or Microsoft Word, what happens if | ||
you accept changes made using the `Track Changes` option? Do you have a | ||
history of those changes? | ||
|
||
::::::::::::::: solution | ||
|
||
## Відповідь | ||
|
||
- Відповідь Відновити чудову версію можливо тільки якщо ви створили копію старої версії статті. Небезпека втрати хороших версій часто призводить до проблемного робочого процесу, проілюстрованого у коміксі з PhD Comics на початку цієї сторінки. | ||
|
||
- Спільна робота над документами за допомогою традиційних текстових процесорів є громіздкою. | ||
Або кожен співробітник повинен працювати над документом послідовно (сповільнюючи процес написання), або ви повинні відправляти нову версію всім співробітникам і вручну додавати їх коментарі у документ. Режими 'відстеження змін' ('track changes') або 'запису змін' ('record changes') можуть зробити зміни більш помітними та спростити їх додавання, але як тільки ви погоджуєтесь прийняти зміни, ви втрачаєте їх історію. Після цього ви більше не будете знати хто запропонував цю зміну, чому вона була запропонована, або коли вона була додана до документа. Навіть текстові онлайн-процесори, такі як Google Docs або Microsoft Office Online, не вирішують повністю ці проблеми. | ||
## Solution | ||
|
||
- Recovering the excellent version is only possible if you created a copy | ||
of the old version of the paper. The danger of losing good versions | ||
often leads to the problematic workflow illustrated in the PhD Comics | ||
cartoon at the top of this page. | ||
|
||
- Collaborative writing with traditional word processors is cumbersome. | ||
Either every collaborator has to work on a document sequentially | ||
(slowing down the process of writing), or you have to send out a | ||
version to all collaborators and manually merge their comments into | ||
your document. The 'track changes' or 'record changes' option can | ||
highlight changes for you and simplifies merging, but as soon as you | ||
accept changes you will lose their history. You will then no longer | ||
know who suggested that change, why it was suggested, or when it was | ||
merged into the rest of the document. Even online word processors like | ||
Google Docs or Microsoft Office Online do not fully resolve these | ||
problems. | ||
|
||
|
||
|
||
::::::::::::::::::::::::: | ||
|
||
:::::::::::::::::::::::::::::::::::::::::::::::::: | ||
|
||
:::::::::::::::::::::::::::::::::::::::: keypoints | ||
|
||
- Контроль версій схожий на необмежене «undo». | ||
- Контроль версій також дозволяє багатьом людям працювати паралельно. | ||
- Version control is like an unlimited 'undo'. | ||
- Version control also allows many people to work in parallel. | ||
|
||
:::::::::::::::::::::::::::::::::::::::::::::::::: | ||
|
||
|
Oops, something went wrong.