Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions C-git-commands.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,6 +34,44 @@ Git має типовий спосіб, як робити сотні речей.

Нарешті, фактично весь <<ch08-customizing-git#_git_config>> присвячено цій команді.

[[ch_core_editor]]
==== Команди git config core.editor

На додаток до інструкції з налаштування у <<ch01-getting-started#_editor>>, багато редакторів можуть бути встановлені наступним чином:

.Вичерпний перелік команд налаштування `core.editor`
[cols="1,2",options="header"]
|==============================
|Редактор | Команда налаштування
|Atom |`git config --global core.editor "atom --wait"`
|BBEdit (macOS з інструментами командного рядка) |`git config --global core.editor "bbedit -w"`
|Emacs |`git config --global core.editor emacs`
|Gedit (Linux) |`git config --global core.editor "gedit --wait --new-window"`
|Gvim (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'"` (дивіться примітку нижче)
|Helix |`git config --global core.editor "hx"`
|Kate (Linux) |`git config --global core.editor "kate --block"`
|nano |`git config --global core.editor "nano -w"`
|Notepad (64-бітовій Windows) |`git config core.editor notepad`
|Notepad++ (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Notepad+\+\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"` (дивіться примітку нижче)
|Scratch (Linux)|`git config --global core.editor "scratch-text-editor"`
|Sublime Text (macOS) |`git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"`
|Sublime Text (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w"` (дивіться примітку нижче)
|TextEdit (macOS)|`git config --global core.editor "open --wait-apps --new -e"`
|Textmate |`git config --global core.editor "mate -w"`
|Textpad (64-бітовій Windows) |`git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m"` (дивіться примітку нижче)
|UltraEdit (64-бітовій Windows) | `git config --global core.editor Uedit32`
|Vim |`git config --global core.editor "vim --nofork"`
|Visual Studio Code |`git config --global core.editor "code --wait"`
|VSCodium (Free/Libre Open Source Software Binaries of VSCode) | `git config --global core.editor "codium --wait"`
|WordPad |`git config --global core.editor "'C:\Program Files\Windows NT\Accessories\wordpad.exe'"`
|Xi | `git config --global core.editor "xi --wait"`
|==============================

[NOTE]
====
Якщо ви маєте 32-бітовий редактор у 64-бітовій системі Windows, його буде інстальовано радше до `C:\Program Files (x86)\` аніж `C:\Program Files\`, попри те, що вказано у таблиці вище.
====

==== git help

Команда `git help` призначена для відображення документації, що постачається разом з Git для кожної команди.
Expand Down
4 changes: 2 additions & 2 deletions TRANSLATION_NOTES.asc
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,7 +37,7 @@
*checkout, to (file) http://github.com/progit/progit2-uk/issues/136[#136]*:: отримати (файл)
*cherry-pick, to cherry-pick http://github.com/progit/progit2-uk/issues/134[#134]*:: висмикування, висмикнути
*command line*:: командний рядок
*commit, to commit, comitted, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*commit, to commit, committed, commiter http://github.com/progit/progit2-uk/issues/135[#135]*:: коміт, створювати коміт, збережене в коміті, творець коміту
*community*:: спільнота
*continuous integration*:: безперервна інтеграція (http://uk.wikipedia.org/wiki/Безперервна_інтеграція[вікі])
*dashboard*:: дошка керування
Expand All@@ -57,7 +57,7 @@
*fetch http://github.com/progit/progit2-uk/issues/140[#140]*:: здобути зміни
*filter-branch http://github.com/progit/progit2-uk/issues/141[#141]*:: фільтрація гілки
*folder http://github.com/progit/progit2-uk/issues/138[#138]*:: тека
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*::: примусове (надсилання змін)
*force (push) http://github.com/progit/progit2-uk/issues/142[#142]*:: примусове (надсилання змін)
*fork, to fork, forking http://github.com/progit/progit2-uk/issues/143[#143]*:: відсадок, відсаджувати, відсадження
*Git*:: Git (не транслітерується)
*GUI*:: графічний інтерфейс
Expand Down
38 changes: 19 additions & 19 deletions book/01-introduction/sections/about-version-control.asc
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
=== Про систему контролю версій

(((version control)))
Що таке ``система контролю версій'', і чому це важливо?
Що таке "`система контролю версій`", і чому це важливо?
Система контролю версій - це система, що записує зміни у файл або набір файлів протягом деякого часу, так що ви зможете повернутися до певної версії пізніше.
Як приклад, в цій книзі, для файлів, що знаходяться під контролем версій, буде використовуватися код програмного забезпечення, хоча насправді ви можете використовувати контроль версій практично для будь-яких типів файлів.
Для прикладів в цій книзі, як файли, що знаходяться під контролем версій, буде використано код програмного забезпечення, хоча, насправді, ви можете використовувати контроль версій практично для будь-яких типів файлів.

Якщо ви графічний або веб-дизайнер і хочете зберегти кожну версію зображення або макета (швидше за все, захочете), система контролю версій (далі СКВ) якраз те, що потрібно.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проект до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.
Вона дозволяє повернути вибрані файли до попереднього стану, повернути весь проєкт до попереднього стану, побачити зміни, побачити, хто останній міняв щось і спровокував проблему, хто вказав на проблему і коли, та багато іншого.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "хто останній міняв щось" -> "хто останній вносив зміни"?

Використання СКВ також в цілому означає, що, якщо ви зламали щось або втратили файли, ви просто можете все виправити.
Крім того, ви отримаєте все це за дуже невеликі накладні витрати.

==== Локальні системи контролю версій

(((version control,local)))
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні).
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему теку (можливо, навіть теку з відміткою за часом, якщо вони достатньо розумні).
Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок.
Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Можна легко забути в якій теці ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Може "знаходитесь"?


Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.

.Локальні системи контролю версій.
.Діаграма локальних систем контролю версій.
image::images/local.png[Local version control diagram]

Одним з найбільш поширених інструментів СКВ була система під назвою RCS, яка досі поширюється з багатьма комп'ютерами сьогодні.
RCS зберігає набори латок (тобто, відмінності між файлами) в спеціальному форматі на диску; він може заново відтворити будь-який файл, як він виглядав, в будь-який момент часу, шляхом додавання всіх латок.
https://www.gnu.org/software/rcs/[RCS^] зберігає набори латок (тобто, різницю між файлами) в спеціальному форматі на диску; вона може заново відтворити стан будь-якого файлу у будь-який момент часу, шляхом додавання всіх латок.

==== Централізовані системи контролю версій

(((version control,centralized)))
Наступним важливим питанням, з яким стикаються люди, є необхідність співпрацювати з іншими розробниками.
Щоб справитися з цією проблемою, були розроблені централізовані системи контролю версій (ЦСКВ).
Такі системи як CVS, Subversion і Perforce, мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.
Ці системи (такі як CVS, Subversion і Perforce) мають єдиний сервер, який містить всі версії файлів, та деяке число клієнтів, які отримують файли з центрального місця.(((CVS)))(((Subversion)))(((Perforce)))
Протягом багатьох років, це було стандартом для систем контролю версій.

.Централізовані системи контролю версій.
.Діаграма централізованих систем контролю версій.
image::images/centralized.png[Centralized version control diagram]

Такий підхід має безліч переваг, особливо над локальними СКВ.
Наприклад, кожному учаснику проекту відомо, певною мірою, чим займаються інші.
Наприклад, кожному учаснику проєкту відомо, певною мірою, чим займаються інші.
Адміністратори мають повний контроль над тим, хто і що може робити. Набагато легше адмініструвати ЦСКВ, ніж мати справу з локальними базами даних для кожного клієнта.

Але цей підхід також має деякі серйозні недоліки.
Найбільш очевидним є єдина точка відмови, яким є централізований сервер.
Якщо сервер виходить з ладу протягом години, то протягом цієї години ніхто не може співпрацювати або зберігати зміни над якими вони працюють під версійним контролем.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проекту, крім одиночних знімків проекту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проекту зберігається в одному місці, ви ризикуєте втратити все.
Якщо жорсткий диск центральної бази даних на сервері пошкоджено, і своєчасні резервні копії не були зроблені, ви втрачаєте абсолютно все -- всю історію проєкту, крім поодиноких відбитків проєкту, що збереглися на локальних машинах людей.
Локальні СКВ страждають тією ж проблемою -- щоразу, коли вся історія проєкту зберігається в одному місці, ви ризикуєте втратити все.

==== Децентралізовані системи контролю версій
==== Розподілені системи контролю версій

(((version control,distributed)))
Долучаються до гри децентралізовані системи контролю версій (ДСКВ).
В ДСКВ (таких як, Git, Mercurial, Bazaar або Darcs), клієнти не просто отримують останній знімок файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-який з клієнтських репозиторіїв може бути скопійований назад до серверу, щоб відновити його.
Кожна копія дійсно є повною резервною копією всіх даних.
Ось тут до гри долучаються розподілені системи контролю версій (РСКВ).
В РСКВ (таких як, Git, Mercurialабо Darcs), клієнти не просто отримують останній відбиток файлів репозиторія: натомість вони є повною копією сховища разом з усією його історією.
Таким чином, якщо вмирає який-небудь сервер, через який співпрацюють розробники, будь-яке з клієнтських сховищ може бути скопійований назад до серверу, щоб відновити його.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А як щодо "Таким чином, якщо з ладу виходить центральний сервер, через...".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"будь-яке з клієнтських сховищ може бути скопійоваНЕ"

Кожна копія являє собою повну резервну копію всіх даних.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мені подобається "являє собою", але переживаю що це може бути калька з ру.
Можливо краще "Кожна копія є повною резервною копією усіх даних."?


.Децентралізовані системи контролю версій.
.Діаграма децентралізованих систем контролю версій.
image::images/distributed.png[Distributed version control diagram]

Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими репозиторіями, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проекту одночасно.
Більш того, багато з цих систем дуже добре взаємодіють з декількома віддаленими сховищами, так що ви можете співпрацювати з різними групами людей, застосовуючи різні підходи в межах одного проєкту одночасно.
Це дозволяє налаштувати декілька типів робочих процесів, таких як ієрархічні моделі, які неможливі в централізованих системах.
Loading