freebsd:diff

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
freebsd:diff [15/01/2023 13:12] Methodfreebsd:diff [10/06/2023 21:45] (поточний) – [Мій приклад] 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 +patch -s -p0 < file.patch 
--s == silent except errors +  -s == silent except errors 
--p0 == needed to find the proper folder`+  -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 щоб ім’я відповідало одержувачу
 Ось мої нотатки: Ось мої нотатки:
  
Рядок 73: Рядок 70:
  
  
 +Для створення патча:
 +  * скопіюйте резервну копію <каталог> у щось на кшталт <каталог>.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_r677_4.patch
 +
 +# apply patch for nodeny.orig
 +patch -d nodeny.orig/ -Efu --posix -p1 < ./pon_r677_4.patch
 +</code>
  
  • freebsd/diff.1673788325.txt.gz
  • Востаннє змінено: 15/01/2023 13:12
  • повз Method