freebsd:diff

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
freebsd:diff [2023/01/15 13:12] Methodfreebsd:diff [2025/03/30 13:54] (поточний) – [Мій приклад] Method
Рядок 5: Рядок 5:
 Щоб створити файл виправлення: Щоб створити файл виправлення:
  
-  - Елемент нумерованого спискуПомістіть копії обох каталогів, скажімо, в /tmp, щоб ми могли створити файл виправлення, або, якщо ви сміливі, розмістіть їх поруч - в одному каталозі.+  - Помістіть копії обох каталогів, скажімо, в /tmp, щоб ми могли створити файл виправлення, або, якщо ви сміливі, розмістіть їх поруч - в одному каталозі. 
 +  - Запустіть відповідну різницю в двох каталогах, старому та новому:
  
-  - Елемент нумерованого спискуЗапустіть відповідну різницю в двох каталогах, старому та новому: +diff -ruN orig/ new/ > file.patch 
- +  -r == recursive, so do subdirectories 
-```diff -ruN orig/ new/ > file.patch +  -u == unified style, if your system lacks it or if recipient may not have it, use "-c" 
--r == recursive, so do subdirectories +  -N == treat absent files as empty```
--u == unified style, if your system lacks it or if recipient +
-#       may not have it, use "-c" +
--N == treat absent files as empty```+
  
 Якщо в користувача є каталог orig/, він може відтворити новий, запустивши patch. Якщо в користувача є каталог orig/, він може відтворити новий, запустивши patch.
Рядок 19: Рядок 17:
 Щоб повторно створити нову папку зі старої папки та файлу виправлення: Щоб повторно створити нову папку зі старої папки та файлу виправлення:
  
-  - Елемент нумерованого спискуПеремістіть файл виправлення до каталогу, де існує папка orig/+  - Перемістіть файл виправлення до каталогу, де існує папка orig/ 
 +  - Цю папку буде знищено, тому збережіть десь її резервну копію або скористайтеся копією.
  
-  - Елемент нумерованого спискуЦю папку буде знищено, тому збережіть десь її резервну копію або скористайтеся копією. +patch -s -p0 < file.patch 
- +  -s == silent except errors 
-`patch -s -p0 < file.patch +  -p0 == needed to find the proper folder
--s == silent except errors +
--p0 == needed to find the proper folder`+
 На цьому етапі папка orig/ містить новий вміст, але все ще має стару назву, тому: На цьому етапі папка orig/ містить новий вміст, але все ще має стару назву, тому:
  
Рядок 39: Рядок 36:
 Мені потрібно було створити файл виправлення та надіслати його комусь, щоб вони могли оновити свій каталог відповідно до мого. Однак у diff і patch є багато застережень , тому мені знадобилися години, щоб зрозуміти щось таке концептуально просте. Абсолютні шляхи, здається, мають перевагу над відносними шляхами, і багато варіантів, здається, розвинулися з нішевих випадків використання. Нарешті я знайшов рішення на основі відповіді Девіда Х з додатковими порадами від Лакшманана Ганапаті ): Мені потрібно було створити файл виправлення та надіслати його комусь, щоб вони могли оновити свій каталог відповідно до мого. Однак у diff і patch є багато застережень , тому мені знадобилися години, щоб зрозуміти щось таке концептуально просте. Абсолютні шляхи, здається, мають перевагу над відносними шляхами, і багато варіантів, здається, розвинулися з нішевих випадків використання. Нарешті я знайшов рішення на основі відповіді Девіда Х з додатковими порадами від Лакшманана Ганапаті ):
  
-  * Елемент ненумерованого спискуРезервне копіювання вашого directoryдоdirectory.orig +  * Резервне копіювання вашого directory до directory.orig 
-  * Елемент ненумерованого спискуЗмініть свій directory, щоб досягти бажаного стану +  * Змініть свій directory, щоб досягти бажаного стану 
-  * Елемент ненумерованого спискуЗбережіть різницю від directory.origдо directory, file.patchщоб ім’я відповідало одержувачу+  * Збережіть різницю від directory.orig до directory, file.patch щоб ім’я відповідало одержувачу
 Ось мої нотатки: Ось мої нотатки:
  
-`# to create patch: +to create patch: 
-copy <directory> backup to something like <directory>.orig alongside it +  copy <directory> backup to something like <directory>.orig alongside it 
-cp -r <path_to>/<directory> <path_to>/<directory>.orig +  cp -r <path_to>/<directory> <path_to>/<directory>.orig 
-create/update/delete files/folders in <directory> until desired state is reached +  create/update/delete files/folders in <directory> until desired state is reached 
-change working directory to <directory> +  change working directory to <directory> 
-cd <path_to>/<directory> +  cd <path_to>/<directory> 
-create patch file alongside <directory> +  create patch file alongside <directory> 
-diff -Naru ../<directory>.orig . > ../file.patch+  diff -Naru ../<directory>.orig . > ../file.patch 
 # -N --new-file Treat absent files as empty. # -N --new-file Treat absent files as empty.
 +
 # -a --text Treat all files as text. # -a --text Treat all files as text.
 +
 # -r --recursive Recursively compare any subdirectories found. # -r --recursive Recursively compare any subdirectories found.
 +
 # -u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified context. # -u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified context.
  
-to apply patch+ 
-change working directory to <directory> +to apply patch change working directory to <directory> 
-cd <path_to>/<directory> +  cd <path_to>/<directory> 
-patch -s -p0 < <path_to>/file.patch+  patch -s -p0 < <path_to>/file.patch 
 # -s or --silent or --quiet Work silently, unless an error occurs. # -s or --silent or --quiet Work silently, unless an error occurs.
 +
 # -pN or --strip=N Strip smallest prefix containing num leading slashes from files. # -pN or --strip=N Strip smallest prefix containing num leading slashes from files.
  
-to undo patch (note that directories created by patch must be removed manually): +to undo patch (note that directories created by patch must be removed manually): 
-# change working directory to <directory> + 
-cd <path_to>/<directory> +  # change working directory to <directory> 
-patch -Rs -p0 < <path_to>/file.patch +  cd <path_to>/<directory> 
-# -R or --reverse Assume that patch was created with the old and new files swapped. +  patch -Rs -p0 < <path_to>/file.patch 
-# -s or --silent or --quiet Work silently, unless an error occurs. +  # -R or --reverse Assume that patch was created with the old and new files swapped. 
-# -pN or --strip=N Strip smallest prefix containing num leading slashes from files.`+  # -s or --silent or --quiet Work silently, unless an error occurs. 
 +  # -pN or --strip=N Strip smallest prefix containing num leading slashes from files.` 
 + 
 + 
 +Для створення патча: 
 +  * скопіюйте резервну копію <каталог> у щось на кшталт <каталог>.orig поряд із ним cp -r <шлях_до>/<каталог> <шлях_до>/<каталог>.orig  
 +  * створіть/оновіть/видалить файли/папки у <каталог>, поки не буде досягнуто бажаного стану  
 +  * змініть робочий каталог на <каталог> cd <шлях_до>/<каталог>  
 +  * створіть файл виправлення разом із <каталогом> diff -Naru ../<каталог>.orig . > ../file.patch  
 +  *  -N –новий-файл Вважати відсутні файли порожніми.   
 +  *  -a –текст Розглядати всі файли як текст.  
 +  *  -r –recursive Рекурсивно порівнює всі знайдені підкаталоги.  
 +  *  -u -U NUM –unified[=NUM] Вивести NUM (за замовчуванням 3) рядків уніфікованого контексту. 
 + 
 +Щоб застосувати патч:  
 +  - змінити робочий каталог на <каталог> cd <шлях_до>/<каталог> patch -s -p0 < <шлях_до>/file.patch  
 +  -  -s або –silent або –quiet Працювати безшумно, якщо не виникає помилка .  
 +  -  -pN або –strip=N Вилучає з файлів найменший префікс, що містить кількість скісних риск. 
 + 
 +Щоб скасувати виправлення (зауважте, що каталоги, створені за допомогою виправлення, потрібно видалити вручну):  
 +  - змінити робочий каталог на <каталог> cd <шлях_до>/<каталог> виправлення -Rs -p0 < <шлях_до>/file.patch  
 +  -  -R або –reverse Припустимо, що патч було створено зі старим і новим файлами, поміняними місцями.  
 +  -  -s або –silent або –quiet Працює тихо, якщо не виникає помилка.  
 +  -  -pN або –strip=N Вилучає з файлів найменший префікс, що містить кількість скісних риск. 
 + 
 + 
 +===== Мій приклад ===== 
 + 
 +<code bash> 
 +cd /usr/local/ 
 +cp -a nodeny nodeny.orig 
 +# change nodeny
  
 +# make patch 
 +diff -Naru nodeny.orig/ nodeny/ > ./pon_r710_01.patch
  
 +# apply patch for nodeny.orig
 +cd /usr/local/nodeny.orig/
 +patch -d . -Efu --posix -p1 < ../pon_r710_01.patch
 +</code>