Наиболее распространенный способ создать патч состоит в том, чтобы работать diff
команда или некоторое встроенное управление версиями diff
- как команда. Иногда, Вы просто сравниваете два файла, и Вы работаете diff
как это:
diff -u version_by_alice.txt version_by_bob.txt >alice_to_bob.patch
Затем Вы получаете патч, который содержит изменения для одного файла и не содержит имя файла вообще. При применении того патча необходимо указать, к какому файлу Вы хотите применить его:
patch <alice_to_bob.patch version2_by_alice.txt
Часто, Вы сравниваете две версии целого многофайлового проекта, содержавшегося в каталоге. Типичный вызов diff
похож на это:
diff -ru old_version new_version >some.patch
Затем патч содержит имена файлов, данные в строках заголовка как diff -ru old_version/dir/file new_version/dir/file
. Необходимо сказать patch
разделять префикс (old_version
или new_version
) от имени файла. Это что -p1
средства: лишите один уровень каталога.
Иногда, строки заголовка в патче содержат имя файла непосредственно без подхода. Это распространено с системами управления версиями; например, cvs diff
продолжает линии заголовка, которые похожи diff -r1.42 foo
. Затем нет никакого префикса для разделения, таким образом, необходимо указать -p0
.
В особом случае, когда нет никаких подкаталогов в деревьях, которые Вы сравниваете, нет -p
опция необходима: patch
отбросит всю часть каталога имен файлов. Но большую часть времени, Вам действительно нужно также -p0
или -p1
В зависимости от того, как был произведен патч.
Можно попытаться использовать недокументированное adjust
функция asr
команда. Это может изменить маркировку типа файловой системы, на самом деле не изменяя данные.
В Вашем случае соответствующая команда была бы:
sudo asr adjust --target /dev/disk0s2 --settype "Apple_HFS"
Это, конечно, предполагает, что Ваши базовые данные не были повреждены, но насколько я знаю, это - Ваш лучший выстрел.
После того как Вы добираетесь до рабочего состояния снова, я предложил бы создать резервную копию Ваших данных и сделать переустанавливание с нуля, поскольку они кажутся, что Ваша таблица разделов может иметь некоторые проблемы.
Just a little thing I'd like to add. The command above worked perfectly for me, but it couldn't see my name of the partition and wouldn't mount with Disk Utility, so I had to mount the drive in Terminal first: (my disk is disk0s3)
diskutil mount /dev/disk0s3
(in case someone else runs into the same thing I did, just always remember to check which partition is yours)
and TADA, my partition popped up with correct name and all.
I am still on Snow Leopard, btw, and everyting is in order now. You've made my day! You helped me so, so much! Thank you!
disk0s4
как цель, это должно, конечно, бытьdisk0s2
. – robmathers 18.12.2012, 16:09