freebsd:diff

Розбіжності

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

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

Наступна ревізія
Попередня ревізія
freebsd:diff [15/01/2023 13:08] – створено Methodfreebsd:diff [10/06/2023 21:45] (поточний) – [Мій приклад] Method
Рядок 5: Рядок 5:
 Щоб створити файл виправлення: Щоб створити файл виправлення:
  
-Помістіть копії обох каталогів, скажімо, в /tmp, щоб ми могли створити файл виправлення, або, якщо ви сміливі, розмістіть їх поруч - в одному каталозі. +  - Помістіть копії обох каталогів, скажімо, в /tmp, щоб ми могли створити файл виправлення, або, якщо ви сміливі, розмістіть їх поруч - в одному каталозі. 
- +  Запустіть відповідну різницю в двох каталогах, старому та новому:
-Запустіть відповідну різницю в двох каталогах, старому та новому:+
  
 diff -ruN orig/ new/ > file.patch diff -ruN orig/ new/ > file.patch
--r == recursive, so do subdirectories +  - -r == recursive, so do subdirectories 
--u == unified style, if your system lacks it or if recipient +  -u == unified style, if your system lacks it or if recipient may not have it, use "-c" 
-#       may not have it, use "-c" +  -N == treat absent files as empty```
--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/ містить новий вміст, але все ще має стару назву, тому:
  
 mv orig/ new/    # if the folder names are different mv orig/ new/    # if the folder names are different
  
-patch виправляв для мене каталог new/not orig/, але я знайшов -d опцію, яка дозволяє вам спочатку сказати cd в цьому каталозі перед застосуванням виправлення, а потім ви можете відповідно налаштувати -p N аргумент. +//patch виправляв для мене каталог new/not orig/, але я знайшов -d опцію, яка дозволяє вам спочатку сказати cd в цьому каталозі перед застосуванням виправлення, а потім ви можете відповідно налаштувати -p N аргумент.// 
  
  
Рядок 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
Рядок 70: Рядок 67:
 # -R or --reverse Assume that patch was created with the old and new files swapped. # -R or --reverse Assume that patch was created with the old and new files swapped.
 # -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.
 + 
 + 
 +Для створення патча: 
 +  * скопіюйте резервну копію <каталог> у щось на кшталт <каталог>.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.1673788118.txt.gz
  • Востаннє змінено: 15/01/2023 13:08
  • повз Method